From 99ef2719fb3d703fe38c4113cd7f5adec516dd3a Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Fri, 28 Oct 2016 20:29:21 +0200 Subject: test: remove test suite The test suite is now a developed in a separate git repository. See here: http://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng-test.git The test suite should be just like every other software compiled with the cross-toolchain. In the past strange problems where found when the test suite got build in the toolchain creation step. --- Makefile.help | 2 - Makefile.in | 13 - Makerules | 2 +- docs/PORTING | 2 +- test/.gitignore | 334 - test/Makefile | 91 - test/README | 87 - test/Rules.mak | 165 - test/Test.mak | 155 - test/argp/Makefile | 8 - test/argp/Makefile.in | 10 - test/argp/argp-ex1.c | 15 - test/argp/argp-ex2.c | 45 - test/argp/argp-ex3.c | 153 - test/argp/argp-ex4.c | 167 - test/argp/argp-test.c | 208 - test/argp/bug-argp1.c | 26 - test/argp/tst-argp1.c | 117 - test/argp/tst-argp2.c | 100 - test/args/Makefile | 8 - test/args/Makefile.in | 9 - test/args/arg_test.c | 40 - test/args/arg_test.out.good | 13 - test/args/arg_test_glibc.out.good | 13 - test/assert/Makefile | 8 - test/assert/Makefile.in | 5 - test/assert/assert.c | 47 - test/build/Makefile | 8 - test/build/check_config_options.sh | 21 - test/crypt/Makefile | 8 - test/crypt/Makefile.in | 15 - test/crypt/crypt.c | 103 - test/crypt/crypt.input | 171 - test/crypt/crypt.out.good | 172 - test/crypt/md5c-test.c | 19 - test/crypt/sha256c-test.c | 62 - test/crypt/sha512c-test.c | 63 - test/ctype/Makefile | 8 - test/ctype/Makefile.in | 4 - test/ctype/ctype.c | 250 - test/dlopen/Makefile | 8 - test/dlopen/Makefile.in | 84 - test/dlopen/dladdr.c | 25 - test/dlopen/dlafk.c | 36 - test/dlopen/dlstatic.c | 43 - test/dlopen/dltest.c | 41 - test/dlopen/dltest2.c | 1 - test/dlopen/dlundef.c | 29 - test/dlopen/libA.c | 7 - test/dlopen/libB.c | 7 - test/dlopen/libC.c | 30 - test/dlopen/libafk-temp.c | 1 - test/dlopen/libafk.c | 1 - test/dlopen/libstatic.c | 15 - test/dlopen/libtest.c | 11 - test/dlopen/libtest1.c | 40 - test/dlopen/libtest2.c | 38 - test/dlopen/libtest3.c | 1 - test/dlopen/libundef.c | 1 - test/dlopen/nodelete.c | 205 - test/dlopen/nodelete1.c | 59 - test/dlopen/nodelmod1.c | 10 - test/dlopen/nodelmod2.c | 10 - test/dlopen/nodelmod3.c | 8 - test/dlopen/nodelmod4.c | 10 - test/dlopen/test1.c | 33 - test/dlopen/test2.c | 39 - test/dlopen/test3.c | 13 - test/dlopen/testscope.c | 29 - test/dlopen/tst-origin.c | 37 - test/inet/Makefile | 8 - test/inet/Makefile.in | 17 - test/inet/bug-if1.c | 53 - test/inet/gethost.c | 40 - test/inet/gethost_r-align.c | 50 - test/inet/gethostid.c | 6 - test/inet/getnetent.c | 17 - test/inet/if_nameindex.c | 61 - test/inet/tst-aton.c | 80 - test/inet/tst-ether_aton.c | 46 - test/inet/tst-ethers-line.c | 55 - test/inet/tst-ethers.c | 37 - test/inet/tst-ifaddrs.c | 99 - test/inet/tst-network.c | 104 - test/inet/tst-ntoa.c | 36 - test/inet/tst-res.c | 44 - test/inet/tst-sock-nonblock.c | 53 - test/librt/Makefile | 8 - test/librt/Makefile.in | 8 - test/librt/shmtest.c | 104 - test/locale-mbwc/Makefile | 8 - test/locale-mbwc/Makefile.in | 30 - test/locale-mbwc/dat_isw-funcs.h | 37 - test/locale-mbwc/dat_iswalnum.c | 196 - test/locale-mbwc/dat_iswalpha.c | 169 - test/locale-mbwc/dat_iswcntrl.c | 125 - test/locale-mbwc/dat_iswctype.c | 667 -- test/locale-mbwc/dat_iswdigit.c | 125 - test/locale-mbwc/dat_iswgraph.c | 167 - test/locale-mbwc/dat_iswlower.c | 96 - test/locale-mbwc/dat_iswprint.c | 170 - test/locale-mbwc/dat_iswpunct.c | 155 - test/locale-mbwc/dat_iswspace.c | 129 - test/locale-mbwc/dat_iswupper.c | 94 - test/locale-mbwc/dat_iswxdigit.c | 125 - test/locale-mbwc/dat_mblen.c | 137 - test/locale-mbwc/dat_mbrlen.c | 222 - test/locale-mbwc/dat_mbrtowc.c | 140 - test/locale-mbwc/dat_mbsrtowcs.c | 180 - test/locale-mbwc/dat_mbstowcs.c | 190 - test/locale-mbwc/dat_mbtowc.c | 444 -- test/locale-mbwc/dat_strcoll.c | 209 - test/locale-mbwc/dat_strfmon.c | 268 - test/locale-mbwc/dat_strxfrm.c | 147 - test/locale-mbwc/dat_swscanf.c | 185 - test/locale-mbwc/dat_tow-funcs.h | 24 - test/locale-mbwc/dat_towctrans.c | 97 - test/locale-mbwc/dat_towlower.c | 47 - test/locale-mbwc/dat_towupper.c | 47 - test/locale-mbwc/dat_wcrtomb.c | 122 - test/locale-mbwc/dat_wcscat.c | 116 - test/locale-mbwc/dat_wcschr.c | 94 - test/locale-mbwc/dat_wcscmp.c | 137 - test/locale-mbwc/dat_wcscoll.c | 210 - test/locale-mbwc/dat_wcscpy.c | 44 - test/locale-mbwc/dat_wcscspn.c | 164 - test/locale-mbwc/dat_wcslen.c | 62 - test/locale-mbwc/dat_wcsncat.c | 158 - test/locale-mbwc/dat_wcsncmp.c | 144 - test/locale-mbwc/dat_wcsncpy.c | 119 - test/locale-mbwc/dat_wcspbrk.c | 176 - test/locale-mbwc/dat_wcsrtombs.c | 272 - test/locale-mbwc/dat_wcsspn.c | 179 - test/locale-mbwc/dat_wcsstr.c | 175 - test/locale-mbwc/dat_wcstod.c | 78 - test/locale-mbwc/dat_wcstok.c | 138 - test/locale-mbwc/dat_wcstombs.c | 271 - test/locale-mbwc/dat_wcswidth.c | 263 - test/locale-mbwc/dat_wcsxfrm.c | 102 - test/locale-mbwc/dat_wctob.c | 61 - test/locale-mbwc/dat_wctomb.c | 168 - test/locale-mbwc/dat_wctrans.c | 99 - test/locale-mbwc/dat_wctype.c | 189 - test/locale-mbwc/dat_wcwidth.c | 149 - test/locale-mbwc/tgn_funcdef.h | 160 - test/locale-mbwc/tgn_locdef.h | 32 - test/locale-mbwc/tsp_common.c | 64 - test/locale-mbwc/tst2_mbrtowc.c | 21 - test/locale-mbwc/tst_funcs.h | 294 - test/locale-mbwc/tst_iswalnum.c | 10 - test/locale-mbwc/tst_iswalpha.c | 10 - test/locale-mbwc/tst_iswcntrl.c | 10 - test/locale-mbwc/tst_iswctype.c | 53 - test/locale-mbwc/tst_iswdigit.c | 11 - test/locale-mbwc/tst_iswgraph.c | 10 - test/locale-mbwc/tst_iswlower.c | 10 - test/locale-mbwc/tst_iswprint.c | 10 - test/locale-mbwc/tst_iswpunct.c | 10 - test/locale-mbwc/tst_iswspace.c | 10 - test/locale-mbwc/tst_iswupper.c | 10 - test/locale-mbwc/tst_iswxdigit.c | 10 - test/locale-mbwc/tst_mblen.c | 85 - test/locale-mbwc/tst_mbrlen.c | 82 - test/locale-mbwc/tst_mbrtowc.c | 96 - test/locale-mbwc/tst_mbsrtowcs.c | 109 - test/locale-mbwc/tst_mbstowcs.c | 98 - test/locale-mbwc/tst_mbtowc.c | 130 - test/locale-mbwc/tst_strcoll.c | 87 - test/locale-mbwc/tst_strfmon.c | 74 - test/locale-mbwc/tst_strxfrm.c | 136 - test/locale-mbwc/tst_swscanf.c | 137 - test/locale-mbwc/tst_towctrans.c | 82 - test/locale-mbwc/tst_towlower.c | 11 - test/locale-mbwc/tst_towupper.c | 10 - test/locale-mbwc/tst_types.h | 729 --- test/locale-mbwc/tst_wcrtomb.c | 79 - test/locale-mbwc/tst_wcscat.c | 78 - test/locale-mbwc/tst_wcschr.c | 70 - test/locale-mbwc/tst_wcscmp.c | 40 - test/locale-mbwc/tst_wcscoll.c | 76 - test/locale-mbwc/tst_wcscpy.c | 85 - test/locale-mbwc/tst_wcscspn.c | 38 - test/locale-mbwc/tst_wcslen.c | 31 - test/locale-mbwc/tst_wcsncat.c | 75 - test/locale-mbwc/tst_wcsncmp.c | 40 - test/locale-mbwc/tst_wcsncpy.c | 93 - test/locale-mbwc/tst_wcspbrk.c | 80 - test/locale-mbwc/tst_wcsrtombs.c | 127 - test/locale-mbwc/tst_wcsspn.c | 38 - test/locale-mbwc/tst_wcsstr.c | 86 - test/locale-mbwc/tst_wcstod.c | 69 - test/locale-mbwc/tst_wcstok.c | 96 - test/locale-mbwc/tst_wcstombs.c | 115 - test/locale-mbwc/tst_wcswidth.c | 39 - test/locale-mbwc/tst_wcsxfrm.c | 122 - test/locale-mbwc/tst_wctob.c | 37 - test/locale-mbwc/tst_wctomb.c | 99 - test/locale-mbwc/tst_wctrans.c | 52 - test/locale-mbwc/tst_wctype.c | 48 - test/locale-mbwc/tst_wcwidth.c | 38 - test/locale/Makefile | 8 - test/locale/Makefile.in | 29 - test/locale/bug-iconv-trans.c | 68 - test/locale/bug-usesetlocale.c | 38 - test/locale/collate-test.c | 132 - test/locale/dump-ctype.c | 163 - test/locale/gen-unicode-ctype.c | 784 --- test/locale/show-ucs-data.c | 62 - test/locale/tst-C-locale.c | 497 -- test/locale/tst-ctype-de_DE.ISO-8859-1.in | 56 - test/locale/tst-ctype.c | 446 -- test/locale/tst-digits.c | 248 - test/locale/tst-fmon.c | 67 - test/locale/tst-langinfo.c | 283 - test/locale/tst-langinfo.input | 302 - test/locale/tst-leaks.c | 18 - test/locale/tst-mbswcs1.c | 62 - test/locale/tst-mbswcs2.c | 64 - test/locale/tst-mbswcs3.c | 75 - test/locale/tst-mbswcs4.c | 62 - test/locale/tst-mbswcs5.c | 74 - test/locale/tst-mbswcs6.c | 73 - test/locale/tst-numeric.c | 73 - test/locale/tst-rpmatch.c | 36 - test/locale/tst-setlocale.c | 25 - test/locale/tst-sscanf.c | 56 - test/locale/tst-strfmon1.c | 42 - test/locale/tst-trans.c | 70 - test/locale/tst-wctype.c | 143 - test/locale/tst-xlocale1.c | 75 - test/locale/tst-xlocale2.c | 64 - test/locale/tst_nl_langinfo.c | 296 - test/locale/xfrm-test.c | 143 - test/malloc/Makefile | 8 - test/malloc/Makefile.in | 16 - test/malloc/malloc-standard-alignment.c | 42 - test/malloc/malloc.c | 81 - test/malloc/mallocbug.c | 67 - test/malloc/realloc-can-shrink.c | 17 - test/malloc/realloc0.c | 13 - test/malloc/testmalloc.c | 101 - test/malloc/time_malloc.c | 62 - test/malloc/tst-asprintf.c | 27 - test/malloc/tst-calloc.c | 127 - test/malloc/tst-malloc.c | 72 - test/malloc/tst-mallocfork.c | 51 - test/malloc/tst-mcheck.c | 95 - test/malloc/tst-obstack.c | 104 - test/malloc/tst-valloc.c | 23 - test/math/Makefile | 8 - test/math/Makefile.in | 46 - test/math/basic-test.c | 161 - test/math/c99_test.c | 116 - test/math/compile_test.c | 141 - test/math/fenv.h | 3 - test/math/gamma.c | 73 - test/math/gen-libm-test.pl | 737 --- test/math/ilogb.c | 52 - test/math/libm-test-ulps-arc | 145 - test/math/libm-test-ulps-arm | 4989 --------------- test/math/libm-test-ulps-cris | 145 - test/math/libm-test-ulps-generic | 5 - test/math/libm-test-ulps-i386 | 1261 ---- test/math/libm-test-ulps-ia64 | 1146 ---- test/math/libm-test-ulps-microblaze | 145 - test/math/libm-test-ulps-mips32 | 145 - test/math/libm-test-ulps-mips64 | 9633 ----------------------------- test/math/libm-test-ulps-nds32 | 145 - test/math/libm-test-ulps-powerpc | 1336 ---- test/math/libm-test-ulps-sh | 1094 ---- test/math/libm-test-ulps-sparc | 1338 ---- test/math/libm-test-ulps-x86_64 | 1328 ---- test/math/libm-test-ulps-xtensa | 145 - test/math/libm-test.inc | 5096 --------------- test/math/rint.c | 33 - test/math/signgam.c | 28 - test/math/test-double.c | 33 - test/math/test-float.c | 33 - test/math/test-fpucw.c | 42 - test/math/test-idouble.c | 34 - test/math/test-ifloat.c | 34 - test/math/test-ildoubl.c | 34 - test/math/test-ldouble.c | 33 - test/math/tst-definitions.c | 46 - test/misc/Makefile | 8 - test/misc/Makefile.in | 42 - test/misc/bug-glob1.c | 92 - test/misc/bug-glob2.c | 300 - test/misc/bug-readdir1.c | 37 - test/misc/dirent.c | 39 - test/misc/dirent64.c | 1 - test/misc/fdopen.c | 52 - test/misc/opendir-tst1.c | 95 - test/misc/outb.c | 9 - test/misc/popen.c | 47 - test/misc/seek.c | 82 - test/misc/sem.c | 45 - test/misc/stdarg.c | 23 - test/misc/tst-fnmatch.c | 443 -- test/misc/tst-fnmatch.input | 754 --- test/misc/tst-gnuglob.c | 446 -- test/misc/tst-inotify.c | 65 - test/misc/tst-mkostemps.c | 159 - test/misc/tst-nftw.c | 57 - test/misc/tst-scandir.c | 23 - test/misc/tst-seekdir.c | 79 - test/misc/tst-statfs.c | 31 - test/misc/tst-statvfs.c | 26 - test/misc/tst-utmp.c | 423 -- test/misc/tst-utmpx.c | 2 - test/mmap/Makefile | 8 - test/mmap/Makefile.in | 2 - test/mmap/mmap.c | 73 - test/mmap/mmap2.c | 46 - test/mmap/mmap64.c | 29 - test/mmap/tst-mmap-eofsync.c | 106 - test/mmap/tst-mmap-fflushsync.c | 99 - test/mmap/tst-mmap-offend.c | 86 - test/mmap/tst-mmap-setvbuf.c | 81 - test/nptl/Makefile | 8 - test/nptl/Makefile.in | 242 - test/nptl/eintr.c | 88 - test/nptl/tst-align.c | 70 - test/nptl/tst-align2.c | 86 - test/nptl/tst-align3.c | 56 - test/nptl/tst-atfork1.c | 120 - test/nptl/tst-atfork2.c | 156 - test/nptl/tst-atfork2mod.c | 57 - test/nptl/tst-attr1.c | 305 - test/nptl/tst-attr2.c | 316 - test/nptl/tst-attr3.c | 419 -- test/nptl/tst-barrier1.c | 70 - test/nptl/tst-barrier2.c | 184 - test/nptl/tst-barrier3.c | 153 - test/nptl/tst-barrier4.c | 121 - test/nptl/tst-basic1.c | 81 - test/nptl/tst-basic2.c | 120 - test/nptl/tst-basic3.c | 86 - test/nptl/tst-basic4.c | 100 - test/nptl/tst-basic5.c | 73 - test/nptl/tst-basic6.c | 131 - test/nptl/tst-basic7.c | 75 - test/nptl/tst-cancel1.c | 162 - test/nptl/tst-cancel10.c | 125 - test/nptl/tst-cancel11.c | 122 - test/nptl/tst-cancel12.c | 126 - test/nptl/tst-cancel13.c | 128 - test/nptl/tst-cancel14.c | 136 - test/nptl/tst-cancel15.c | 141 - test/nptl/tst-cancel16.c | 230 - test/nptl/tst-cancel18.c | 173 - test/nptl/tst-cancel19.c | 286 - test/nptl/tst-cancel2.c | 99 - test/nptl/tst-cancel20.c | 263 - test/nptl/tst-cancel21.c | 293 - test/nptl/tst-cancel22.c | 121 - test/nptl/tst-cancel23.c | 1 - test/nptl/tst-cancel25.c | 171 - test/nptl/tst-cancel3.c | 97 - test/nptl/tst-cancel4.c | 2393 ------- test/nptl/tst-cancel5.c | 1 - test/nptl/tst-cancel6.c | 78 - test/nptl/tst-cancel7.c | 208 - test/nptl/tst-cancel8.c | 142 - test/nptl/tst-cancel9.c | 125 - test/nptl/tst-cancelx10.c | 1 - test/nptl/tst-cancelx11.c | 1 - test/nptl/tst-cancelx12.c | 1 - test/nptl/tst-cancelx13.c | 1 - test/nptl/tst-cancelx14.c | 1 - test/nptl/tst-cancelx15.c | 1 - test/nptl/tst-cancelx16.c | 1 - test/nptl/tst-cancelx18.c | 1 - test/nptl/tst-cancelx2.c | 1 - test/nptl/tst-cancelx20.c | 1 - test/nptl/tst-cancelx21.c | 1 - test/nptl/tst-cancelx3.c | 1 - test/nptl/tst-cancelx4.c | 1 - test/nptl/tst-cancelx6.c | 1 - test/nptl/tst-cancelx7.c | 1 - test/nptl/tst-cancelx8.c | 1 - test/nptl/tst-cancelx9.c | 1 - test/nptl/tst-cleanup0.c | 75 - test/nptl/tst-cleanup1.c | 99 - test/nptl/tst-cleanup2.c | 62 - test/nptl/tst-cleanup3.c | 97 - test/nptl/tst-cleanup4.c | 197 - test/nptl/tst-cleanup4aux.c | 120 - test/nptl/tst-cleanupx0.c | 1 - test/nptl/tst-cleanupx1.c | 1 - test/nptl/tst-cleanupx2.c | 1 - test/nptl/tst-cleanupx3.c | 1 - test/nptl/tst-cleanupx4.c | 1 - test/nptl/tst-clock.c | 123 - test/nptl/tst-clock1.c | 50 - test/nptl/tst-clock2.c | 201 - test/nptl/tst-clock_nanosleep.c | 57 - test/nptl/tst-cond-deadlock.c | 51 - test/nptl/tst-cond1.c | 93 - test/nptl/tst-cond10.c | 172 - test/nptl/tst-cond11.c | 190 - test/nptl/tst-cond12.c | 195 - test/nptl/tst-cond13.c | 2 - test/nptl/tst-cond14.c | 117 - test/nptl/tst-cond15.c | 159 - test/nptl/tst-cond16.c | 104 - test/nptl/tst-cond17.c | 2 - test/nptl/tst-cond18.c | 116 - test/nptl/tst-cond19.c | 75 - test/nptl/tst-cond2.c | 162 - test/nptl/tst-cond20.c | 169 - test/nptl/tst-cond21.c | 3 - test/nptl/tst-cond22.c | 160 - test/nptl/tst-cond23.c | 183 - test/nptl/tst-cond3.c | 112 - test/nptl/tst-cond4.c | 263 - test/nptl/tst-cond5.c | 105 - test/nptl/tst-cond6.c | 233 - test/nptl/tst-cond7.c | 167 - test/nptl/tst-cond8.c | 276 - test/nptl/tst-cond9.c | 149 - test/nptl/tst-cpuclock1.c | 306 - test/nptl/tst-cpuclock2.c | 331 - test/nptl/tst-cputimer1.c | 68 - test/nptl/tst-cputimer2.c | 83 - test/nptl/tst-cputimer3.c | 130 - test/nptl/tst-detach1.c | 55 - test/nptl/tst-dlsym1.c | 66 - test/nptl/tst-eintr1.c | 104 - test/nptl/tst-eintr2.c | 117 - test/nptl/tst-eintr3.c | 71 - test/nptl/tst-eintr4.c | 55 - test/nptl/tst-eintr5.c | 80 - test/nptl/tst-exec2.c | 153 - test/nptl/tst-exec3.c | 151 - test/nptl/tst-exec4.c | 115 - test/nptl/tst-exit1.c | 78 - test/nptl/tst-exit2.c | 40 - test/nptl/tst-exit3.c | 81 - test/nptl/tst-fini1.c | 34 - test/nptl/tst-fini1mod.c | 71 - test/nptl/tst-flock1.c | 92 - test/nptl/tst-flock2.c | 259 - test/nptl/tst-fork1.c | 119 - test/nptl/tst-fork2.c | 89 - test/nptl/tst-fork3.c | 106 - test/nptl/tst-fork4.c | 64 - test/nptl/tst-getpid1.c | 122 - test/nptl/tst-getpid2.c | 2 - test/nptl/tst-getpid3.c | 114 - test/nptl/tst-initializers1-c89.c | 1 - test/nptl/tst-initializers1-c99.c | 1 - test/nptl/tst-initializers1-gnu89.c | 1 - test/nptl/tst-initializers1-gnu99.c | 1 - test/nptl/tst-initializers1.c | 47 - test/nptl/tst-join1.c | 82 - test/nptl/tst-join2.c | 103 - test/nptl/tst-join3.c | 122 - test/nptl/tst-join4.c | 124 - test/nptl/tst-join5.c | 142 - test/nptl/tst-join6.c | 2 - test/nptl/tst-key1.c | 88 - test/nptl/tst-key2.c | 114 - test/nptl/tst-key3.c | 155 - test/nptl/tst-key4.c | 136 - test/nptl/tst-kill1.c | 99 - test/nptl/tst-kill2.c | 138 - test/nptl/tst-kill3.c | 158 - test/nptl/tst-kill4.c | 73 - test/nptl/tst-kill5.c | 48 - test/nptl/tst-kill6.c | 161 - test/nptl/tst-mqueue.h | 83 - test/nptl/tst-mqueue1.c | 416 -- test/nptl/tst-mqueue2.c | 476 -- test/nptl/tst-mqueue3.c | 243 - test/nptl/tst-mqueue4.c | 287 - test/nptl/tst-mqueue5.c | 1013 --- test/nptl/tst-mqueue6.c | 304 - test/nptl/tst-mqueue7.c | 108 - test/nptl/tst-mqueue8.c | 265 - test/nptl/tst-mqueue9.c | 91 - test/nptl/tst-mutex1.c | 56 - test/nptl/tst-mutex2.c | 222 - test/nptl/tst-mutex3.c | 224 - test/nptl/tst-mutex4.c | 190 - test/nptl/tst-mutex5.c | 185 - test/nptl/tst-mutex5a.c | 2 - test/nptl/tst-mutex6.c | 54 - test/nptl/tst-mutex7.c | 120 - test/nptl/tst-mutex7a.c | 2 - test/nptl/tst-mutex8.c | 366 -- test/nptl/tst-mutex9.c | 190 - test/nptl/tst-oddstacklimit.c | 1 - test/nptl/tst-once1.c | 50 - test/nptl/tst-once2.c | 103 - test/nptl/tst-once3.c | 161 - test/nptl/tst-once4.c | 201 - test/nptl/tst-oncex3.c | 1 - test/nptl/tst-oncex4.c | 1 - test/nptl/tst-popen1.c | 59 - test/nptl/tst-raise1.c | 61 - test/nptl/tst-rwlock1.c | 116 - test/nptl/tst-rwlock10.c | 20 - test/nptl/tst-rwlock11.c | 20 - test/nptl/tst-rwlock12.c | 207 - test/nptl/tst-rwlock13.c | 70 - test/nptl/tst-rwlock14.c | 168 - test/nptl/tst-rwlock2.c | 142 - test/nptl/tst-rwlock2a.c | 2 - test/nptl/tst-rwlock3.c | 92 - test/nptl/tst-rwlock4.c | 189 - test/nptl/tst-rwlock5.c | 86 - test/nptl/tst-rwlock6.c | 225 - test/nptl/tst-rwlock7.c | 178 - test/nptl/tst-rwlock8.c | 163 - test/nptl/tst-rwlock9.c | 202 - test/nptl/tst-sched1.c | 97 - test/nptl/tst-sem1.c | 88 - test/nptl/tst-sem10.c | 87 - test/nptl/tst-sem11.c | 76 - test/nptl/tst-sem12.c | 14 - test/nptl/tst-sem2.c | 53 - test/nptl/tst-sem3.c | 144 - test/nptl/tst-sem4.c | 149 - test/nptl/tst-sem5.c | 79 - test/nptl/tst-sem6.c | 80 - test/nptl/tst-sem7.c | 108 - test/nptl/tst-sem8.c | 73 - test/nptl/tst-sem9.c | 80 - test/nptl/tst-signal1.c | 188 - test/nptl/tst-signal2.c | 197 - test/nptl/tst-signal3.c | 260 - test/nptl/tst-signal4.c | 59 - test/nptl/tst-signal5.c | 110 - test/nptl/tst-signal6.c | 191 - test/nptl/tst-signal7.c | 58 - test/nptl/tst-spin1.c | 56 - test/nptl/tst-spin2.c | 158 - test/nptl/tst-spin3.c | 54 - test/nptl/tst-stack-align.h | 34 - test/nptl/tst-stack1.c | 145 - test/nptl/tst-stack2.c | 79 - test/nptl/tst-stdio1.c | 56 - test/nptl/tst-stdio2.c | 81 - test/nptl/tst-sysconf.c | 47 - test/nptl/tst-timer2.c | 65 - test/nptl/tst-timer3.c | 86 - test/nptl/tst-timer4.c | 647 -- test/nptl/tst-timer5.c | 38 - test/nptl/tst-tls1.c | 121 - test/nptl/tst-tls2.c | 215 - test/nptl/tst-tls3.c | 224 - test/nptl/tst-tls3mod.c | 105 - test/nptl/tst-tls4.c | 190 - test/nptl/tst-tls4moda.c | 55 - test/nptl/tst-tls4modb.c | 64 - test/nptl/tst-tls5.c | 118 - test/nptl/tst-tls5.h | 28 - test/nptl/tst-tls5mod.c | 6 - test/nptl/tst-tls5moda.c | 6 - test/nptl/tst-tls5modb.c | 6 - test/nptl/tst-tls5modc.c | 6 - test/nptl/tst-tls5modd.c | 6 - test/nptl/tst-tls5mode.c | 8 - test/nptl/tst-tls5modf.c | 9 - test/nptl/tst-tsd1.c | 117 - test/nptl/tst-tsd2.c | 96 - test/nptl/tst-tsd3.c | 128 - test/nptl/tst-tsd4.c | 102 - test/nptl/tst-tsd5.c | 80 - test/nptl/tst-tsd6.c | 89 - test/nptl/tst-typesizes.c | 95 - test/nptl/tst-umask1.c | 136 - test/nptl/tst-unload.c | 46 - test/nptl/tst-vfork1.c | 149 - test/nptl/tst-vfork1x.c | 149 - test/nptl/tst-vfork2.c | 198 - test/nptl/tst-vfork2x.c | 198 - test/plt/check-plt.sh | 38 - test/pthread/Makefile | 8 - test/pthread/Makefile.in | 10 - test/pthread/cancellation-points.c | 286 - test/pthread/ex1.c | 35 - test/pthread/ex2.c | 113 - test/pthread/ex3.c | 152 - test/pthread/ex4.c | 107 - test/pthread/ex5.c | 102 - test/pthread/ex6.c | 44 - test/pthread/ex7.c | 106 - test/pthread/ex8-mtx-odd.c | 56 - test/pthread/tst-c99.c | 2 - test/pthread/tst-join2.c | 103 - test/pthread/tst-join3.c | 122 - test/pthread/tst-too-many-cleanups.c | 104 - test/pwd_grp/.indent.pro | 33 - test/pwd_grp/Makefile | 8 - test/pwd_grp/Makefile.in | 8 - test/pwd_grp/getgroups.c | 100 - test/pwd_grp/grcat.c | 32 - test/pwd_grp/pwcat.c | 26 - test/pwd_grp/test_grp.c | 87 - test/pwd_grp/test_pwd.c | 74 - test/regex/LICENSE | 72 - test/regex/Makefile | 8 - test/regex/Makefile.in | 6 - test/regex/basic.dat | 216 - test/regex/categorize.dat | 62 - test/regex/forcedassoc.dat | 30 - test/regex/interpretation.dat | 93 - test/regex/leftassoc.dat | 16 - test/regex/nullsubexpr.dat | 73 - test/regex/repetition.dat | 79 - test/regex/rightassoc.dat | 16 - test/regex/testregex.c | 2145 ------- test/regex/tst-regex2.c | 250 - test/regex/tst-regex2.dat | 2176 ------- test/regex/tst-regexloc.c | 53 - test/rpc/Makefile | 8 - test/rpc/Makefile.in | 11 - test/rpc/getrpcent.c | 18 - test/rpc/getrpcent_r.c | 25 - test/setjmp/Makefile | 8 - test/setjmp/Makefile.in | 0 test/setjmp/bug269-setjmp.c | 106 - test/setjmp/jmpbug.c | 51 - test/setjmp/sigjmpbug.c | 51 - test/setjmp/tst-setjmp.c | 118 - test/setjmp/tst-vfork-longjmp.c | 108 - test/signal/.indent.pro | 33 - test/signal/Makefile | 8 - test/signal/Makefile.in | 6 - test/signal/sigchld.c | 68 - test/signal/signal.c | 95 - test/signal/tst-raise.c | 62 - test/signal/tst-signal.c | 44 - test/signal/tst-signalfd.c | 63 - test/signal/tst-sigset.c | 45 - test/signal/tst-sigsimple.c | 56 - test/silly/Makefile | 8 - test/silly/Makefile.in | 24 - test/silly/hello.c | 8 - test/silly/tiny.c | 6 - test/silly/tst-atomic-long.c | 27 - test/silly/tst-atomic.c | 573 -- test/stat/Makefile | 8 - test/stat/Makefile.in | 13 - test/stat/memcmp-stat.c | 107 - test/stat/stat-loop256.c | 32 - test/stat/stat.c | 71 - test/stat/stat64.c | 1 - test/stdio/64bit.c | 12 - test/stdio/Makefile | 8 - test/stdio/Makefile.in | 8 - test/stdio/fclose-loop.c | 21 - test/stdio/lseek_no_lfs.c | 22 - test/stdio/scanf_m.c | 27 - test/stdio/tst-fmemopen.c | 53 - test/stdlib/Makefile | 8 - test/stdlib/Makefile.in | 15 - test/stdlib/ptytest.c | 20 - test/stdlib/qsort.c | 53 - test/stdlib/test-canon.c | 251 - test/stdlib/test-canon2.c | 86 - test/stdlib/test-mkostemp-O_CLOEXEC.c | 45 - test/stdlib/test-mkostemp-child.c | 22 - test/stdlib/testarc4random.c | 10 - test/stdlib/testatexit.c | 81 - test/stdlib/teston_exit.c | 82 - test/stdlib/teststrtol.c | 109 - test/stdlib/teststrtoq.c | 89 - test/string/Makefile | 8 - test/string/Makefile.in | 8 - test/string/bug-strcoll1.c | 24 - test/string/bug-strncat1.c | 31 - test/string/bug-strpbrk1.c | 19 - test/string/bug-strspn1.c | 19 - test/string/stratcliff.c | 348 -- test/string/test-ffs.c | 65 - test/string/testcopy.c | 107 - test/string/tester.c | 1646 ----- test/string/tst-bswap.c | 73 - test/string/tst-inlcall.c | 82 - test/string/tst-memmove.c | 46 - test/string/tst-strlen.c | 45 - test/string/tst-strtok.c | 23 - test/string/tst-strxfrm.c | 80 - test/termios/Makefile | 8 - test/termios/termios.c | 25 - test/test-skeleton.c | 419 -- test/testsuite.h | 101 - test/time/Makefile | 8 - test/time/Makefile.in | 22 - test/time/bug-asctime.c | 40 - test/time/bug-asctime_r.c | 37 - test/time/clocktest.c | 36 - test/time/test_time.c | 115 - test/time/time.c | 76 - test/time/tst-ctime.c | 44 - test/time/tst-ftime_l.c | 136 - test/time/tst-futimens1.c | 105 - test/time/tst-mktime.c | 70 - test/time/tst-mktime2.c | 141 - test/time/tst-mktime3.c | 50 - test/time/tst-posixtz.c | 88 - test/time/tst-strftime.c | 111 - test/time/tst-strptime.c | 192 - test/time/tst-strptime2.c | 59 - test/time/tst-timerfd.c | 71 - test/time/tst-timezone.c | 169 - test/time/tst_wcsftime.c | 65 - test/tls/Makefile | 8 - test/tls/Makefile.in | 161 - test/tls/README | 8 - test/tls/tls-macros-alpha.h | 25 - test/tls/tls-macros-arc.h | 28 - test/tls/tls-macros-arm.h | 51 - test/tls/tls-macros-i386.h | 76 - test/tls/tls-macros-ia64.h | 63 - test/tls/tls-macros-metag.h | 38 - test/tls/tls-macros-mips.h | 64 - test/tls/tls-macros-powerpc.h | 87 - test/tls/tls-macros-sh.h | 143 - test/tls/tls-macros-sparc.h | 67 - test/tls/tls-macros-thumb.h | 57 - test/tls/tls-macros-x86_64.h | 40 - test/tls/tls-macros-xtensa.h | 61 - test/tls/tls-macros.h | 74 - test/tls/tst-tls-at-ctor.c | 21 - test/tls/tst-tls1-static.c | 1 - test/tls/tst-tls1.c | 92 - test/tls/tst-tls10.c | 40 - test/tls/tst-tls10.h | 38 - test/tls/tst-tls11.c | 27 - test/tls/tst-tls12.c | 18 - test/tls/tst-tls13.c | 30 - test/tls/tst-tls14.c | 66 - test/tls/tst-tls15.c | 33 - test/tls/tst-tls16.c | 53 - test/tls/tst-tls17.c | 29 - test/tls/tst-tls18.c | 38 - test/tls/tst-tls2-static.c | 1 - test/tls/tst-tls2.c | 91 - test/tls/tst-tls3.c | 76 - test/tls/tst-tls4.c | 56 - test/tls/tst-tls5.c | 72 - test/tls/tst-tls6.c | 107 - test/tls/tst-tls7.c | 78 - test/tls/tst-tls8.c | 229 - test/tls/tst-tls9-static.c | 1 - test/tls/tst-tls9.c | 42 - test/tls/tst-tlsmod-at-ctor.c | 25 - test/tls/tst-tlsmod1.c | 68 - test/tls/tst-tlsmod10.c | 1 - test/tls/tst-tlsmod11.c | 6 - test/tls/tst-tlsmod12.c | 14 - test/tls/tst-tlsmod13.c | 14 - test/tls/tst-tlsmod13a.c | 16 - test/tls/tst-tlsmod14a.c | 41 - test/tls/tst-tlsmod14b.c | 2 - test/tls/tst-tlsmod15a.c | 6 - test/tls/tst-tlsmod15b.c | 17 - test/tls/tst-tlsmod16a.c | 7 - test/tls/tst-tlsmod16b.c | 13 - test/tls/tst-tlsmod17a.c | 23 - test/tls/tst-tlsmod17b.c | 15 - test/tls/tst-tlsmod18a.c | 21 - test/tls/tst-tlsmod2.c | 38 - test/tls/tst-tlsmod3.c | 41 - test/tls/tst-tlsmod4.c | 38 - test/tls/tst-tlsmod5.c | 7 - test/tls/tst-tlsmod6.c | 7 - test/tls/tst-tlsmod7.c | 103 - test/tls/tst-tlsmod8.c | 72 - test/tls/tst-tlsmod9.c | 101 - test/uclibcng-testrunner.sh | 62 - test/unistd/Makefile | 8 - test/unistd/Makefile.in | 44 - test/unistd/clone.c | 101 - test/unistd/clone_cruft.h | 24 - test/unistd/errno.c | 29 - test/unistd/exec-null.c | 13 - test/unistd/fork.c | 91 - test/unistd/getcwd.c | 39 - test/unistd/getopt.c | 69 - test/unistd/getopt_long.c | 93 - test/unistd/tst-fallocate.c | 166 - test/unistd/tst-fallocate64.c | 2 - test/unistd/tst-getconf.sh | 240 - test/unistd/tst-posix_fallocate.c | 127 - test/unistd/tst-posix_fallocate64.c | 2 - test/unistd/tst-preadwrite.c | 104 - test/unistd/tst-preadwrite64.c | 23 - test/unistd/tst-pselect.c | 51 - test/unistd/tstgetopt.c | 76 - test/unistd/vfork.c | 53 - 795 files changed, 2 insertions(+), 107551 deletions(-) delete mode 100644 test/.gitignore delete mode 100644 test/Makefile delete mode 100644 test/README delete mode 100644 test/Rules.mak delete mode 100644 test/Test.mak delete mode 100644 test/argp/Makefile delete mode 100644 test/argp/Makefile.in delete mode 100644 test/argp/argp-ex1.c delete mode 100644 test/argp/argp-ex2.c delete mode 100644 test/argp/argp-ex3.c delete mode 100644 test/argp/argp-ex4.c delete mode 100644 test/argp/argp-test.c delete mode 100644 test/argp/bug-argp1.c delete mode 100644 test/argp/tst-argp1.c delete mode 100644 test/argp/tst-argp2.c delete mode 100644 test/args/Makefile delete mode 100644 test/args/Makefile.in delete mode 100644 test/args/arg_test.c delete mode 100644 test/args/arg_test.out.good delete mode 100644 test/args/arg_test_glibc.out.good delete mode 100644 test/assert/Makefile delete mode 100644 test/assert/Makefile.in delete mode 100644 test/assert/assert.c delete mode 100644 test/build/Makefile delete mode 100755 test/build/check_config_options.sh delete mode 100644 test/crypt/Makefile delete mode 100644 test/crypt/Makefile.in delete mode 100644 test/crypt/crypt.c delete mode 100644 test/crypt/crypt.input delete mode 100644 test/crypt/crypt.out.good delete mode 100644 test/crypt/md5c-test.c delete mode 100644 test/crypt/sha256c-test.c delete mode 100644 test/crypt/sha512c-test.c delete mode 100644 test/ctype/Makefile delete mode 100644 test/ctype/Makefile.in delete mode 100644 test/ctype/ctype.c delete mode 100644 test/dlopen/Makefile delete mode 100644 test/dlopen/Makefile.in delete mode 100644 test/dlopen/dladdr.c delete mode 100644 test/dlopen/dlafk.c delete mode 100644 test/dlopen/dlstatic.c delete mode 100644 test/dlopen/dltest.c delete mode 100644 test/dlopen/dltest2.c delete mode 100644 test/dlopen/dlundef.c delete mode 100644 test/dlopen/libA.c delete mode 100644 test/dlopen/libB.c delete mode 100644 test/dlopen/libC.c delete mode 100644 test/dlopen/libafk-temp.c delete mode 100644 test/dlopen/libafk.c delete mode 100644 test/dlopen/libstatic.c delete mode 100644 test/dlopen/libtest.c delete mode 100644 test/dlopen/libtest1.c delete mode 100644 test/dlopen/libtest2.c delete mode 100644 test/dlopen/libtest3.c delete mode 100644 test/dlopen/libundef.c delete mode 100644 test/dlopen/nodelete.c delete mode 100644 test/dlopen/nodelete1.c delete mode 100644 test/dlopen/nodelmod1.c delete mode 100644 test/dlopen/nodelmod2.c delete mode 100644 test/dlopen/nodelmod3.c delete mode 100644 test/dlopen/nodelmod4.c delete mode 100644 test/dlopen/test1.c delete mode 100644 test/dlopen/test2.c delete mode 100644 test/dlopen/test3.c delete mode 100644 test/dlopen/testscope.c delete mode 100644 test/dlopen/tst-origin.c delete mode 100644 test/inet/Makefile delete mode 100644 test/inet/Makefile.in delete mode 100644 test/inet/bug-if1.c delete mode 100644 test/inet/gethost.c delete mode 100644 test/inet/gethost_r-align.c delete mode 100644 test/inet/gethostid.c delete mode 100644 test/inet/getnetent.c delete mode 100644 test/inet/if_nameindex.c delete mode 100644 test/inet/tst-aton.c delete mode 100644 test/inet/tst-ether_aton.c delete mode 100644 test/inet/tst-ethers-line.c delete mode 100644 test/inet/tst-ethers.c delete mode 100644 test/inet/tst-ifaddrs.c delete mode 100644 test/inet/tst-network.c delete mode 100644 test/inet/tst-ntoa.c delete mode 100644 test/inet/tst-res.c delete mode 100644 test/inet/tst-sock-nonblock.c delete mode 100644 test/librt/Makefile delete mode 100644 test/librt/Makefile.in delete mode 100644 test/librt/shmtest.c delete mode 100644 test/locale-mbwc/Makefile delete mode 100644 test/locale-mbwc/Makefile.in delete mode 100644 test/locale-mbwc/dat_isw-funcs.h delete mode 100644 test/locale-mbwc/dat_iswalnum.c delete mode 100644 test/locale-mbwc/dat_iswalpha.c delete mode 100644 test/locale-mbwc/dat_iswcntrl.c delete mode 100644 test/locale-mbwc/dat_iswctype.c delete mode 100644 test/locale-mbwc/dat_iswdigit.c delete mode 100644 test/locale-mbwc/dat_iswgraph.c delete mode 100644 test/locale-mbwc/dat_iswlower.c delete mode 100644 test/locale-mbwc/dat_iswprint.c delete mode 100644 test/locale-mbwc/dat_iswpunct.c delete mode 100644 test/locale-mbwc/dat_iswspace.c delete mode 100644 test/locale-mbwc/dat_iswupper.c delete mode 100644 test/locale-mbwc/dat_iswxdigit.c delete mode 100644 test/locale-mbwc/dat_mblen.c delete mode 100644 test/locale-mbwc/dat_mbrlen.c delete mode 100644 test/locale-mbwc/dat_mbrtowc.c delete mode 100644 test/locale-mbwc/dat_mbsrtowcs.c delete mode 100644 test/locale-mbwc/dat_mbstowcs.c delete mode 100644 test/locale-mbwc/dat_mbtowc.c delete mode 100644 test/locale-mbwc/dat_strcoll.c delete mode 100644 test/locale-mbwc/dat_strfmon.c delete mode 100644 test/locale-mbwc/dat_strxfrm.c delete mode 100644 test/locale-mbwc/dat_swscanf.c delete mode 100644 test/locale-mbwc/dat_tow-funcs.h delete mode 100644 test/locale-mbwc/dat_towctrans.c delete mode 100644 test/locale-mbwc/dat_towlower.c delete mode 100644 test/locale-mbwc/dat_towupper.c delete mode 100644 test/locale-mbwc/dat_wcrtomb.c delete mode 100644 test/locale-mbwc/dat_wcscat.c delete mode 100644 test/locale-mbwc/dat_wcschr.c delete mode 100644 test/locale-mbwc/dat_wcscmp.c delete mode 100644 test/locale-mbwc/dat_wcscoll.c delete mode 100644 test/locale-mbwc/dat_wcscpy.c delete mode 100644 test/locale-mbwc/dat_wcscspn.c delete mode 100644 test/locale-mbwc/dat_wcslen.c delete mode 100644 test/locale-mbwc/dat_wcsncat.c delete mode 100644 test/locale-mbwc/dat_wcsncmp.c delete mode 100644 test/locale-mbwc/dat_wcsncpy.c delete mode 100644 test/locale-mbwc/dat_wcspbrk.c delete mode 100644 test/locale-mbwc/dat_wcsrtombs.c delete mode 100644 test/locale-mbwc/dat_wcsspn.c delete mode 100644 test/locale-mbwc/dat_wcsstr.c delete mode 100644 test/locale-mbwc/dat_wcstod.c delete mode 100644 test/locale-mbwc/dat_wcstok.c delete mode 100644 test/locale-mbwc/dat_wcstombs.c delete mode 100644 test/locale-mbwc/dat_wcswidth.c delete mode 100644 test/locale-mbwc/dat_wcsxfrm.c delete mode 100644 test/locale-mbwc/dat_wctob.c delete mode 100644 test/locale-mbwc/dat_wctomb.c delete mode 100644 test/locale-mbwc/dat_wctrans.c delete mode 100644 test/locale-mbwc/dat_wctype.c delete mode 100644 test/locale-mbwc/dat_wcwidth.c delete mode 100644 test/locale-mbwc/tgn_funcdef.h delete mode 100644 test/locale-mbwc/tgn_locdef.h delete mode 100644 test/locale-mbwc/tsp_common.c delete mode 100644 test/locale-mbwc/tst2_mbrtowc.c delete mode 100644 test/locale-mbwc/tst_funcs.h delete mode 100644 test/locale-mbwc/tst_iswalnum.c delete mode 100644 test/locale-mbwc/tst_iswalpha.c delete mode 100644 test/locale-mbwc/tst_iswcntrl.c delete mode 100644 test/locale-mbwc/tst_iswctype.c delete mode 100644 test/locale-mbwc/tst_iswdigit.c delete mode 100644 test/locale-mbwc/tst_iswgraph.c delete mode 100644 test/locale-mbwc/tst_iswlower.c delete mode 100644 test/locale-mbwc/tst_iswprint.c delete mode 100644 test/locale-mbwc/tst_iswpunct.c delete mode 100644 test/locale-mbwc/tst_iswspace.c delete mode 100644 test/locale-mbwc/tst_iswupper.c delete mode 100644 test/locale-mbwc/tst_iswxdigit.c delete mode 100644 test/locale-mbwc/tst_mblen.c delete mode 100644 test/locale-mbwc/tst_mbrlen.c delete mode 100644 test/locale-mbwc/tst_mbrtowc.c delete mode 100644 test/locale-mbwc/tst_mbsrtowcs.c delete mode 100644 test/locale-mbwc/tst_mbstowcs.c delete mode 100644 test/locale-mbwc/tst_mbtowc.c delete mode 100644 test/locale-mbwc/tst_strcoll.c delete mode 100644 test/locale-mbwc/tst_strfmon.c delete mode 100644 test/locale-mbwc/tst_strxfrm.c delete mode 100644 test/locale-mbwc/tst_swscanf.c delete mode 100644 test/locale-mbwc/tst_towctrans.c delete mode 100644 test/locale-mbwc/tst_towlower.c delete mode 100644 test/locale-mbwc/tst_towupper.c delete mode 100644 test/locale-mbwc/tst_types.h delete mode 100644 test/locale-mbwc/tst_wcrtomb.c delete mode 100644 test/locale-mbwc/tst_wcscat.c delete mode 100644 test/locale-mbwc/tst_wcschr.c delete mode 100644 test/locale-mbwc/tst_wcscmp.c delete mode 100644 test/locale-mbwc/tst_wcscoll.c delete mode 100644 test/locale-mbwc/tst_wcscpy.c delete mode 100644 test/locale-mbwc/tst_wcscspn.c delete mode 100644 test/locale-mbwc/tst_wcslen.c delete mode 100644 test/locale-mbwc/tst_wcsncat.c delete mode 100644 test/locale-mbwc/tst_wcsncmp.c delete mode 100644 test/locale-mbwc/tst_wcsncpy.c delete mode 100644 test/locale-mbwc/tst_wcspbrk.c delete mode 100644 test/locale-mbwc/tst_wcsrtombs.c delete mode 100644 test/locale-mbwc/tst_wcsspn.c delete mode 100644 test/locale-mbwc/tst_wcsstr.c delete mode 100644 test/locale-mbwc/tst_wcstod.c delete mode 100644 test/locale-mbwc/tst_wcstok.c delete mode 100644 test/locale-mbwc/tst_wcstombs.c delete mode 100644 test/locale-mbwc/tst_wcswidth.c delete mode 100644 test/locale-mbwc/tst_wcsxfrm.c delete mode 100644 test/locale-mbwc/tst_wctob.c delete mode 100644 test/locale-mbwc/tst_wctomb.c delete mode 100644 test/locale-mbwc/tst_wctrans.c delete mode 100644 test/locale-mbwc/tst_wctype.c delete mode 100644 test/locale-mbwc/tst_wcwidth.c delete mode 100644 test/locale/Makefile delete mode 100644 test/locale/Makefile.in delete mode 100644 test/locale/bug-iconv-trans.c delete mode 100644 test/locale/bug-usesetlocale.c delete mode 100644 test/locale/collate-test.c delete mode 100644 test/locale/dump-ctype.c delete mode 100644 test/locale/gen-unicode-ctype.c delete mode 100644 test/locale/show-ucs-data.c delete mode 100644 test/locale/tst-C-locale.c delete mode 100644 test/locale/tst-ctype-de_DE.ISO-8859-1.in delete mode 100644 test/locale/tst-ctype.c delete mode 100644 test/locale/tst-digits.c delete mode 100644 test/locale/tst-fmon.c delete mode 100644 test/locale/tst-langinfo.c delete mode 100644 test/locale/tst-langinfo.input delete mode 100644 test/locale/tst-leaks.c delete mode 100644 test/locale/tst-mbswcs1.c delete mode 100644 test/locale/tst-mbswcs2.c delete mode 100644 test/locale/tst-mbswcs3.c delete mode 100644 test/locale/tst-mbswcs4.c delete mode 100644 test/locale/tst-mbswcs5.c delete mode 100644 test/locale/tst-mbswcs6.c delete mode 100644 test/locale/tst-numeric.c delete mode 100644 test/locale/tst-rpmatch.c delete mode 100644 test/locale/tst-setlocale.c delete mode 100644 test/locale/tst-sscanf.c delete mode 100644 test/locale/tst-strfmon1.c delete mode 100644 test/locale/tst-trans.c delete mode 100644 test/locale/tst-wctype.c delete mode 100644 test/locale/tst-xlocale1.c delete mode 100644 test/locale/tst-xlocale2.c delete mode 100644 test/locale/tst_nl_langinfo.c delete mode 100644 test/locale/xfrm-test.c delete mode 100644 test/malloc/Makefile delete mode 100644 test/malloc/Makefile.in delete mode 100644 test/malloc/malloc-standard-alignment.c delete mode 100644 test/malloc/malloc.c delete mode 100644 test/malloc/mallocbug.c delete mode 100644 test/malloc/realloc-can-shrink.c delete mode 100644 test/malloc/realloc0.c delete mode 100644 test/malloc/testmalloc.c delete mode 100644 test/malloc/time_malloc.c delete mode 100644 test/malloc/tst-asprintf.c delete mode 100644 test/malloc/tst-calloc.c delete mode 100644 test/malloc/tst-malloc.c delete mode 100644 test/malloc/tst-mallocfork.c delete mode 100644 test/malloc/tst-mcheck.c delete mode 100644 test/malloc/tst-obstack.c delete mode 100644 test/malloc/tst-valloc.c delete mode 100644 test/math/Makefile delete mode 100644 test/math/Makefile.in delete mode 100644 test/math/basic-test.c delete mode 100644 test/math/c99_test.c delete mode 100644 test/math/compile_test.c delete mode 100644 test/math/fenv.h delete mode 100644 test/math/gamma.c delete mode 100755 test/math/gen-libm-test.pl delete mode 100644 test/math/ilogb.c delete mode 100644 test/math/libm-test-ulps-arc delete mode 100644 test/math/libm-test-ulps-arm delete mode 100644 test/math/libm-test-ulps-cris delete mode 100644 test/math/libm-test-ulps-generic delete mode 100644 test/math/libm-test-ulps-i386 delete mode 100644 test/math/libm-test-ulps-ia64 delete mode 100644 test/math/libm-test-ulps-microblaze delete mode 100644 test/math/libm-test-ulps-mips32 delete mode 100644 test/math/libm-test-ulps-mips64 delete mode 100644 test/math/libm-test-ulps-nds32 delete mode 100644 test/math/libm-test-ulps-powerpc delete mode 100644 test/math/libm-test-ulps-sh delete mode 100644 test/math/libm-test-ulps-sparc delete mode 100644 test/math/libm-test-ulps-x86_64 delete mode 100644 test/math/libm-test-ulps-xtensa delete mode 100644 test/math/libm-test.inc delete mode 100644 test/math/rint.c delete mode 100644 test/math/signgam.c delete mode 100644 test/math/test-double.c delete mode 100644 test/math/test-float.c delete mode 100644 test/math/test-fpucw.c delete mode 100644 test/math/test-idouble.c delete mode 100644 test/math/test-ifloat.c delete mode 100644 test/math/test-ildoubl.c delete mode 100644 test/math/test-ldouble.c delete mode 100644 test/math/tst-definitions.c delete mode 100644 test/misc/Makefile delete mode 100644 test/misc/Makefile.in delete mode 100644 test/misc/bug-glob1.c delete mode 100644 test/misc/bug-glob2.c delete mode 100644 test/misc/bug-readdir1.c delete mode 100644 test/misc/dirent.c delete mode 100644 test/misc/dirent64.c delete mode 100644 test/misc/fdopen.c delete mode 100644 test/misc/opendir-tst1.c delete mode 100644 test/misc/outb.c delete mode 100644 test/misc/popen.c delete mode 100644 test/misc/seek.c delete mode 100644 test/misc/sem.c delete mode 100644 test/misc/stdarg.c delete mode 100644 test/misc/tst-fnmatch.c delete mode 100644 test/misc/tst-fnmatch.input delete mode 100644 test/misc/tst-gnuglob.c delete mode 100644 test/misc/tst-inotify.c delete mode 100644 test/misc/tst-mkostemps.c delete mode 100644 test/misc/tst-nftw.c delete mode 100644 test/misc/tst-scandir.c delete mode 100644 test/misc/tst-seekdir.c delete mode 100644 test/misc/tst-statfs.c delete mode 100644 test/misc/tst-statvfs.c delete mode 100644 test/misc/tst-utmp.c delete mode 100644 test/misc/tst-utmpx.c delete mode 100644 test/mmap/Makefile delete mode 100644 test/mmap/Makefile.in delete mode 100644 test/mmap/mmap.c delete mode 100644 test/mmap/mmap2.c delete mode 100644 test/mmap/mmap64.c delete mode 100644 test/mmap/tst-mmap-eofsync.c delete mode 100644 test/mmap/tst-mmap-fflushsync.c delete mode 100644 test/mmap/tst-mmap-offend.c delete mode 100644 test/mmap/tst-mmap-setvbuf.c delete mode 100644 test/nptl/Makefile delete mode 100644 test/nptl/Makefile.in delete mode 100644 test/nptl/eintr.c delete mode 100644 test/nptl/tst-align.c delete mode 100644 test/nptl/tst-align2.c delete mode 100644 test/nptl/tst-align3.c delete mode 100644 test/nptl/tst-atfork1.c delete mode 100644 test/nptl/tst-atfork2.c delete mode 100644 test/nptl/tst-atfork2mod.c delete mode 100644 test/nptl/tst-attr1.c delete mode 100644 test/nptl/tst-attr2.c delete mode 100644 test/nptl/tst-attr3.c delete mode 100644 test/nptl/tst-barrier1.c delete mode 100644 test/nptl/tst-barrier2.c delete mode 100644 test/nptl/tst-barrier3.c delete mode 100644 test/nptl/tst-barrier4.c delete mode 100644 test/nptl/tst-basic1.c delete mode 100644 test/nptl/tst-basic2.c delete mode 100644 test/nptl/tst-basic3.c delete mode 100644 test/nptl/tst-basic4.c delete mode 100644 test/nptl/tst-basic5.c delete mode 100644 test/nptl/tst-basic6.c delete mode 100644 test/nptl/tst-basic7.c delete mode 100644 test/nptl/tst-cancel1.c delete mode 100644 test/nptl/tst-cancel10.c delete mode 100644 test/nptl/tst-cancel11.c delete mode 100644 test/nptl/tst-cancel12.c delete mode 100644 test/nptl/tst-cancel13.c delete mode 100644 test/nptl/tst-cancel14.c delete mode 100644 test/nptl/tst-cancel15.c delete mode 100644 test/nptl/tst-cancel16.c delete mode 100644 test/nptl/tst-cancel18.c delete mode 100644 test/nptl/tst-cancel19.c delete mode 100644 test/nptl/tst-cancel2.c delete mode 100644 test/nptl/tst-cancel20.c delete mode 100644 test/nptl/tst-cancel21.c delete mode 100644 test/nptl/tst-cancel22.c delete mode 100644 test/nptl/tst-cancel23.c delete mode 100644 test/nptl/tst-cancel25.c delete mode 100644 test/nptl/tst-cancel3.c delete mode 100644 test/nptl/tst-cancel4.c delete mode 100644 test/nptl/tst-cancel5.c delete mode 100644 test/nptl/tst-cancel6.c delete mode 100644 test/nptl/tst-cancel7.c delete mode 100644 test/nptl/tst-cancel8.c delete mode 100644 test/nptl/tst-cancel9.c delete mode 100644 test/nptl/tst-cancelx10.c delete mode 100644 test/nptl/tst-cancelx11.c delete mode 100644 test/nptl/tst-cancelx12.c delete mode 100644 test/nptl/tst-cancelx13.c delete mode 100644 test/nptl/tst-cancelx14.c delete mode 100644 test/nptl/tst-cancelx15.c delete mode 100644 test/nptl/tst-cancelx16.c delete mode 100644 test/nptl/tst-cancelx18.c delete mode 100644 test/nptl/tst-cancelx2.c delete mode 100644 test/nptl/tst-cancelx20.c delete mode 100644 test/nptl/tst-cancelx21.c delete mode 100644 test/nptl/tst-cancelx3.c delete mode 100644 test/nptl/tst-cancelx4.c delete mode 100644 test/nptl/tst-cancelx6.c delete mode 100644 test/nptl/tst-cancelx7.c delete mode 100644 test/nptl/tst-cancelx8.c delete mode 100644 test/nptl/tst-cancelx9.c delete mode 100644 test/nptl/tst-cleanup0.c delete mode 100644 test/nptl/tst-cleanup1.c delete mode 100644 test/nptl/tst-cleanup2.c delete mode 100644 test/nptl/tst-cleanup3.c delete mode 100644 test/nptl/tst-cleanup4.c delete mode 100644 test/nptl/tst-cleanup4aux.c delete mode 100644 test/nptl/tst-cleanupx0.c delete mode 100644 test/nptl/tst-cleanupx1.c delete mode 100644 test/nptl/tst-cleanupx2.c delete mode 100644 test/nptl/tst-cleanupx3.c delete mode 100644 test/nptl/tst-cleanupx4.c delete mode 100644 test/nptl/tst-clock.c delete mode 100644 test/nptl/tst-clock1.c delete mode 100644 test/nptl/tst-clock2.c delete mode 100644 test/nptl/tst-clock_nanosleep.c delete mode 100644 test/nptl/tst-cond-deadlock.c delete mode 100644 test/nptl/tst-cond1.c delete mode 100644 test/nptl/tst-cond10.c delete mode 100644 test/nptl/tst-cond11.c delete mode 100644 test/nptl/tst-cond12.c delete mode 100644 test/nptl/tst-cond13.c delete mode 100644 test/nptl/tst-cond14.c delete mode 100644 test/nptl/tst-cond15.c delete mode 100644 test/nptl/tst-cond16.c delete mode 100644 test/nptl/tst-cond17.c delete mode 100644 test/nptl/tst-cond18.c delete mode 100644 test/nptl/tst-cond19.c delete mode 100644 test/nptl/tst-cond2.c delete mode 100644 test/nptl/tst-cond20.c delete mode 100644 test/nptl/tst-cond21.c delete mode 100644 test/nptl/tst-cond22.c delete mode 100644 test/nptl/tst-cond23.c delete mode 100644 test/nptl/tst-cond3.c delete mode 100644 test/nptl/tst-cond4.c delete mode 100644 test/nptl/tst-cond5.c delete mode 100644 test/nptl/tst-cond6.c delete mode 100644 test/nptl/tst-cond7.c delete mode 100644 test/nptl/tst-cond8.c delete mode 100644 test/nptl/tst-cond9.c delete mode 100644 test/nptl/tst-cpuclock1.c delete mode 100644 test/nptl/tst-cpuclock2.c delete mode 100644 test/nptl/tst-cputimer1.c delete mode 100644 test/nptl/tst-cputimer2.c delete mode 100644 test/nptl/tst-cputimer3.c delete mode 100644 test/nptl/tst-detach1.c delete mode 100644 test/nptl/tst-dlsym1.c delete mode 100644 test/nptl/tst-eintr1.c delete mode 100644 test/nptl/tst-eintr2.c delete mode 100644 test/nptl/tst-eintr3.c delete mode 100644 test/nptl/tst-eintr4.c delete mode 100644 test/nptl/tst-eintr5.c delete mode 100644 test/nptl/tst-exec2.c delete mode 100644 test/nptl/tst-exec3.c delete mode 100644 test/nptl/tst-exec4.c delete mode 100644 test/nptl/tst-exit1.c delete mode 100644 test/nptl/tst-exit2.c delete mode 100644 test/nptl/tst-exit3.c delete mode 100644 test/nptl/tst-fini1.c delete mode 100644 test/nptl/tst-fini1mod.c delete mode 100644 test/nptl/tst-flock1.c delete mode 100644 test/nptl/tst-flock2.c delete mode 100644 test/nptl/tst-fork1.c delete mode 100644 test/nptl/tst-fork2.c delete mode 100644 test/nptl/tst-fork3.c delete mode 100644 test/nptl/tst-fork4.c delete mode 100644 test/nptl/tst-getpid1.c delete mode 100644 test/nptl/tst-getpid2.c delete mode 100644 test/nptl/tst-getpid3.c delete mode 100644 test/nptl/tst-initializers1-c89.c delete mode 100644 test/nptl/tst-initializers1-c99.c delete mode 100644 test/nptl/tst-initializers1-gnu89.c delete mode 100644 test/nptl/tst-initializers1-gnu99.c delete mode 100644 test/nptl/tst-initializers1.c delete mode 100644 test/nptl/tst-join1.c delete mode 100644 test/nptl/tst-join2.c delete mode 100644 test/nptl/tst-join3.c delete mode 100644 test/nptl/tst-join4.c delete mode 100644 test/nptl/tst-join5.c delete mode 100644 test/nptl/tst-join6.c delete mode 100644 test/nptl/tst-key1.c delete mode 100644 test/nptl/tst-key2.c delete mode 100644 test/nptl/tst-key3.c delete mode 100644 test/nptl/tst-key4.c delete mode 100644 test/nptl/tst-kill1.c delete mode 100644 test/nptl/tst-kill2.c delete mode 100644 test/nptl/tst-kill3.c delete mode 100644 test/nptl/tst-kill4.c delete mode 100644 test/nptl/tst-kill5.c delete mode 100644 test/nptl/tst-kill6.c delete mode 100644 test/nptl/tst-mqueue.h delete mode 100644 test/nptl/tst-mqueue1.c delete mode 100644 test/nptl/tst-mqueue2.c delete mode 100644 test/nptl/tst-mqueue3.c delete mode 100644 test/nptl/tst-mqueue4.c delete mode 100644 test/nptl/tst-mqueue5.c delete mode 100644 test/nptl/tst-mqueue6.c delete mode 100644 test/nptl/tst-mqueue7.c delete mode 100644 test/nptl/tst-mqueue8.c delete mode 100644 test/nptl/tst-mqueue9.c delete mode 100644 test/nptl/tst-mutex1.c delete mode 100644 test/nptl/tst-mutex2.c delete mode 100644 test/nptl/tst-mutex3.c delete mode 100644 test/nptl/tst-mutex4.c delete mode 100644 test/nptl/tst-mutex5.c delete mode 100644 test/nptl/tst-mutex5a.c delete mode 100644 test/nptl/tst-mutex6.c delete mode 100644 test/nptl/tst-mutex7.c delete mode 100644 test/nptl/tst-mutex7a.c delete mode 100644 test/nptl/tst-mutex8.c delete mode 100644 test/nptl/tst-mutex9.c delete mode 100644 test/nptl/tst-oddstacklimit.c delete mode 100644 test/nptl/tst-once1.c delete mode 100644 test/nptl/tst-once2.c delete mode 100644 test/nptl/tst-once3.c delete mode 100644 test/nptl/tst-once4.c delete mode 100644 test/nptl/tst-oncex3.c delete mode 100644 test/nptl/tst-oncex4.c delete mode 100644 test/nptl/tst-popen1.c delete mode 100644 test/nptl/tst-raise1.c delete mode 100644 test/nptl/tst-rwlock1.c delete mode 100644 test/nptl/tst-rwlock10.c delete mode 100644 test/nptl/tst-rwlock11.c delete mode 100644 test/nptl/tst-rwlock12.c delete mode 100644 test/nptl/tst-rwlock13.c delete mode 100644 test/nptl/tst-rwlock14.c delete mode 100644 test/nptl/tst-rwlock2.c delete mode 100644 test/nptl/tst-rwlock2a.c delete mode 100644 test/nptl/tst-rwlock3.c delete mode 100644 test/nptl/tst-rwlock4.c delete mode 100644 test/nptl/tst-rwlock5.c delete mode 100644 test/nptl/tst-rwlock6.c delete mode 100644 test/nptl/tst-rwlock7.c delete mode 100644 test/nptl/tst-rwlock8.c delete mode 100644 test/nptl/tst-rwlock9.c delete mode 100644 test/nptl/tst-sched1.c delete mode 100644 test/nptl/tst-sem1.c delete mode 100644 test/nptl/tst-sem10.c delete mode 100644 test/nptl/tst-sem11.c delete mode 100644 test/nptl/tst-sem12.c delete mode 100644 test/nptl/tst-sem2.c delete mode 100644 test/nptl/tst-sem3.c delete mode 100644 test/nptl/tst-sem4.c delete mode 100644 test/nptl/tst-sem5.c delete mode 100644 test/nptl/tst-sem6.c delete mode 100644 test/nptl/tst-sem7.c delete mode 100644 test/nptl/tst-sem8.c delete mode 100644 test/nptl/tst-sem9.c delete mode 100644 test/nptl/tst-signal1.c delete mode 100644 test/nptl/tst-signal2.c delete mode 100644 test/nptl/tst-signal3.c delete mode 100644 test/nptl/tst-signal4.c delete mode 100644 test/nptl/tst-signal5.c delete mode 100644 test/nptl/tst-signal6.c delete mode 100644 test/nptl/tst-signal7.c delete mode 100644 test/nptl/tst-spin1.c delete mode 100644 test/nptl/tst-spin2.c delete mode 100644 test/nptl/tst-spin3.c delete mode 100644 test/nptl/tst-stack-align.h delete mode 100644 test/nptl/tst-stack1.c delete mode 100644 test/nptl/tst-stack2.c delete mode 100644 test/nptl/tst-stdio1.c delete mode 100644 test/nptl/tst-stdio2.c delete mode 100644 test/nptl/tst-sysconf.c delete mode 100644 test/nptl/tst-timer2.c delete mode 100644 test/nptl/tst-timer3.c delete mode 100644 test/nptl/tst-timer4.c delete mode 100644 test/nptl/tst-timer5.c delete mode 100644 test/nptl/tst-tls1.c delete mode 100644 test/nptl/tst-tls2.c delete mode 100644 test/nptl/tst-tls3.c delete mode 100644 test/nptl/tst-tls3mod.c delete mode 100644 test/nptl/tst-tls4.c delete mode 100644 test/nptl/tst-tls4moda.c delete mode 100644 test/nptl/tst-tls4modb.c delete mode 100644 test/nptl/tst-tls5.c delete mode 100644 test/nptl/tst-tls5.h delete mode 100644 test/nptl/tst-tls5mod.c delete mode 100644 test/nptl/tst-tls5moda.c delete mode 100644 test/nptl/tst-tls5modb.c delete mode 100644 test/nptl/tst-tls5modc.c delete mode 100644 test/nptl/tst-tls5modd.c delete mode 100644 test/nptl/tst-tls5mode.c delete mode 100644 test/nptl/tst-tls5modf.c delete mode 100644 test/nptl/tst-tsd1.c delete mode 100644 test/nptl/tst-tsd2.c delete mode 100644 test/nptl/tst-tsd3.c delete mode 100644 test/nptl/tst-tsd4.c delete mode 100644 test/nptl/tst-tsd5.c delete mode 100644 test/nptl/tst-tsd6.c delete mode 100644 test/nptl/tst-typesizes.c delete mode 100644 test/nptl/tst-umask1.c delete mode 100644 test/nptl/tst-unload.c delete mode 100644 test/nptl/tst-vfork1.c delete mode 100644 test/nptl/tst-vfork1x.c delete mode 100644 test/nptl/tst-vfork2.c delete mode 100644 test/nptl/tst-vfork2x.c delete mode 100755 test/plt/check-plt.sh delete mode 100644 test/pthread/Makefile delete mode 100644 test/pthread/Makefile.in delete mode 100644 test/pthread/cancellation-points.c delete mode 100644 test/pthread/ex1.c delete mode 100644 test/pthread/ex2.c delete mode 100644 test/pthread/ex3.c delete mode 100644 test/pthread/ex4.c delete mode 100644 test/pthread/ex5.c delete mode 100644 test/pthread/ex6.c delete mode 100644 test/pthread/ex7.c delete mode 100644 test/pthread/ex8-mtx-odd.c delete mode 100644 test/pthread/tst-c99.c delete mode 100644 test/pthread/tst-join2.c delete mode 100644 test/pthread/tst-join3.c delete mode 100644 test/pthread/tst-too-many-cleanups.c delete mode 100644 test/pwd_grp/.indent.pro delete mode 100644 test/pwd_grp/Makefile delete mode 100644 test/pwd_grp/Makefile.in delete mode 100644 test/pwd_grp/getgroups.c delete mode 100644 test/pwd_grp/grcat.c delete mode 100644 test/pwd_grp/pwcat.c delete mode 100644 test/pwd_grp/test_grp.c delete mode 100644 test/pwd_grp/test_pwd.c delete mode 100644 test/regex/LICENSE delete mode 100644 test/regex/Makefile delete mode 100644 test/regex/Makefile.in delete mode 100644 test/regex/basic.dat delete mode 100644 test/regex/categorize.dat delete mode 100644 test/regex/forcedassoc.dat delete mode 100644 test/regex/interpretation.dat delete mode 100644 test/regex/leftassoc.dat delete mode 100644 test/regex/nullsubexpr.dat delete mode 100644 test/regex/repetition.dat delete mode 100644 test/regex/rightassoc.dat delete mode 100644 test/regex/testregex.c delete mode 100644 test/regex/tst-regex2.c delete mode 100644 test/regex/tst-regex2.dat delete mode 100644 test/regex/tst-regexloc.c delete mode 100644 test/rpc/Makefile delete mode 100644 test/rpc/Makefile.in delete mode 100644 test/rpc/getrpcent.c delete mode 100644 test/rpc/getrpcent_r.c delete mode 100644 test/setjmp/Makefile delete mode 100644 test/setjmp/Makefile.in delete mode 100644 test/setjmp/bug269-setjmp.c delete mode 100644 test/setjmp/jmpbug.c delete mode 100644 test/setjmp/sigjmpbug.c delete mode 100644 test/setjmp/tst-setjmp.c delete mode 100644 test/setjmp/tst-vfork-longjmp.c delete mode 100644 test/signal/.indent.pro delete mode 100644 test/signal/Makefile delete mode 100644 test/signal/Makefile.in delete mode 100644 test/signal/sigchld.c delete mode 100644 test/signal/signal.c delete mode 100644 test/signal/tst-raise.c delete mode 100644 test/signal/tst-signal.c delete mode 100644 test/signal/tst-signalfd.c delete mode 100644 test/signal/tst-sigset.c delete mode 100644 test/signal/tst-sigsimple.c delete mode 100644 test/silly/Makefile delete mode 100644 test/silly/Makefile.in delete mode 100644 test/silly/hello.c delete mode 100644 test/silly/tiny.c delete mode 100644 test/silly/tst-atomic-long.c delete mode 100644 test/silly/tst-atomic.c delete mode 100644 test/stat/Makefile delete mode 100644 test/stat/Makefile.in delete mode 100644 test/stat/memcmp-stat.c delete mode 100644 test/stat/stat-loop256.c delete mode 100644 test/stat/stat.c delete mode 100644 test/stat/stat64.c delete mode 100644 test/stdio/64bit.c delete mode 100644 test/stdio/Makefile delete mode 100644 test/stdio/Makefile.in delete mode 100644 test/stdio/fclose-loop.c delete mode 100644 test/stdio/lseek_no_lfs.c delete mode 100644 test/stdio/scanf_m.c delete mode 100644 test/stdio/tst-fmemopen.c delete mode 100644 test/stdlib/Makefile delete mode 100644 test/stdlib/Makefile.in delete mode 100644 test/stdlib/ptytest.c delete mode 100644 test/stdlib/qsort.c delete mode 100644 test/stdlib/test-canon.c delete mode 100644 test/stdlib/test-canon2.c delete mode 100644 test/stdlib/test-mkostemp-O_CLOEXEC.c delete mode 100644 test/stdlib/test-mkostemp-child.c delete mode 100644 test/stdlib/testarc4random.c delete mode 100644 test/stdlib/testatexit.c delete mode 100644 test/stdlib/teston_exit.c delete mode 100644 test/stdlib/teststrtol.c delete mode 100644 test/stdlib/teststrtoq.c delete mode 100644 test/string/Makefile delete mode 100644 test/string/Makefile.in delete mode 100644 test/string/bug-strcoll1.c delete mode 100644 test/string/bug-strncat1.c delete mode 100644 test/string/bug-strpbrk1.c delete mode 100644 test/string/bug-strspn1.c delete mode 100644 test/string/stratcliff.c delete mode 100644 test/string/test-ffs.c delete mode 100644 test/string/testcopy.c delete mode 100644 test/string/tester.c delete mode 100644 test/string/tst-bswap.c delete mode 100644 test/string/tst-inlcall.c delete mode 100644 test/string/tst-memmove.c delete mode 100644 test/string/tst-strlen.c delete mode 100644 test/string/tst-strtok.c delete mode 100644 test/string/tst-strxfrm.c delete mode 100644 test/termios/Makefile delete mode 100644 test/termios/termios.c delete mode 100644 test/test-skeleton.c delete mode 100644 test/testsuite.h delete mode 100644 test/time/Makefile delete mode 100644 test/time/Makefile.in delete mode 100644 test/time/bug-asctime.c delete mode 100644 test/time/bug-asctime_r.c delete mode 100644 test/time/clocktest.c delete mode 100644 test/time/test_time.c delete mode 100644 test/time/time.c delete mode 100644 test/time/tst-ctime.c delete mode 100644 test/time/tst-ftime_l.c delete mode 100644 test/time/tst-futimens1.c delete mode 100644 test/time/tst-mktime.c delete mode 100644 test/time/tst-mktime2.c delete mode 100644 test/time/tst-mktime3.c delete mode 100644 test/time/tst-posixtz.c delete mode 100644 test/time/tst-strftime.c delete mode 100644 test/time/tst-strptime.c delete mode 100644 test/time/tst-strptime2.c delete mode 100644 test/time/tst-timerfd.c delete mode 100644 test/time/tst-timezone.c delete mode 100644 test/time/tst_wcsftime.c delete mode 100644 test/tls/Makefile delete mode 100644 test/tls/Makefile.in delete mode 100644 test/tls/README delete mode 100644 test/tls/tls-macros-alpha.h delete mode 100644 test/tls/tls-macros-arc.h delete mode 100644 test/tls/tls-macros-arm.h delete mode 100644 test/tls/tls-macros-i386.h delete mode 100644 test/tls/tls-macros-ia64.h delete mode 100644 test/tls/tls-macros-metag.h delete mode 100644 test/tls/tls-macros-mips.h delete mode 100644 test/tls/tls-macros-powerpc.h delete mode 100644 test/tls/tls-macros-sh.h delete mode 100644 test/tls/tls-macros-sparc.h delete mode 100644 test/tls/tls-macros-thumb.h delete mode 100644 test/tls/tls-macros-x86_64.h delete mode 100644 test/tls/tls-macros-xtensa.h delete mode 100644 test/tls/tls-macros.h delete mode 100644 test/tls/tst-tls-at-ctor.c delete mode 100644 test/tls/tst-tls1-static.c delete mode 100644 test/tls/tst-tls1.c delete mode 100644 test/tls/tst-tls10.c delete mode 100644 test/tls/tst-tls10.h delete mode 100644 test/tls/tst-tls11.c delete mode 100644 test/tls/tst-tls12.c delete mode 100644 test/tls/tst-tls13.c delete mode 100644 test/tls/tst-tls14.c delete mode 100644 test/tls/tst-tls15.c delete mode 100644 test/tls/tst-tls16.c delete mode 100644 test/tls/tst-tls17.c delete mode 100644 test/tls/tst-tls18.c delete mode 100644 test/tls/tst-tls2-static.c delete mode 100644 test/tls/tst-tls2.c delete mode 100644 test/tls/tst-tls3.c delete mode 100644 test/tls/tst-tls4.c delete mode 100644 test/tls/tst-tls5.c delete mode 100644 test/tls/tst-tls6.c delete mode 100644 test/tls/tst-tls7.c delete mode 100644 test/tls/tst-tls8.c delete mode 100644 test/tls/tst-tls9-static.c delete mode 100644 test/tls/tst-tls9.c delete mode 100644 test/tls/tst-tlsmod-at-ctor.c delete mode 100644 test/tls/tst-tlsmod1.c delete mode 100644 test/tls/tst-tlsmod10.c delete mode 100644 test/tls/tst-tlsmod11.c delete mode 100644 test/tls/tst-tlsmod12.c delete mode 100644 test/tls/tst-tlsmod13.c delete mode 100644 test/tls/tst-tlsmod13a.c delete mode 100644 test/tls/tst-tlsmod14a.c delete mode 100644 test/tls/tst-tlsmod14b.c delete mode 100644 test/tls/tst-tlsmod15a.c delete mode 100644 test/tls/tst-tlsmod15b.c delete mode 100644 test/tls/tst-tlsmod16a.c delete mode 100644 test/tls/tst-tlsmod16b.c delete mode 100644 test/tls/tst-tlsmod17a.c delete mode 100644 test/tls/tst-tlsmod17b.c delete mode 100644 test/tls/tst-tlsmod18a.c delete mode 100644 test/tls/tst-tlsmod2.c delete mode 100644 test/tls/tst-tlsmod3.c delete mode 100644 test/tls/tst-tlsmod4.c delete mode 100644 test/tls/tst-tlsmod5.c delete mode 100644 test/tls/tst-tlsmod6.c delete mode 100644 test/tls/tst-tlsmod7.c delete mode 100644 test/tls/tst-tlsmod8.c delete mode 100644 test/tls/tst-tlsmod9.c delete mode 100644 test/uclibcng-testrunner.sh delete mode 100644 test/unistd/Makefile delete mode 100644 test/unistd/Makefile.in delete mode 100644 test/unistd/clone.c delete mode 100644 test/unistd/clone_cruft.h delete mode 100644 test/unistd/errno.c delete mode 100644 test/unistd/exec-null.c delete mode 100644 test/unistd/fork.c delete mode 100644 test/unistd/getcwd.c delete mode 100644 test/unistd/getopt.c delete mode 100644 test/unistd/getopt_long.c delete mode 100644 test/unistd/tst-fallocate.c delete mode 100644 test/unistd/tst-fallocate64.c delete mode 100755 test/unistd/tst-getconf.sh delete mode 100644 test/unistd/tst-posix_fallocate.c delete mode 100644 test/unistd/tst-posix_fallocate64.c delete mode 100644 test/unistd/tst-preadwrite.c delete mode 100644 test/unistd/tst-preadwrite64.c delete mode 100644 test/unistd/tst-pselect.c delete mode 100644 test/unistd/tstgetopt.c delete mode 100644 test/unistd/vfork.c diff --git a/Makefile.help b/Makefile.help index f6c762794..43f68a382 100644 --- a/Makefile.help +++ b/Makefile.help @@ -46,8 +46,6 @@ help: @echo ' install_hostutils - install host utilities' @echo @echo 'Development:' - @echo ' check - run testsuite' - @echo ' test_compile - compile testsuite binaries' @echo ' release - create a distribution tarball' @echo @echo 'Environment variables:' diff --git a/Makefile.in b/Makefile.in index 877a0b69d..76008a2a6 100644 --- a/Makefile.in +++ b/Makefile.in @@ -539,7 +539,6 @@ include_clean: clean: include_clean $(Q)$(RM) -r $(top_builddir)lib @$(MAKE) -C utils CLEAN_utils - +$(MAKE) -s -C test clean $(Q)$(RM) $(top_builddir)extra/scripts/unifdef $(Q)$(RM) -r $(LOCAL_INSTALL_PATH) @@ -556,15 +555,3 @@ dist release: cat ../uClibc-$(VERSION).tar | bzip2 -c9 > ../uClibc-$(VERSION).tar.bz2 cat ../uClibc-$(VERSION).tar | xz -e -c8 > ../uClibc-$(VERSION).tar.xz du -b ../uClibc-$(VERSION).tar.{bz2,xz} - -test check: test_compile - $(Q)$(MAKE) -C test \ - $(if $(O),top_builddir=$(O)/) - -test_compile: $(LOCAL_INSTALL_PATH) - $(Q)$(MAKE) -C test compile \ - $(if $(O),top_builddir=$(O)/) - -test_gen: $(LOCAL_INSTALL_PATH) - $(Q)$(MAKE) -C test gen \ - $(if $(O),top_builddir=$(O)/) diff --git a/Makerules b/Makerules index d35e40d38..e0784e1d0 100644 --- a/Makerules +++ b/Makerules @@ -7,7 +7,7 @@ PHONY := FORCE .PHONY: dummy $(PHONY) subdirs \ - all check test $(clean_targets) \ + all $(clean_targets) \ config dist menuconfig oldconfig release \ utils help diff --git a/docs/PORTING b/docs/PORTING index 2ffdeda28..d04f3b4f5 100644 --- a/docs/PORTING +++ b/docs/PORTING @@ -45,7 +45,7 @@ you are hacking on. version) if you wish to properly support shared libraries. - at this point, you should have enough to generate a working HELLO WORLD - static binary (see test/silly/*.c files) + static binary - if you want UCLIBC_CTOR_DTOR support, you will need to create crti.S and crtn.S files which define function prologues/epilogues. diff --git a/test/.gitignore b/test/.gitignore deleted file mode 100644 index 0d19285e9..000000000 --- a/test/.gitignore +++ /dev/null @@ -1,334 +0,0 @@ -# -# Never ignore these -# -!.gitignore -# -# Generated files -# -*.out -# -# Executable test -# -*_glibc -argp/argp-ex[1-4] -argp/argp-test -argp/bug-argp1 -argp/tst-argp[12] -args/arg_test -assert/assert -crypt/crypt -crypt/md5c-test -crypt/sha256c-test -crypt/sha512c-test -ctype/ctype -dlopen/dladdr -dlopen/dlafk -dlopen/dlstatic -dlopen/dltest -dlopen/dltest2 -dlopen/dlundef -dlopen/libafk.so -dlopen/libafk-temp.so -dlopen/libA.so -dlopen/libB.so -dlopen/libC.so -dlopen/libstatic.so -dlopen/libtest[123].so -dlopen/libtest.so -dlopen/libundef.so -dlopen/test[1-3] -dlopen/testscope -inet/bug-if1 -inet/gethost_r-align -inet/gethostid -inet/getnetent -inet/if_nameindex -inet/tst-aton -inet/tst-ether_aton -inet/tst-ethers -inet/tst-ethers-line -inet/tst-network -inet/tst-ntoa -inet/tst-res -inet/tst-sock-nonblock -librt/shmtest -locale/bug-iconv-trans -locale/bug-usesetlocale -locale/C -locale/collate-test -locale/dump-ctype -locale/gen-unicode-ctype -locale/show-ucs-data -locale/tst-digits -locale/tst-langinfo -locale/tst-mbswcs[1-6] -locale/tst_nl_langinfo -locale/tst-numeric -locale/tst-setlocale -locale/tst-sscanf -locale/tst-trans -locale/tst-wctype -locale/tst-xlocale1 -locale/tst-xlocale2 -locale/xfrm-test -locale-mbwc/tst_iswalnum -locale-mbwc/tst_iswalpha -locale-mbwc/tst_iswcntrl -locale-mbwc/tst_iswctype -locale-mbwc/tst_iswdigit -locale-mbwc/tst_iswgraph -locale-mbwc/tst_iswlower -locale-mbwc/tst_iswprint -locale-mbwc/tst_iswpunct -locale-mbwc/tst_iswspace -locale-mbwc/tst_iswupper -locale-mbwc/tst_iswxdigit -locale-mbwc/tst_mblen -locale-mbwc/tst_mbrlen -locale-mbwc/tst_mbrtowc -locale-mbwc/tst_mbsrtowcs -locale-mbwc/tst_mbstowcs -locale-mbwc/tst_mbtowc -locale-mbwc/tst_strcoll -locale-mbwc/tst_strxfrm -locale-mbwc/tst_swscanf -locale-mbwc/tst_towctrans -locale-mbwc/tst_towlower -locale-mbwc/tst_towupper -locale-mbwc/tst_wcrtomb -locale-mbwc/tst_wcscat -locale-mbwc/tst_wcschr -locale-mbwc/tst_wcscmp -locale-mbwc/tst_wcscoll -locale-mbwc/tst_wcscpy -locale-mbwc/tst_wcscspn -locale-mbwc/tst_wcslen -locale-mbwc/tst_wcsncat -locale-mbwc/tst_wcsncmp -locale-mbwc/tst_wcsncpy -locale-mbwc/tst_wcspbrk -locale-mbwc/tst_wcsrtombs -locale-mbwc/tst_wcsspn -locale-mbwc/tst_wcsstr -locale-mbwc/tst_wcstod -locale-mbwc/tst_wcstok -locale-mbwc/tst_wcstombs -locale-mbwc/tst_wcswidth -locale-mbwc/tst_wcsxfrm -locale-mbwc/tst_wctob -locale-mbwc/tst_wctomb -locale-mbwc/tst_wctrans -locale-mbwc/tst_wctype -locale-mbwc/tst_wcwidth -locale-mbwc/tst2_mbrtowc -malloc/malloc -malloc/mallocbug -malloc/malloc-standard-alignment -malloc/realloc0 -malloc/realloc-can-shrink -malloc/testmalloc -malloc/tst-[cmv]alloc -malloc/tst-mallocfork -malloc/tst-mcheck -malloc/tst-obstack -math/basic-test -math/compile_test -math/c99_test -math/ilogb -math/libm-test-ulps.h -math/libm-test.c -math/rint -math/signgam -math/test-double -math/test-ildoubl -math/test-ldouble -math/test-float -math/test-fpucw -math/test-idouble -math/test-ifloat -math/tst-definitions -misc/bug-glob2 -misc/bug-readdir1 -misc/dirent -misc/dirent64 -misc/fdopen -misc/opendir-tst1 -misc/popen -misc/seek -misc/sem -misc/stdarg -misc/tst-inotify -misc/tst-scandir -misc/tst-seekdir -misc/tst-statfs -misc/tst-statvfs -misc/tst-utmp -misc/tst-utmpx -mmap/mmap -mmap/mmap2 -mmap/mmap64 -nptl/tst-align -nptl/tst-align2 -nptl/tst-align3 -nptl/tst-atfork1 -nptl/tst-attr[1-3] -nptl/tst-barrier[1-4] -nptl/tst-basic[1-7] -nptl/tst-cancel[1-9] -nptl/tst-cancelx[2-4] -nptl/tst-cancelx[6-9] -nptl/tst-cancelx1[0-8] -nptl/tst-cancelx2[0-1] -nptl/tst-cancel[1-3][0-9] -nptl/tst-cleanup[0-4] -nptl/tst-cleanupx[0-4] -nptl/tst-clock -nptl/tst-clock[12] -nptl/tst-clock_nanosleep -nptl/tst-cond[1-9] -nptl/tst-cond[1-2][0-9] -nptl/tst-cpuclock[12] -nptl/tst-cputimer[1-3] -nptl/tst-detach1 -nptl/tst-dlsym1 -nptl/tst-eintr[1-5] -nptl/tst-exec[2-4] -nptl/tst-exit[1-3] -nptl/tst-fini1 -nptl/tst-fini1mod.so -nptl/tst-flock[1-2] -nptl/tst-fork[1-4] -nptl/tst-getpid[1-3] -nptl/tst-initializers1 -nptl/tst-initializers1-c[89]9 -nptl/tst-initializers1-gnu[89]9 -nptl/tst-join[1-6] -nptl/tst-key[1-4] -nptl/tst-kill[1-6] -nptl/tst-mqueue[1-9] -nptl/tst-mutex[1-9] -nptl/tst-mutex[57]a -nptl/tst-once[1-4] -nptl/tst-oncex[3-4] -nptl/tst-popen1 -nptl/tst-oddstacklimit -nptl/tst-raise1 -nptl/tst-rwlock[1-9] -nptl/tst-rwlock1[0-4] -nptl/tst-rwlock2a -nptl/tst-sched1 -nptl/tst-sem[1-9] -nptl/tst-sem1[0-2] -nptl/tst-signal[1-7] -nptl/tst-spin[1-3] -nptl/tst-stack[12] -nptl/tst-stdio[12] -nptl/tst-sysconf -nptl/tst-timer[2-5] -nptl/tst-tls[1-5] -nptl/tst-tls4mod.so -nptl/tst-tls?mod[a-f].so -nptl/tst-tls4modb.so -nptl/tst-tls[35]mod.so -nptl/tst-tls6.sh -nptl/tst-tsd[1-6] -nptl/tst-typesizes -nptl/tst-umask1 -nptl/tst-unload -nptl/tst-vfork[12]x -pthread/cancellation-points -pthread/ex[1-7] -pthread/tst-too-many-cleanups -pwd_grp/getgroups -pwd_grp/grcat -pwd_grp/pwcat -pwd_grp/test_grp -pwd_grp/test_pwd -regex/testregex -regex/tst-regex2 -regex/tst-regexloc -rpc/getrpcent -rpc/getrpcent_r -setjmp/bug269-setjmp -setjmp/jmpbug -setjmp/sigjmpbug -setjmp/tst-setjmp -setjmp/tst-vfork-longjmp -signal/sigchld -signal/signal -signal/tst-raise -signal/tst-signal -signal/tst-signalfd -signal/tst-sigset -signal/tst-sigsimple -silly/hello -silly/tiny -silly/tst-atomic -silly/tst-atomic-long -stat/memcmp-stat -stat/stat -stat/stat64 -stat/stat-loop256 -stdio/64bit -stdio/fclose-loop -stdlib/ptytest -stdlib/qsort -stdlib/testarc4random -stdlib/testatexit -stdlib/test-canon -stdlib/test-canon2 -stdlib/test-mkostemp-O_CLOEXEC -stdlib/test-mkostemp-child -stdlib/teston_exit -stdlib/teststrtol -stdlib/teststrtoq -string/bug-strcoll1 -string/bug-strncat1 -string/bug-strpbrk1 -string/bug-strspn1 -string/stratcliff -string/testcopy -string/tester -string/test-ffs -string/tst-bswap -string/tst-inlcall -string/tst-strlen -string/tst-strtok -string/tst-strxfrm -termios/termios -time/clocktest -time/test_time -time/tst-ctime -time/tst-ftime_l -time/tst-futimens1 -time/tst-mktime -time/tst-mktime3 -time/tst-strptime2 -time/tst-timerfd -time/tst_wcsftime -tls/tst-tls[1-9] -tls/tst-tls1[0-8] -tls/tst-tls-at-ctor -tls/tst-tlsmod[1-9].so -tls/tst-tlsmod1[0-9].so -tls/tst-tlsmod1[0-9][ab].so -tls/tst-tlsmod1[78]a[0-9].so -tls/tst-tlsmod1[78]a1[0-9].so -tls/tst-tlsmod-at-ctor.so -unistd/clone -unistd/errno -unistd/exec-null -unistd/fork -unistd/getconf -unistd/getconf.c -unistd/getcwd -unistd/getopt -unistd/getopt_long -unistd/tstgetopt -unistd/tst-fallocate -unistd/tst-fallocate64 -unistd/tst-posix_fallocate -unistd/tst-posix_fallocate64 -unistd/tst-preadwrite -unistd/tst-preadwrite64 -unistd/vfork diff --git a/test/Makefile b/test/Makefile deleted file mode 100644 index 532a43aab..000000000 --- a/test/Makefile +++ /dev/null @@ -1,91 +0,0 @@ -# Makefile for uClibc -# -# Copyright (C) 2000-2005 Erik Andersen -# -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. -# - -top_srcdir=../ -top_builddir=../ -include Rules.mak - -ALL_SUBDIRS := $(patsubst %/Makefile,%,$(wildcard */Makefile)) - -DIRS := $(ALL_SUBDIRS) -ifneq ($(HAVE_SHARED)$(UCLIBC_HAS_THREADS),yy) - DIRS := $(filter-out dlopen,$(DIRS)) -endif -ifneq ($(findstring -static,$(LDFLAGS)),) - DIRS := $(filter-out dlopen,$(DIRS)) -endif -ifneq ($(UCLIBC_HAS_THREADS)$(ARCH_USE_MMU),yy) - DIRS := $(filter-out pthread,$(DIRS)) -endif -ifneq ($(UCLIBC_HAS_FLOATS),y) - DIRS := $(filter-out math,$(DIRS)) -endif -ifneq ($(UCLIBC_HAS_FULL_RPC),y) - DIRS := $(filter-out rpc,$(DIRS)) -endif -ifneq ($(UCLIBC_HAS_REGEX),y) - DIRS := $(filter-out regex,$(DIRS)) -endif -ifneq ($(HAVE_SHARED)$(UCLIBC_HAS_THREADS_NATIVE),yy) - DIRS := $(filter-out tls nptl,$(DIRS)) -endif -ifneq ($(UCLIBC_HAS_WCHAR),y) - DIRS := $(filter-out locale-mbwc,$(DIRS)) -endif -ifneq ($(UCLIBC_HAS_LOCALE),y) - DIRS := $(filter-out locale,$(DIRS)) -endif -ifneq ($(UCLIBC_HAS_CRYPT_IMPL),y) - DIRS := $(filter-out crypt,$(DIRS)) -endif -ifeq ($(HAS_NO_THREADS),y) - DIRS := $(filter-out pthread,$(DIRS)) -endif -ifneq ($(UCLIBC_HAS_ARGP),y) - DIRS := $(filter-out argp,$(DIRS)) -endif - -test check all: run - -run: subdirs_run - -gen: - -rm -f $(top_builddir)/test/uclibcng-testrunner.in - $(MAKE) run UCLIBCNG_GENERATE_TESTRUNNER=1 - -compile: $(top_builddir)$(LOCAL_INSTALL_PATH) subdirs_compile - -$(top_builddir)$(LOCAL_INSTALL_PATH): - $(Q)$(MAKE) -C $(top_builddir) $(LOCAL_INSTALL_PATH) - -tags: - ctags -R - -clean: subdirs_clean - -subdirs: $(patsubst %, _dir_%, $(DIRS)) -subdirs_compile: $(patsubst %, _dircompile_%, $(DIRS)) -subdirs_run: $(patsubst %, _dirrun_%, $(DIRS)) -subdirs_clean: $(patsubst %, _dirclean_%, $(ALL_SUBDIRS)) - -$(patsubst %, _dir_%, $(DIRS)) : dummy - $(Q)$(MAKE) -C $(patsubst _dir_%, %, $@) \ - KCONFIG_CONFIG=$(KCONFIG_CONFIG) - -$(patsubst %, _dirrun_%, $(DIRS)) : dummy - $(Q)$(MAKE) -C $(patsubst _dirrun_%, %, $@) run \ - UCLIBCNG_TEST_SUBDIR=$(strip $(patsubst _dirrun_%, %, $@)) \ - KCONFIG_CONFIG=$(KCONFIG_CONFIG) - -$(patsubst %, _dircompile_%, $(DIRS)) : dummy - $(Q)$(MAKE) -C $(patsubst _dircompile_%, %, $@) compile \ - KCONFIG_CONFIG=$(KCONFIG_CONFIG) - -$(patsubst %, _dirclean_%, $(ALL_SUBDIRS)) : dummy - $(Q)$(MAKE) -C $(patsubst _dirclean_%, %, $@) clean - -.PHONY: all check clean dummy subdirs_compile subdirs_run subdirs subdirs_clean test run compile diff --git a/test/README b/test/README deleted file mode 100644 index 723ce6e43..000000000 --- a/test/README +++ /dev/null @@ -1,87 +0,0 @@ ------------ - For: User ------------ -Following make targets are avaialable - -make compile - -This will compile and link the tests. - -make run - -This will execute all the tests. - -make check -make all - -This will build and run tests. - -The following make variables may help you in testing: - - - UCLIBC_ONLY - only run tests against uClibc - - GLIBC_ONLY - only run tests against glibc - - V / VERBOSE - run tests with a lot of output - - TEST_INSTALLED_UCLIBC - Test installed libraries - under /lib and /usr/lib. - - TIMEOUTFACTOR=nn - increase test timeout nn times. - At least REGEX_OLD + regex/tst-regex2 needs it increased. - -So, to just run the uClibc tests, try this: -make check UCLIBC_ONLY=1 - -You can pass the following 2 environment variables to "make run": - - make run SIMULATOR_uclibc=qemu-sh4 SIMULATOR_glibc=qemu-x86_64 - -If you need to test just a subset of all test, delete subdirectories -you do not need. - -As of 2009-07, build machinery does not track dependencies on uclibc. -If you edit a header and re-run "make compile", it does not re-install it -into ../install_dir. If you delete ../install_dir, "make compile" -rebuilds uclibc as needed and re-installs ../install_dir, -but still does not rebuild testcases. -(You can work around it by "touch */*.c" for now). - ----------------- - For: Developer ----------------- - -The structure of this test system is: - test/ toplevel dir containing common test code - test/Rules.mak Common build code - test/Test.mak Runtime test make code - test/subdir/ code specific to a subsystem is stored in a subdir - test/subdir/Makefile.in describe the tests to run - test/subdir/Makefile test entry point, includes needed upper-level - makefiles plus Makefile.in - test/subdir/*.c the tests - -Each subdir has a Makefile (same for any subdir) that must include in strict order: - - the upper-level Rules.mak file - - the Makefile.in - - the upper-level Test.mak file -Makefile.in may be used to define the TESTS and TESTS_DISABLED variables. -If you do not, TESTS is built automatically based upon all the .c files in the subdir. -TESTS := foo -TESTS_DISABLED := bar -Each test must use a similar .c name; so the "foo" test needs a "foo.c". - -Additionally, the following options further control specific test behavior: -CFLAGS_foo := extra cflags to use to compile test -DODIFF_foo := compare the output of the glibc and uClibc tests (see below) -LDFLAGS_foo := extra ldflags to use to link test -OPTS_foo := extra options to pass to test -RET_foo := expected exit code of test; default is 0 -WRAPPER_foo := execute stuff just before test - -Or to control all tests in a subdir: -EXTRA_CLEAN := extra files to remove in the clean target -EXTRA_DIRS := extra directories to remove in the clean target -EXTRA_CFLAGS := -DFOO -EXTRA_LDFLAGS := -lpthread -OPTS := -WRAPPER := - -If you want to compare the output of a test with known good output, then just -create a local file named "foo.out.good" and the output generated by the test -"foo" will be automatically stored in "foo.out" and compared to "foo.out.good". diff --git a/test/Rules.mak b/test/Rules.mak deleted file mode 100644 index 9416a0cb4..000000000 --- a/test/Rules.mak +++ /dev/null @@ -1,165 +0,0 @@ -# Rules.mak for uClibc test subdirs -# -# Copyright (C) 2000-2006 Erik Andersen -# -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. -# - -.SUFFIXES: - -top_builddir ?= ../ -abs_top_builddir ?= $(shell cd $(top_builddir); pwd)/ - -TESTDIR=$(top_builddir)test/ - -include $(top_srcdir)Rules.mak -ifeq ($(filter $(clean_targets) CLEAN_%,$(MAKECMDGOALS)),) -ifeq ($(HAVE_DOT_CONFIG),) -$(error no HAVE_DOT_CONFIG, failed to read .config) -endif -endif - -ifdef UCLIBC_LDSO -ifeq (,$(findstring /,$(UCLIBC_LDSO))) -UCLIBC_LDSO := $(UCLIBC_LDSO) -else -UCLIBC_LDSO := $(notdir $(UCLIBC_LDSO)) -endif -else -UCLIBC_LDSO := $(notdir $(firstword $(wildcard $(top_builddir)lib/ld*))) -endif -ifndef TEST_INSTALLED_UCLIBC -ifeq ($(LDSO_SAFE_RUNPATH),y) -UCLIBC_PATH := $(abs_top_builddir)lib -else -UCLIBC_PATH := $(top_builddir)lib -endif -else -UCLIBC_PATH := $(RUNTIME_PREFIX)$(MULTILIB_DIR) -endif -#-------------------------------------------------------- -# Ensure consistent sort order, 'gcc -print-search-dirs' behavior, etc. -LC_ALL:= C -export LC_ALL - -ifeq ($(strip $(TARGET_ARCH)),) -TARGET_ARCH:=$(shell $(CC) -dumpmachine | sed -e s'/-.*//' \ - -e 's/i.86/i386/' \ - -e 's/sun.*/sparc/' -e 's/sparc.*/sparc/' \ - -e 's/sa110/arm/' -e 's/arm.*/arm/g' \ - -e 's/m68k.*/m68k/' \ - -e 's/parisc.*/hppa/' \ - -e 's/ppc/powerpc/g' \ - -e 's/sh[234]/sh/' \ - -e 's/mips.*/mips/' \ - -e 's/cris.*/cris/' \ - -e 's/xtensa.*/xtensa/' \ - ) -endif -export TARGET_ARCH - -RM_R = $(Q)$(RM) -r -LN_S = $(Q)$(LN) -fs - -ifneq ($(KERNEL_HEADERS),) -ifeq ($(patsubst /%,/,$(KERNEL_HEADERS)),/) -# Absolute path in KERNEL_HEADERS -KERNEL_INCLUDES += -I$(KERNEL_HEADERS) -else -# Relative path in KERNEL_HEADERS -KERNEL_INCLUDES += -I$(top_builddir)$(KERNEL_HEADERS) -endif -endif - -XCOMMON_CFLAGS := -I$(top_builddir)test -D_GNU_SOURCE -XWARNINGS += $(CFLAG_-Wstrict-prototypes) -CFLAGS := -nostdinc -I$(top_builddir)$(LOCAL_INSTALL_PATH)/usr/include -CFLAGS += $(XCOMMON_CFLAGS) $(KERNEL_INCLUDES) $(CC_INC) -CFLAGS += $(OPTIMIZATION) $(CPU_CFLAGS) $(XWARNINGS) - -$(eval $(call check-gcc-var,-Wno-missing-field-initializers)) -CFLAGS += $(CFLAG_-Wno-missing-field-initializers) - -# Can't add $(OPTIMIZATION) here, it may be target-specific. -# Just adding -Os for now. -HOST_CFLAGS += $(XCOMMON_CFLAGS) -Os $(XWARNINGS) -std=gnu99 - -LDFLAGS := $(CPU_LDFLAGS-y) -Wl,-z,now -ifeq ($(DODEBUG),y) - CFLAGS += -g - HOST_CFLAGS += -g - LDFLAGS += -Wl,-g - HOST_LDFLAGS += -Wl,-g -endif - -ifeq ($(DOSTRIP),y) - LDFLAGS += -Wl,-s - HOST_LDFLAGS += -Wl,-s -endif - -ifneq ($(HAVE_SHARED),y) - LDFLAGS += -Wl,-static -static-libgcc -endif - -ifndef TEST_INSTALLED_UCLIBC -LDFLAGS += -B$(UCLIBC_PATH) -Wl,-rpath,$(UCLIBC_PATH):$(shell pwd) -Wl,-rpath-link,$(UCLIBC_PATH):$(shell pwd) -else -LDFLAGS += -Wl,-rpath,$(shell pwd) -endif - -ifeq ($(findstring -static,$(LDFLAGS)),) -LDFLAGS += -Wl,--dynamic-linker,$(UCLIBC_PATH)/$(UCLIBC_LDSO) -endif - -ifeq ($(LDSO_GNU_HASH_SUPPORT),y) -# Check for binutils support is done on root Rules.mak -LDFLAGS += $(CFLAG_-Wl--hash-style=gnu) -endif - -ifneq ($(strip $(UCLIBC_EXTRA_CFLAGS)),"") -CFLAGS += $(call qstrip,$(UCLIBC_EXTRA_CFLAGS)) -endif -ifneq ($(strip $(UCLIBC_EXTRA_LDFLAGS)),"") -LDFLAGS += $(call qstrip,$(UCLIBC_EXTRA_LDFLAGS)) -endif - -ifneq ($(findstring -s,$(MAKEFLAGS)),) -DISP := sil -Q := @ -SCAT := -@true -else -ifneq ($(V)$(VERBOSE),) -DISP := ver -Q := -SCAT := cat -else -DISP := pur -Q := @ -SCAT := -@true -endif -endif -ifneq ($(Q),) -MAKEFLAGS += --no-print-directory -endif - -banner := --------------------------------- -pur_showclean = echo " "CLEAN $(notdir $(CURDIR)) -pur_showdiff = echo " "TEST_DIFF $(notdir $(CURDIR))/ -pur_showlink = echo " "TEST_LINK $(notdir $(CURDIR))/ $@ -pur_showtest = echo " "TEST_EXEC $(notdir $(CURDIR))/ $(@:.exe=) -sil_showclean = -sil_showdiff = true -sil_showlink = true -sil_showtest = true -ver_showclean = -ver_showdiff = true echo -ver_showlink = true echo -ver_showtest = printf "\n$(banner)\nTEST $(notdir $(CURDIR))/ $(@:.exe=)\n$(banner)\n" -do_showclean = $($(DISP)_showclean) -do_showdiff = $($(DISP)_showdiff) -do_showlink = $($(DISP)_showlink) -do_showtest = $($(DISP)_showtest) -showclean = @$(do_showclean) -showdiff = @$(do_showdiff) -showlink = @$(do_showlink) -showtest = @$(do_showtest) diff --git a/test/Test.mak b/test/Test.mak deleted file mode 100644 index c9b1f5a26..000000000 --- a/test/Test.mak +++ /dev/null @@ -1,155 +0,0 @@ -# Common makefile rules for tests -# -# Copyright (C) 2000-2006 Erik Andersen -# -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -shellescape='$(subst ','\'',$(1))' - -ifeq ($(TESTS),) -TESTS := $(patsubst %.c,%,$(wildcard *.c)) -endif -ifneq ($(TESTS_DISABLED),) -TESTS := $(filter-out $(TESTS_DISABLED),$(TESTS)) -endif -ifeq ($(SHELL_TESTS),) -SHELL_TESTS := $(patsubst %.sh,shell_%,$(wildcard *.sh)) -endif - -ifneq ($(filter-out test,$(strip $(TESTS))),$(strip $(TESTS))) -$(error Sanity check: cannot have a test named "test.c") -endif - -U_TARGETS := $(TESTS) -G_TARGETS := $(addsuffix _glibc,$(U_TARGETS)) - -ifneq ($(GLIBC_TESTS_DISABLED),) -G_TARGETS := $(filter-out $(GLIBC_TESTS_DISABLED),$(G_TARGETS)) -endif - -ifeq ($(GLIBC_ONLY),) -TARGETS += $(U_TARGETS) -endif -ifeq ($(UCLIBC_ONLY),) -TARGETS += $(G_TARGETS) -endif - -CLEAN_TARGETS := $(U_TARGETS) $(G_TARGETS) -CLEAN_TARGETS += $(TESTS_DISABLED) $(addsuffix _glibc,$(TESTS_DISABLED)) $(GLIBC_TESTS_DISABLED) -COMPILE_TARGETS := $(TARGETS) -# We sort the targets so uClibc and host-libc tests are run adjacent -RUN_TARGETS := $(sort $(addsuffix .exe,$(TARGETS))) -COMPILE_TARGETS := $(sort $(COMPILE_TARGETS)) -# provide build rules even for disabled tests: -U_TARGETS += $(TESTS_DISABLED) -G_TARGETS += $(addsuffix _glibc,$(TESTS_DISABLED)) $(GLIBC_TESTS_DISABLED) -TARGETS += $(SHELL_TESTS) -CFLAGS += $(CFLAGS_$(notdir $(CURDIR))) -ifeq (1,$(UCLIBCNG_GENERATE_TESTRUNNER)) -UCLIBCNG_TEST_SUBDIR ?= $(patsubst $(realpath $(TESTDIR))/%,%,$(CURDIR)) -endif - -define binary_name -$(patsubst %.exe,%,$@) -endef -define tst_src_name -$(patsubst %_glibc,%,$(binary_name)) -endef - -define diff_test - $(Q)\ - for x in "$(binary_name).out" "$(tst_src_name).out" ; do \ - test -e "$$x.good" && $(do_showdiff) "$(binary_name).out" "$$x.good" && exec diff -u "$(binary_name).out" "$$x.good" ; \ - done ; \ - true -endef -define uclibc_glibc_diff_test - $(Q)\ - test -z "$(DODIFF_$(tst_src_name))" && exec true ; \ - uclibc_out="$(binary_name).out" ; \ - glibc_out="$(tst_src_name).out" ; \ - $(do_showdiff) $$uclibc_out $$glibc_out ; \ - exec diff -u "$$uclibc_out" "$$glibc_out" -endef -define exec_test - $(showtest) - $(Q)\ - $(SIMULATOR) $(WRAPPER) $(WRAPPER_$(tst_src_name)) \ - ./$(binary_name) $(OPTS) $(OPTS_$(tst_src_name)) > "$(binary_name).out" 2>&1 ; \ - ret=$$? ; \ - expected_ret="$(RET_$(tst_src_name))" ; \ - test -z "$$expected_ret" && export expected_ret=0 ; \ - if ! test $$ret -eq $$expected_ret ; then \ - echo "ret == $$ret ; expected_ret == $$expected_ret" ; \ - echo "The output of the failed test is:"; \ - cat "$(binary_name).out"; \ - exit 1 ; \ - fi - $(SCAT) "$(binary_name).out" -endef - -test check all: run -run: $(RUN_TARGETS) - -$(addsuffix .exe,$(U_TARGETS)): SIMULATOR:=$(SIMULATOR_uclibc) -$(addsuffix .exe,$(G_TARGETS)): SIMULATOR:=$(SIMULATOR_glibc) -$(RUN_TARGETS): -ifeq (1,$(UCLIBCNG_GENERATE_TESTRUNNER)) - $(Q)\ - expected_ret="$(RET_$(tst_src_name))"; echo \ - "$${expected_ret:-0}" \ - $(call shellescape,$(tst_src_name)) \ - $(call shellescape,$(binary_name)) \ - $(call shellescape,$(UCLIBCNG_TEST_SUBDIR)) \ - $(call shellescape,$(WRAPPER) $(WRAPPER_$(tst_src_name)) ./$(binary_name) $(OPTS) $(OPTS_$(tst_src_name))) \ - >>$(top_builddir)/test/uclibcng-testrunner.in -else - $(exec_test) - $(diff_test) -ifeq ($(UCLIBC_ONLY),) - $(uclibc_glibc_diff_test) -endif -endif - -compile: $(COMPILE_TARGETS) - -G_TARGET_SRCS := $(addsuffix .c,$(G_TARGETS)) -U_TARGET_SRCS := $(addsuffix .c,$(U_TARGETS)) - -MAKE_SRCS := $(wildcard Makefile.in) $(TESTDIR)Makefile $(TESTDIR)Rules.mak $(TESTDIR)Test.mak - -$(U_TARGETS): $(U_TARGET_SRCS) $(MAKE_SRCS) - $(showlink) - $(Q)$(CC) $(filter-out $(CFLAGS-OMIT-$@),$(CFLAGS)) $(EXTRA_CFLAGS) $(CFLAGS_$(notdir $(CURDIR))) $(CFLAGS_$@) -c $@.c -o $@.o - $(Q)$(CC) $(filter-out $(LDFLAGS-OMIT-$@),$(LDFLAGS)) $@.o -o $@ $(EXTRA_LDFLAGS) $(LDFLAGS_$@) - -$(G_TARGETS): $(U_TARGET_SRCS) $(MAKE_SRCS) - $(showlink) - $(Q)$(HOSTCC) $(filter-out $(HOST_CFLAGS-OMIT-$(patsubst %_glibc,%,$@)),$(HOST_CFLAGS)) \ - $(CFLAGS_$(notdir $(CURDIR))) $(CFLAGS_$(patsubst %_glibc,%,$@)) \ - -c $(patsubst %_glibc,%,$@).c -o $@.o - $(Q)$(HOSTCC) $(filter-out $(LDFLAGS-OMIT-$(patsubst %_glibc,%,$@)),$(HOST_LDFLAGS)) \ - $@.o -o $@ $(EXTRA_LDFLAGS) $(LDFLAGS_$(patsubst %_glibc,%,$@)) $(LDFLAGS_$@) - - -shell_%: - $(showtest) - $(Q)$(if $(PRE_RUN_$(@)),$(PRE_RUN_$(@))) - $(Q)$(SHELL) $(patsubst shell_%,%.sh,$(binary_name)) - $(Q)$(if $(POST_RUN_$(@)),$(POST_RUN_$(@))) - -%.so: %.c - $(showlink) - $(Q)$(CC) \ - $(filter-out $(CFLAGS-OMIT-$<),$(CFLAGS)) $(EXTRA_CFLAGS) \ - $(CFLAGS_$(patsubst %_glibc,%,$@)) \ - -fPIC -shared $< -o $@ -Wl,-soname,$@ \ - $(filter-out $(LDFLAGS-OMIT-$<),$(LDFLAGS)) $(EXTRA_LIBS) \ - $(LDFLAGS_$(patsubst %_glibc,%,$@)) - -clean: - $(showclean) - $(Q)$(RM) *.a *.o *.so *~ core *.out *.gdb $(CLEAN_TARGETS) $(EXTRA_CLEAN) - $(Q)$(RM_R) $(EXTRA_DIRS) - -.PHONY: all check clean test run compile diff --git a/test/argp/Makefile b/test/argp/Makefile deleted file mode 100644 index fcb5a8328..000000000 --- a/test/argp/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc argp tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/argp/Makefile.in b/test/argp/Makefile.in deleted file mode 100644 index c47296434..000000000 --- a/test/argp/Makefile.in +++ /dev/null @@ -1,10 +0,0 @@ -# uClibc argp tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -TESTS := $(addprefix argp-, ex1 ex2 ex3 ex4 test) \ - bug-argp1 tst-argp1 tst-argp2 - -OPTS_argp-ex3 = ARG1 ARG2 -OPTS_argp-ex4 = ARG1 string1 string2 string3 -OPTS_bug-argp1 = -- --help - diff --git a/test/argp/argp-ex1.c b/test/argp/argp-ex1.c deleted file mode 100644 index 7bb5f2241..000000000 --- a/test/argp/argp-ex1.c +++ /dev/null @@ -1,15 +0,0 @@ -/* Argp example #1 -- a minimal program using argp */ - -/* This is (probably) the smallest possible program that - uses argp. It won't do much except give an error - messages and exit when there are any arguments, and print - a (rather pointless) messages for --help. */ - -#include -#include - -int main (int argc, char **argv) -{ - argp_parse (0, argc, argv, 0, 0, 0); - exit (0); -} diff --git a/test/argp/argp-ex2.c b/test/argp/argp-ex2.c deleted file mode 100644 index c49fbaca9..000000000 --- a/test/argp/argp-ex2.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Argp example #2 -- a pretty minimal program using argp */ - -/* This program doesn't use any options or arguments, but uses - argp to be compliant with the GNU standard command line - format. - - In addition to making sure no arguments are given, and - implementing a --help option, this example will have a - --version option, and will put the given documentation string - and bug address in the --help output, as per GNU standards. - - The variable ARGP contains the argument parser specification; - adding fields to this structure is the way most parameters are - passed to argp_parse (the first three fields are usually used, - but not in this small program). There are also two global - variables that argp knows about defined here, - ARGP_PROGRAM_VERSION and ARGP_PROGRAM_BUG_ADDRESS (they are - global variables because they will almost always be constant - for a given program, even if it uses different argument - parsers for various tasks). */ - -#include -#include - -const char *argp_program_version = - "argp-ex2 1.0"; -const char *argp_program_bug_address = - ""; - -/* Program documentation. */ -static char doc[] = - "Argp example #2 -- a pretty minimal program using argp"; - -/* Our argument parser. The @code{options}, @code{parser}, and - @code{args_doc} fields are zero because we have neither options or - arguments; @code{doc} and @code{argp_program_bug_address} will be - used in the output for @samp{--help}, and the @samp{--version} - option will print out @code{argp_program_version}. */ -static struct argp argp = { 0, 0, 0, doc }; - -int main (int argc, char **argv) -{ - argp_parse (&argp, argc, argv, 0, 0, 0); - exit (0); -} diff --git a/test/argp/argp-ex3.c b/test/argp/argp-ex3.c deleted file mode 100644 index 24d5c501a..000000000 --- a/test/argp/argp-ex3.c +++ /dev/null @@ -1,153 +0,0 @@ -/* Argp example #3 -- a program with options and arguments using argp */ - -/* This program uses the same features as example 2, and uses options and - arguments. - - We now use the first four fields in ARGP, so here's a description of them: - OPTIONS -- A pointer to a vector of struct argp_option (see below) - PARSER -- A function to parse a single option, called by argp - ARGS_DOC -- A string describing how the non-option arguments should look - DOC -- A descriptive string about this program; if it contains a - vertical tab character (\v), the part after it will be - printed *following* the options - - The function PARSER takes the following arguments: - KEY -- An integer specifying which option this is (taken - from the KEY field in each struct argp_option), or - a special key specifying something else; the only - special keys we use here are ARGP_KEY_ARG, meaning - a non-option argument, and ARGP_KEY_END, meaning - that all arguments have been parsed - ARG -- For an option KEY, the string value of its - argument, or NULL if it has none - STATE-- A pointer to a struct argp_state, containing - various useful information about the parsing state; used here - are the INPUT field, which reflects the INPUT argument to - argp_parse, and the ARG_NUM field, which is the number of the - current non-option argument being parsed - It should return either 0, meaning success, ARGP_ERR_UNKNOWN, meaning the - given KEY wasn't recognized, or an errno value indicating some other - error. - - Note that in this example, main uses a structure to communicate with the - parse_opt function, a pointer to which it passes in the INPUT argument to - argp_parse. Of course, it's also possible to use global variables - instead, but this is somewhat more flexible. - - The OPTIONS field contains a pointer to a vector of struct argp_option's; - that structure has the following fields (if you assign your option - structures using array initialization like this example, unspecified - fields will be defaulted to 0, and need not be specified): - NAME -- The name of this option's long option (may be zero) - KEY -- The KEY to pass to the PARSER function when parsing this option, - *and* the name of this option's short option, if it is a - printable ascii character - ARG -- The name of this option's argument, if any - FLAGS -- Flags describing this option; some of them are: - OPTION_ARG_OPTIONAL -- The argument to this option is optional - OPTION_ALIAS -- This option is an alias for the - previous option - OPTION_HIDDEN -- Don't show this option in --help output - DOC -- A documentation string for this option, shown in --help output - - An options vector should be terminated by an option with all fields zero. */ - -#include -#include - -const char *argp_program_version = - "argp-ex3 1.0"; -const char *argp_program_bug_address = - ""; - -/* Program documentation. */ -static char doc[] = - "Argp example #3 -- a program with options and arguments using argp"; - -/* A description of the arguments we accept. */ -static char args_doc[] = "ARG1 ARG2"; - -/* The options we understand. */ -static struct argp_option options[] = { - {"verbose", 'v', 0, 0, "Produce verbose output" }, - {"quiet", 'q', 0, 0, "Don't produce any output" }, - {"silent", 's', 0, OPTION_ALIAS }, - {"output", 'o', "FILE", 0, - "Output to FILE instead of standard output" }, - { 0 } -}; - -/* Used by @code{main} to communicate with @code{parse_opt}. */ -struct arguments -{ - char *args[2]; /* @var{arg1} & @var{arg2} */ - int silent, verbose; - char *output_file; -}; - -/* Parse a single option. */ -static error_t -parse_opt (int key, char *arg, struct argp_state *state) -{ - /* Get the @var{input} argument from @code{argp_parse}, which we - know is a pointer to our arguments structure. */ - struct arguments *arguments = state->input; - - switch (key) - { - case 'q': case 's': - arguments->silent = 1; - break; - case 'v': - arguments->verbose = 1; - break; - case 'o': - arguments->output_file = arg; - break; - - case ARGP_KEY_ARG: - if (state->arg_num >= 2) - /* Too many arguments. */ - argp_usage (state); - - arguments->args[state->arg_num] = arg; - - break; - - case ARGP_KEY_END: - if (state->arg_num < 2) - /* Not enough arguments. */ - argp_usage (state); - break; - - default: - return ARGP_ERR_UNKNOWN; - } - return 0; -} - -/* Our argp parser. */ -static struct argp argp = { options, parse_opt, args_doc, doc }; - -int main (int argc, char **argv) -{ - struct arguments arguments; - - /* Default values. */ - arguments.silent = 0; - arguments.verbose = 0; - arguments.output_file = "-"; - - /* Parse our arguments; every option seen by @code{parse_opt} will - be reflected in @code{arguments}. */ - argp_parse (&argp, argc, argv, 0, 0, &arguments); - - printf ("ARG1 = %s\nARG2 = %s\nOUTPUT_FILE = %s\n" - "VERBOSE = %s\nSILENT = %s\n", - arguments.args[0], arguments.args[1], - arguments.output_file, - arguments.verbose ? "yes" : "no", - arguments.silent ? "yes" : "no"); - - exit (0); -} diff --git a/test/argp/argp-ex4.c b/test/argp/argp-ex4.c deleted file mode 100644 index c77c7ef02..000000000 --- a/test/argp/argp-ex4.c +++ /dev/null @@ -1,167 +0,0 @@ -/* Argp example #4 -- a program with somewhat more complicated options */ - -/* This program uses the same features as example 3, but has more - options, and somewhat more structure in the -help output. It - also shows how you can `steal' the remainder of the input - arguments past a certain point, for programs that accept a - list of items. It also shows the special argp KEY value - ARGP_KEY_NO_ARGS, which is only given if no non-option - arguments were supplied to the program. - - For structuring the help output, two features are used, - *headers* which are entries in the options vector with the - first four fields being zero, and a two part documentation - string (in the variable DOC), which allows documentation both - before and after the options; the two parts of DOC are - separated by a vertical-tab character ('\v', or '\013'). By - convention, the documentation before the options is just a - short string saying what the program does, and that afterwards - is longer, describing the behavior in more detail. All - documentation strings are automatically filled for output, - although newlines may be included to force a line break at a - particular point. All documentation strings are also passed to - the `gettext' function, for possible translation into the - current locale. */ - -#include -#include -#include - -const char *argp_program_version = - "argp-ex4 1.0"; -const char *argp_program_bug_address = - ""; - -/* Program documentation. */ -static char doc[] = - "Argp example #4 -- a program with somewhat more complicated\ -options\ -\vThis part of the documentation comes *after* the options;\ - note that the text is automatically filled, but it's possible\ - to force a line-break, e.g.\n<-- here."; - -/* A description of the arguments we accept. */ -static char args_doc[] = "ARG1 [STRING...]"; - -/* Keys for options without short-options. */ -#define OPT_ABORT 1 /* --abort */ - -/* The options we understand. */ -static struct argp_option options[] = { - {"verbose", 'v', 0, 0, "Produce verbose output" }, - {"quiet", 'q', 0, 0, "Don't produce any output" }, - {"silent", 's', 0, OPTION_ALIAS }, - {"output", 'o', "FILE", 0, - "Output to FILE instead of standard output" }, - - {0,0,0,0, "The following options should be grouped together:" }, - {"repeat", 'r', "COUNT", OPTION_ARG_OPTIONAL, - "Repeat the output COUNT (default 10) times"}, - {"abort", OPT_ABORT, 0, 0, "Abort before showing any output"}, - - { 0 } -}; - -/* Used by @code{main} to communicate with @code{parse_opt}. */ -struct arguments -{ - char *arg1; /* @var{arg1} */ - char **strings; /* [@var{string}@dots{}] */ - int silent, verbose, abort; /* @samp{-s}, @samp{-v}, @samp{--abort} */ - char *output_file; /* @var{file} arg to @samp{--output} */ - int repeat_count; /* @var{count} arg to @samp{--repeat} */ -}; - -/* Parse a single option. */ -static error_t -parse_opt (int key, char *arg, struct argp_state *state) -{ - /* Get the @code{input} argument from @code{argp_parse}, which we - know is a pointer to our arguments structure. */ - struct arguments *arguments = state->input; - - switch (key) - { - case 'q': case 's': - arguments->silent = 1; - break; - case 'v': - arguments->verbose = 1; - break; - case 'o': - arguments->output_file = arg; - break; - case 'r': - arguments->repeat_count = arg ? atoi (arg) : 10; - break; - case OPT_ABORT: - arguments->abort = 1; - break; - - case ARGP_KEY_NO_ARGS: - argp_usage (state); - - case ARGP_KEY_ARG: - /* Here we know that @code{state->arg_num == 0}, since we - force argument parsing to end before any more arguments can - get here. */ - arguments->arg1 = arg; - - /* Now we consume all the rest of the arguments. - @code{state->next} is the index in @code{state->argv} of the - next argument to be parsed, which is the first @var{string} - we're interested in, so we can just use - @code{&state->argv[state->next]} as the value for - arguments->strings. - - @emph{In addition}, by setting @code{state->next} to the end - of the arguments, we can force argp to stop parsing here and - return. */ - arguments->strings = &state->argv[state->next]; - state->next = state->argc; - - break; - - default: - return ARGP_ERR_UNKNOWN; - } - return 0; -} - -/* Our argp parser. */ -static struct argp argp = { options, parse_opt, args_doc, doc }; - -int main (int argc, char **argv) -{ - int i, j; - struct arguments arguments; - - /* Default values. */ - arguments.silent = 0; - arguments.verbose = 0; - arguments.output_file = "-"; - arguments.repeat_count = 1; - arguments.abort = 0; - - /* Parse our arguments; every option seen by @code{parse_opt} will be - reflected in @code{arguments}. */ - argp_parse (&argp, argc, argv, 0, 0, &arguments); - - if (arguments.abort) - error (10, 0, "ABORTED"); - - for (i = 0; i < arguments.repeat_count; i++) - { - printf ("ARG1 = %s\n", arguments.arg1); - printf ("STRINGS = "); - for (j = 0; arguments.strings[j]; j++) - printf (j == 0 ? "%s" : ", %s", arguments.strings[j]); - printf ("\n"); - printf ("OUTPUT_FILE = %s\nVERBOSE = %s\nSILENT = %s\n", - arguments.output_file, - arguments.verbose ? "yes" : "no", - arguments.silent ? "yes" : "no"); - } - - exit (0); -} diff --git a/test/argp/argp-test.c b/test/argp/argp-test.c deleted file mode 100644 index 2e0c74972..000000000 --- a/test/argp/argp-test.c +++ /dev/null @@ -1,208 +0,0 @@ -/* Test program for argp argument parser - Copyright (C) 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Written by Miles Bader . - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; see the file COPYING.LIB. If - not, see .  */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include -#include - -const char *argp_program_version = "argp-test 1.0"; - -struct argp_option sub_options[] = -{ - {"subopt1", 's', 0, 0, "Nested option 1"}, - {"subopt2", 'S', 0, 0, "Nested option 2"}, - - { 0, 0, 0, 0, "Some more nested options:", 10}, - {"subopt3", 'p', 0, 0, "Nested option 3"}, - - {"subopt4", 'q', 0, 0, "Nested option 4", 1}, - - {0} -}; - -static const char sub_args_doc[] = "STRING...\n-"; -static const char sub_doc[] = "\vThis is the doc string from the sub-arg-parser."; - -static error_t -sub_parse_opt (int key, char *arg, struct argp_state *state) -{ - switch (key) - { - case ARGP_KEY_NO_ARGS: - printf ("NO SUB ARGS\n"); - break; - case ARGP_KEY_ARG: - printf ("SUB ARG: %s\n", arg); - break; - - case 's' : case 'S': case 'p': case 'q': - printf ("SUB KEY %c\n", key); - break; - - default: - return ARGP_ERR_UNKNOWN; - } - return 0; -} - -static char * -sub_help_filter (int key, const char *text, void *input) -{ - if (key == ARGP_KEY_HELP_EXTRA) - return strdup ("This is some extra text from the sub parser (note that it \ -is preceded by a blank line)."); - else - return (char *)text; -} - -static struct argp sub_argp = { - sub_options, sub_parse_opt, sub_args_doc, sub_doc, 0, sub_help_filter -}; - -/* Structure used to communicate with the parsing functions. */ -struct params -{ - unsigned foonly; /* Value parsed for foonly. */ - unsigned foonly_default; /* Default value for it. */ -}; - -#define OPT_PGRP 1 -#define OPT_SESS 2 - -struct argp_option options[] = -{ - {"pid", 'p', "PID", 0, "List the process PID"}, - {"pgrp", OPT_PGRP,"PGRP",0, "List processes in the process group PGRP"}, - {"no-parent", 'P', 0, 0, "Include processes without parents"}, - {0, 'x', 0, OPTION_ALIAS}, - {"all-fields",'Q', 0, 0, "Don't elide unusable fields (normally" - " if there's some reason ps can't" - " print a field for any process, it's" - " removed from the output entirely)" }, - {"reverse", 'r', 0, 0, "Reverse the order of any sort"}, - {"gratuitously-long-reverse-option", 0, 0, OPTION_ALIAS}, - {"session", OPT_SESS,"SID", OPTION_ARG_OPTIONAL, - "Add the processes from the session" - " SID (which defaults to the sid of" - " the current process)" }, - - {0,0,0,0, "Here are some more options:"}, - {"foonly", 'f', "ZOT", OPTION_ARG_OPTIONAL, "Glork a foonly"}, - {"zaza", 'z', 0, 0, "Snit a zar"}, - - {0} -}; - -static const char args_doc[] = "STRING"; -static const char doc[] = "Test program for argp." - "\vThis doc string comes after the options." - "\nHey! Some manual formatting!" - "\nThe current time is: %s"; - -static void -popt (int key, char *arg) -{ - char buf[10]; - if (isprint (key)) - sprintf (buf, "%c", key); - else - sprintf (buf, "%d", key); - if (arg) - printf ("KEY %s: %s\n", buf, arg); - else - printf ("KEY %s\n", buf); -} - -static error_t -parse_opt (int key, char *arg, struct argp_state *state) -{ - struct params *params = state->input; - - switch (key) - { - case ARGP_KEY_NO_ARGS: - printf ("NO ARGS\n"); - break; - - case ARGP_KEY_ARG: - if (state->arg_num > 0) - return ARGP_ERR_UNKNOWN; /* Leave it for the sub-arg parser. */ - printf ("ARG: %s\n", arg); - break; - - case 'f': - if (arg) - params->foonly = atoi (arg); - else - params->foonly = params->foonly_default; - popt (key, arg); - break; - - case 'p': case 'P': case OPT_PGRP: case 'x': case 'Q': - case 'r': case OPT_SESS: case 'z': - popt (key, arg); - break; - - default: - return ARGP_ERR_UNKNOWN; - } - return 0; -} - -static char * -help_filter (int key, const char *text, void *input) -{ - char *new_text; - struct params *params = input; - - if (key == ARGP_KEY_HELP_POST_DOC && text) - { - time_t now = time (0); - asprintf (&new_text, text, ctime (&now)); - } - else if (key == 'f') - /* Show the default for the --foonly option. */ - asprintf (&new_text, "%s (ZOT defaults to %x)", - text, params->foonly_default); - else - new_text = (char *)text; - - return new_text; -} - -static struct argp_child argp_children[] = { { &sub_argp }, { 0 } }; -static struct argp argp = { - options, parse_opt, args_doc, doc, argp_children, help_filter -}; - -int -main (int argc, char **argv) -{ - struct params params; - params.foonly = 0; - params.foonly_default = random (); - argp_parse (&argp, argc, argv, 0, 0, ¶ms); - printf ("After parsing: foonly = %x\n", params.foonly); - return 0; -} diff --git a/test/argp/bug-argp1.c b/test/argp/bug-argp1.c deleted file mode 100644 index a28cf4b9c..000000000 --- a/test/argp/bug-argp1.c +++ /dev/null @@ -1,26 +0,0 @@ -#include - - -static const struct argp_option test_options[] = -{ - { NULL, 'a', NULL, OPTION_DOC, NULL }, - { NULL, 'b', NULL, OPTION_DOC, NULL }, - { NULL, 0, NULL, 0, NULL } -}; - -static struct argp test_argp = -{ - test_options -}; - - -static int -do_test (int argc, char *argv[]) -{ - int i; - argp_parse (&test_argp, argc, argv, 0, &i, NULL); - return 0; -} - -#define TEST_FUNCTION do_test (argc, argv) -#include "../test-skeleton.c" diff --git a/test/argp/tst-argp1.c b/test/argp/tst-argp1.c deleted file mode 100644 index 912e0cb4b..000000000 --- a/test/argp/tst-argp1.c +++ /dev/null @@ -1,117 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; see the file COPYING.LIB. If - not, see .  */ - -#include - - - - -#define OPT_TO_THREAD 300 -#define OPT_TO_PROCESS 301 -#define OPT_SYNC_SIGNAL 302 -#define OPT_SYNC_JOIN 303 -#define OPT_TOPLEVEL 304 - - -static const struct argp_option test_options[] = - { - { NULL, 0, NULL, 0, "\ -This is a test for threads so we allow ther user to selection the number of \ -threads which are used at any one time. Independently the total number of \ -rounds can be selected. This is the total number of threads which will have \ -run when the process terminates:" }, - { "threads", 't', "NUMBER", 0, "Number of threads used at once" }, - { "starts", 's', "NUMBER", 0, "Total number of working threads" }, - { "toplevel", OPT_TOPLEVEL, "NUMBER", 0, - "Number of toplevel threads which start the other threads; this \ -implies --sync-join" }, - - { NULL, 0, NULL, 0, "\ -Each thread can do one of two things: sleep or do work. The latter is 100% \ -CPU bound. The work load is the probability a thread does work. All values \ -from zero to 100 (inclusive) are valid. How often each thread repeats this \ -can be determined by the number of rounds. The work cost determines how long \ -each work session (not sleeping) takes. If it is zero a thread would \ -effectively nothing. By setting the number of rounds to zero the thread \ -does no work at all and pure thread creation times can be measured." }, - { "workload", 'w', "PERCENT", 0, "Percentage of time spent working" }, - { "workcost", 'c', "NUMBER", 0, - "Factor in the cost of each round of working" }, - { "rounds", 'r', "NUMBER", 0, "Number of rounds each thread runs" }, - - { NULL, 0, NULL, 0, "\ -There are a number of different methods how thread creation can be \ -synchronized. Synchronization is necessary since the number of concurrently \ -running threads is limited." }, - { "sync-signal", OPT_SYNC_SIGNAL, NULL, 0, - "Synchronize using a signal (default)" }, - { "sync-join", OPT_SYNC_JOIN, NULL, 0, "Synchronize using pthread_join" }, - - { NULL, 0, NULL, 0, "\ -One parameter for each threads execution is the size of the stack. If this \ -parameter is not used the system's default stack size is used. If many \ -threads are used the stack size should be chosen quite small." }, - { "stacksize", 'S', "BYTES", 0, "Size of threads stack" }, - { "guardsize", 'g', "BYTES", 0, - "Size of stack guard area; must fit into the stack" }, - - { NULL, 0, NULL, 0, "Signal options:" }, - { "to-thread", OPT_TO_THREAD, NULL, 0, "Send signal to main thread" }, - { "to-process", OPT_TO_PROCESS, NULL, 0, - "Send signal to process (default)" }, - - { NULL, 0, NULL, 0, "Administrative options:" }, - { "progress", 'p', NULL, 0, "Show signs of progress" }, - { "timing", 'T', NULL, 0, - "Measure time from startup to the last thread finishing" }, - { NULL, 0, NULL, 0, NULL } - }; - -/* Prototype for option handler. */ -static error_t parse_opt (int key, char *arg, struct argp_state *state); - -/* Data structure to communicate with argp functions. */ -static struct argp argp = -{ - test_options, parse_opt -}; - - -static int -do_test (void) -{ - int argc = 2; - char *argv[3] = { (char *) "tst-argp1", (char *) "--help", NULL }; - int remaining; - - /* Parse and process arguments. */ - argp_parse (&argp, argc, argv, 0, &remaining, NULL); - - return 0; -} - - -/* Handle program arguments. */ -static error_t -parse_opt (int key, char *arg, struct argp_state *state) -{ - return ARGP_ERR_UNKNOWN; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/argp/tst-argp2.c b/test/argp/tst-argp2.c deleted file mode 100644 index 03afc0b9e..000000000 --- a/test/argp/tst-argp2.c +++ /dev/null @@ -1,100 +0,0 @@ -/* Copyright (C) 2007 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2007. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; see the file COPYING.LIB. If - not, see .  */ - -#include - -static const struct argp_option opt1[] = - { - { "opt1", '1', "NUMBER", 0, "Option 1" }, - { NULL, 0, NULL, 0, NULL } - }; - -static const struct argp_option opt2[] = - { - { "opt2", '2', "NUMBER", 0, "Option 2" }, - { NULL, 0, NULL, 0, NULL } - }; - -static const struct argp_option opt3[] = - { - { "opt3", '3', "NUMBER", 0, "Option 3" }, - { NULL, 0, NULL, 0, NULL } - }; - -static const struct argp_option opt4[] = - { - { "opt4", '4', "NUMBER", 0, "Option 4" }, - { NULL, 0, NULL, 0, NULL } - }; - -static const struct argp_option opt5[] = - { - { "opt5", '5', "NUMBER", 0, "Option 5" }, - { NULL, 0, NULL, 0, NULL } - }; - -static struct argp argp5 = - { - opt5, NULL, "args doc5", "doc5", NULL, NULL, NULL - }; - -static struct argp argp4 = - { - opt4, NULL, "args doc4", "doc4", NULL, NULL, NULL - }; - -static struct argp argp3 = - { - opt3, NULL, "args doc3", "doc3", NULL, NULL, NULL - }; - -static struct argp_child children2[] = - { - { &argp4, 0, "child3", 3 }, - { &argp5, 0, "child4", 4 }, - { NULL, 0, NULL, 0 } - }; - -static struct argp argp2 = - { - opt2, NULL, "args doc2", "doc2", children2, NULL, NULL - }; - -static struct argp_child children1[] = - { - { &argp2, 0, "child1", 1 }, - { &argp3, 0, "child2", 2 }, - { NULL, 0, NULL, 0 } - }; - -static struct argp argp1 = - { - opt1, NULL, "args doc1", "doc1", children1, NULL, NULL - }; - - -static int -do_test (void) -{ - argp_help (&argp1, stdout, ARGP_HELP_LONG, (char *) "tst-argp2"); - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/args/Makefile b/test/args/Makefile deleted file mode 100644 index 0ae3f010b..000000000 --- a/test/args/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc args tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/args/Makefile.in b/test/args/Makefile.in deleted file mode 100644 index f4edab454..000000000 --- a/test/args/Makefile.in +++ /dev/null @@ -1,9 +0,0 @@ -# uClibc args tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -OPTS_arg_test = a b c d e f g h -WRAPPER_arg_test = \ - env -i \ - ENVVAR=123 \ - SOMETHING=sldajfasdf \ - BLAHBLAH=" hi hi " diff --git a/test/args/arg_test.c b/test/args/arg_test.c deleted file mode 100644 index 86f31575a..000000000 --- a/test/args/arg_test.c +++ /dev/null @@ -1,40 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* - * Test application for argc and argv handling - * Copyright (C) 2000-2006 by Erik Andersen - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include -#include -#include - -int main(int argc, char **argv) -{ - int i=0; - char** index=__environ; - -#ifdef __powerpc__ - { - unsigned long sp; - sp = (unsigned long) __builtin_frame_address(0); - if(sp&0xf){ - printf("stack pointer is unaligned! (%08lx)\n", sp); - } - } -#endif - - printf("argc=%d\n", argc); - - for(i=0;i - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#undef NDEBUG - -#include -#include -#include -#include -#include "../testsuite.h" - -int got_abort; - -static void aborthandler(int junk) -{ - got_abort = 1; -} - -int main(int argc, char *argv[]) -{ - signal(SIGABRT, aborthandler); - - init_testsuite("Testing functions defined in assert.h:\n\t"); - - got_abort=0; - assert(0 == 0); - TEST_NUMERIC(got_abort, 0); - -#define NDEBUG - got_abort = 0; - printf("Don't worry -- This next test is supposed to print an assert message:\n"); - fprintf(stderr, "\t"); - assert(0 == 1); - TEST_NUMERIC(got_abort, 0); - -#undef NDEBUG - got_abort = 0; - assert(0 == 1); - TEST_NUMERIC(got_abort, 1); - - exit(0); -} diff --git a/test/build/Makefile b/test/build/Makefile deleted file mode 100644 index ce74a8a7a..000000000 --- a/test/build/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc build tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/build/check_config_options.sh b/test/build/check_config_options.sh deleted file mode 100755 index 086131f38..000000000 --- a/test/build/check_config_options.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh - -ret=0 - -# Make sure nothing uses the ARCH_HAS_MMU option anymore -result=$( -find ../.. \ - | grep -v \ - -e include/bits/uClibc_config.h \ - -e /test/ \ - -e /.svn/ \ - | xargs grep -sHI \ - __ARCH_HAS_MMU__ -) -if [ -n "$result" ] ; then - echo "The build system is incorrectly using ARCH_HAS_MMU:" - echo "$result" - ret=1 -fi - -exit $ret diff --git a/test/crypt/Makefile b/test/crypt/Makefile deleted file mode 100644 index 25b0f3c86..000000000 --- a/test/crypt/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc crypt tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/crypt/Makefile.in b/test/crypt/Makefile.in deleted file mode 100644 index f85221947..000000000 --- a/test/crypt/Makefile.in +++ /dev/null @@ -1,15 +0,0 @@ -# uClibc crypt tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -EXTRA_LDFLAGS := -lcrypt - -OPTS_crypt = < crypt.input - -ifneq ($(UCLIBC_HAS_SHA512_CRYPT_IMPL),y) -TESTS_DISABLED += sha512c-test -endif -ifneq ($(UCLIBC_HAS_SHA256_CRYPT_IMPL),y) -TESTS_DISABLED += sha256c-test -endif - -WRAPPER := env TIMEOUTFACTOR=50 diff --git a/test/crypt/crypt.c b/test/crypt/crypt.c deleted file mode 100644 index 786464710..000000000 --- a/test/crypt/crypt.c +++ /dev/null @@ -1,103 +0,0 @@ - -/* - * This crypt(3) validation program shipped with UFC-crypt - * is derived from one distributed with Phil Karns PD DES package. - * - * @(#)cert.c 1.8 11 Aug 1996 - */ - -#include -#include -#include "crypt.h" - -static int totfails = 0; - -static void good_bye (void) __attribute__ ((noreturn)); -static void good_bye (void) -{ - if(totfails == 0) { - printf("Passed DES validation suite\n"); - exit(0); - } else { - printf("%d failures during DES validation suite!!!\n", totfails); - exit(1); - } -} - -static void get8(char *cp) -{ - int i,j,t; - - for(i=0;i<8;i++){ - scanf("%2x",&t); - if(feof(stdin)) - good_bye(); - for(j=0; j<8 ; j++) { - *cp++ = (t & (0x01 << (7-j))) != 0; - } - } -} - -static void put8(char *cp) -{ - int i,j,t; - - for(i=0;i<8;i++){ - t = 0; - for(j = 0; j<8; j++) - t = (t<<1) | *cp++; - printf("%02x", t); - } -} - -int main(void) -{ - char key[64],plain[64],cipher[64],answer[64]; - int i; - int test; - int fail; - - for(test=0;!feof(stdin);test++){ - - get8(key); - printf(" K: "); put8(key); - setkey(key); - - get8(plain); - printf(" P: "); put8(plain); - - get8(answer); - printf(" C: "); put8(answer); - - for(i=0;i<64;i++) - cipher[i] = plain[i]; - encrypt(cipher, 0); - - for(i=0;i<64;i++) { - if(cipher[i] != answer[i]) - break; - } - fail = 0; - if(i != 64){ - printf(" Encrypt FAIL"); - fail++; totfails++; - } - - encrypt(cipher, 1); - - for(i=0;i<64;i++) - if(cipher[i] != plain[i]) - break; - if(i != 64){ - printf(" Decrypt FAIL"); - fail++; totfails++; - } - - if(fail == 0) - printf(" OK"); - printf("\n"); - } - good_bye(); -} - - diff --git a/test/crypt/crypt.input b/test/crypt/crypt.input deleted file mode 100644 index d843fa8a8..000000000 --- a/test/crypt/crypt.input +++ /dev/null @@ -1,171 +0,0 @@ -0101010101010101 95f8a5e5dd31d900 8000000000000000 -0101010101010101 dd7f121ca5015619 4000000000000000 -0101010101010101 2e8653104f3834ea 2000000000000000 -0101010101010101 4bd388ff6cd81d4f 1000000000000000 -0101010101010101 20b9e767b2fb1456 0800000000000000 -0101010101010101 55579380d77138ef 0400000000000000 -0101010101010101 6cc5defaaf04512f 0200000000000000 -0101010101010101 0d9f279ba5d87260 0100000000000000 -0101010101010101 d9031b0271bd5a0a 0080000000000000 -0101010101010101 424250b37c3dd951 0040000000000000 -0101010101010101 b8061b7ecd9a21e5 0020000000000000 -0101010101010101 f15d0f286b65bd28 0010000000000000 -0101010101010101 add0cc8d6e5deba1 0008000000000000 -0101010101010101 e6d5f82752ad63d1 0004000000000000 -0101010101010101 ecbfe3bd3f591a5e 0002000000000000 -0101010101010101 f356834379d165cd 0001000000000000 -0101010101010101 2b9f982f20037fa9 0000800000000000 -0101010101010101 889de068a16f0be6 0000400000000000 -0101010101010101 e19e275d846a1298 0000200000000000 -0101010101010101 329a8ed523d71aec 0000100000000000 -0101010101010101 e7fce22557d23c97 0000080000000000 -0101010101010101 12a9f5817ff2d65d 0000040000000000 -0101010101010101 a484c3ad38dc9c19 0000020000000000 -0101010101010101 fbe00a8a1ef8ad72 0000010000000000 -0101010101010101 750d079407521363 0000008000000000 -0101010101010101 64feed9c724c2faf 0000004000000000 -0101010101010101 f02b263b328e2b60 0000002000000000 -0101010101010101 9d64555a9a10b852 0000001000000000 -0101010101010101 d106ff0bed5255d7 0000000800000000 -0101010101010101 e1652c6b138c64a5 0000000400000000 -0101010101010101 e428581186ec8f46 0000000200000000 -0101010101010101 aeb5f5ede22d1a36 0000000100000000 -0101010101010101 e943d7568aec0c5c 0000000080000000 -0101010101010101 df98c8276f54b04b 0000000040000000 -0101010101010101 b160e4680f6c696f 0000000020000000 -0101010101010101 fa0752b07d9c4ab8 0000000010000000 -0101010101010101 ca3a2b036dbc8502 0000000008000000 -0101010101010101 5e0905517bb59bcf 0000000004000000 -0101010101010101 814eeb3b91d90726 0000000002000000 -0101010101010101 4d49db1532919c9f 0000000001000000 -0101010101010101 25eb5fc3f8cf0621 0000000000800000 -0101010101010101 ab6a20c0620d1c6f 0000000000400000 -0101010101010101 79e90dbc98f92cca 0000000000200000 -0101010101010101 866ecedd8072bb0e 0000000000100000 -0101010101010101 8b54536f2f3e64a8 0000000000080000 -0101010101010101 ea51d3975595b86b 0000000000040000 -0101010101010101 caffc6ac4542de31 0000000000020000 -0101010101010101 8dd45a2ddf90796c 0000000000010000 -0101010101010101 1029d55e880ec2d0 0000000000008000 -0101010101010101 5d86cb23639dbea9 0000000000004000 -0101010101010101 1d1ca853ae7c0c5f 0000000000002000 -0101010101010101 ce332329248f3228 0000000000001000 -0101010101010101 8405d1abe24fb942 0000000000000800 -0101010101010101 e643d78090ca4207 0000000000000400 -0101010101010101 48221b9937748a23 0000000000000200 -0101010101010101 dd7c0bbd61fafd54 0000000000000100 -0101010101010101 2fbc291a570db5c4 0000000000000080 -0101010101010101 e07c30d7e4e26e12 0000000000000040 -0101010101010101 0953e2258e8e90a1 0000000000000020 -0101010101010101 5b711bc4ceebf2ee 0000000000000010 -0101010101010101 cc083f1e6d9e85f6 0000000000000008 -0101010101010101 d2fd8867d50d2dfe 0000000000000004 -0101010101010101 06e7ea22ce92708f 0000000000000002 -0101010101010101 166b40b44aba4bd6 0000000000000001 -8001010101010101 0000000000000000 95a8d72813daa94d -4001010101010101 0000000000000000 0eec1487dd8c26d5 -2001010101010101 0000000000000000 7ad16ffb79c45926 -1001010101010101 0000000000000000 d3746294ca6a6cf3 -0801010101010101 0000000000000000 809f5f873c1fd761 -0401010101010101 0000000000000000 c02faffec989d1fc -0201010101010101 0000000000000000 4615aa1d33e72f10 -0180010101010101 0000000000000000 2055123350c00858 -0140010101010101 0000000000000000 df3b99d6577397c8 -0120010101010101 0000000000000000 31fe17369b5288c9 -0110010101010101 0000000000000000 dfdd3cc64dae1642 -0108010101010101 0000000000000000 178c83ce2b399d94 -0104010101010101 0000000000000000 50f636324a9b7f80 -0102010101010101 0000000000000000 a8468ee3bc18f06d -0101800101010101 0000000000000000 a2dc9e92fd3cde92 -0101400101010101 0000000000000000 cac09f797d031287 -0101200101010101 0000000000000000 90ba680b22aeb525 -0101100101010101 0000000000000000 ce7a24f350e280b6 -0101080101010101 0000000000000000 882bff0aa01a0b87 -0101040101010101 0000000000000000 25610288924511c2 -0101020101010101 0000000000000000 c71516c29c75d170 -0101018001010101 0000000000000000 5199c29a52c9f059 -0101014001010101 0000000000000000 c22f0a294a71f29f -0101012001010101 0000000000000000 ee371483714c02ea -0101011001010101 0000000000000000 a81fbd448f9e522f -0101010801010101 0000000000000000 4f644c92e192dfed -0101010401010101 0000000000000000 1afa9a66a6df92ae -0101010201010101 0000000000000000 b3c1cc715cb879d8 -0101010180010101 0000000000000000 19d032e64ab0bd8b -0101010140010101 0000000000000000 3cfaa7a7dc8720dc -0101010120010101 0000000000000000 b7265f7f447ac6f3 -0101010110010101 0000000000000000 9db73b3c0d163f54 -0101010108010101 0000000000000000 8181b65babf4a975 -0101010104010101 0000000000000000 93c9b64042eaa240 -0101010102010101 0000000000000000 5570530829705592 -0101010101800101 0000000000000000 8638809e878787a0 -0101010101400101 0000000000000000 41b9a79af79ac208 -0101010101200101 0000000000000000 7a9be42f2009a892 -0101010101100101 0000000000000000 29038d56ba6d2745 -0101010101080101 0000000000000000 5495c6abf1e5df51 -0101010101040101 0000000000000000 ae13dbd561488933 -0101010101020101 0000000000000000 024d1ffa8904e389 -0101010101018001 0000000000000000 d1399712f99bf02e -0101010101014001 0000000000000000 14c1d7c1cffec79e -0101010101012001 0000000000000000 1de5279dae3bed6f -0101010101011001 0000000000000000 e941a33f85501303 -0101010101010801 0000000000000000 da99dbbc9a03f379 -0101010101010401 0000000000000000 b7fc92f91d8e92e9 -0101010101010201 0000000000000000 ae8e5caa3ca04e85 -0101010101010180 0000000000000000 9cc62df43b6eed74 -0101010101010140 0000000000000000 d863dbb5c59a91a0 -0101010101010120 0000000000000000 a1ab2190545b91d7 -0101010101010110 0000000000000000 0875041e64c570f7 -0101010101010108 0000000000000000 5a594528bebef1cc -0101010101010104 0000000000000000 fcdb3291de21f0c0 -0101010101010102 0000000000000000 869efd7f9f265a09 -1046913489980131 0000000000000000 88d55e54f54c97b4 -1007103489988020 0000000000000000 0c0cc00c83ea48fd -10071034c8980120 0000000000000000 83bc8ef3a6570183 -1046103489988020 0000000000000000 df725dcad94ea2e9 -1086911519190101 0000000000000000 e652b53b550be8b0 -1086911519580101 0000000000000000 af527120c485cbb0 -5107b01519580101 0000000000000000 0f04ce393db926d5 -1007b01519190101 0000000000000000 c9f00ffc74079067 -3107915498080101 0000000000000000 7cfd82a593252b4e -3107919498080101 0000000000000000 cb49a2f9e91363e3 -10079115b9080140 0000000000000000 00b588be70d23f56 -3107911598080140 0000000000000000 406a9a6ab43399ae -1007d01589980101 0000000000000000 6cb773611dca9ada -9107911589980101 0000000000000000 67fd21c17dbb5d70 -9107d01589190101 0000000000000000 9592cb4110430787 -1007d01598980120 0000000000000000 a6b7ff68a318ddd3 -1007940498190101 0000000000000000 4d102196c914ca16 -0107910491190401 0000000000000000 2dfa9f4573594965 -0107910491190101 0000000000000000 b46604816c0e0774 -0107940491190401 0000000000000000 6e7e6221a4f34e87 -19079210981a0101 0000000000000000 aa85e74643233199 -1007911998190801 0000000000000000 2e5a19db4d1962d6 -10079119981a0801 0000000000000000 23a866a809d30894 -1007921098190101 0000000000000000 d812d961f017d320 -100791159819010b 0000000000000000 055605816e58608f -1004801598190101 0000000000000000 abd88e8b1b7716f1 -1004801598190102 0000000000000000 537ac95be69da1e1 -1004801598190108 0000000000000000 aed0f6ae3c25cdd8 -1002911598100104 0000000000000000 b3e35a5ee53e7b8d -1002911598190104 0000000000000000 61c79c71921a2ef8 -1002911598100201 0000000000000000 e2f5728f0995013c -1002911698100101 0000000000000000 1aeac39a61f0a464 -7ca110454a1a6e57 01a1d6d039776742 690f5b0d9a26939b -0131d9619dc1376e 5cd54ca83def57da 7a389d10354bd271 -07a1133e4a0b2686 0248d43806f67172 868ebb51cab4599a -3849674c2602319e 51454b582ddf440a 7178876e01f19b2a -04b915ba43feb5b6 42fd443059577fa2 af37fb421f8c4095 -0113b970fd34f2ce 059b5e0851cf143a 86a560f10ec6d85b -0170f175468fb5e6 0756d8e0774761d2 0cd3da020021dc09 -43297fad38e373fe 762514b829bf486a ea676b2cb7db2b7a -07a7137045da2a16 3bdd119049372802 dfd64a815caf1a0f -04689104c2fd3b2f 26955f6835af609a 5c513c9c4886c088 -37d06bb516cb7546 164d5e404f275232 0a2aeeae3ff4ab77 -1f08260d1ac2465e 6b056e18759f5cca ef1bf03e5dfa575a -584023641aba6176 004bd6ef09176062 88bf0db6d70dee56 -025816164629b007 480d39006ee762f2 a1f9915541020b56 -49793ebc79b3258f 437540c8698f3cfa 6fbf1cafcffd0556 -4fb05e1515ab73a7 072d43a077075292 2f22e49bab7ca1ac -49e95d6d4ca229bf 02fe55778117f12a 5a6b612cc26cce4a -018310dc409b26d6 1d9d5c5018f728c2 5f4c038ed12b2e41 -1c587f1c13924fef 305532286d6f295a 63fac0d034d9f793 diff --git a/test/crypt/crypt.out.good b/test/crypt/crypt.out.good deleted file mode 100644 index 073ab2be0..000000000 --- a/test/crypt/crypt.out.good +++ /dev/null @@ -1,172 +0,0 @@ - K: 0101010101010101 P: 95f8a5e5dd31d900 C: 8000000000000000 OK - K: 0101010101010101 P: dd7f121ca5015619 C: 4000000000000000 OK - K: 0101010101010101 P: 2e8653104f3834ea C: 2000000000000000 OK - K: 0101010101010101 P: 4bd388ff6cd81d4f C: 1000000000000000 OK - K: 0101010101010101 P: 20b9e767b2fb1456 C: 0800000000000000 OK - K: 0101010101010101 P: 55579380d77138ef C: 0400000000000000 OK - K: 0101010101010101 P: 6cc5defaaf04512f C: 0200000000000000 OK - K: 0101010101010101 P: 0d9f279ba5d87260 C: 0100000000000000 OK - K: 0101010101010101 P: d9031b0271bd5a0a C: 0080000000000000 OK - K: 0101010101010101 P: 424250b37c3dd951 C: 0040000000000000 OK - K: 0101010101010101 P: b8061b7ecd9a21e5 C: 0020000000000000 OK - K: 0101010101010101 P: f15d0f286b65bd28 C: 0010000000000000 OK - K: 0101010101010101 P: add0cc8d6e5deba1 C: 0008000000000000 OK - K: 0101010101010101 P: e6d5f82752ad63d1 C: 0004000000000000 OK - K: 0101010101010101 P: ecbfe3bd3f591a5e C: 0002000000000000 OK - K: 0101010101010101 P: f356834379d165cd C: 0001000000000000 OK - K: 0101010101010101 P: 2b9f982f20037fa9 C: 0000800000000000 OK - K: 0101010101010101 P: 889de068a16f0be6 C: 0000400000000000 OK - K: 0101010101010101 P: e19e275d846a1298 C: 0000200000000000 OK - K: 0101010101010101 P: 329a8ed523d71aec C: 0000100000000000 OK - K: 0101010101010101 P: e7fce22557d23c97 C: 0000080000000000 OK - K: 0101010101010101 P: 12a9f5817ff2d65d C: 0000040000000000 OK - K: 0101010101010101 P: a484c3ad38dc9c19 C: 0000020000000000 OK - K: 0101010101010101 P: fbe00a8a1ef8ad72 C: 0000010000000000 OK - K: 0101010101010101 P: 750d079407521363 C: 0000008000000000 OK - K: 0101010101010101 P: 64feed9c724c2faf C: 0000004000000000 OK - K: 0101010101010101 P: f02b263b328e2b60 C: 0000002000000000 OK - K: 0101010101010101 P: 9d64555a9a10b852 C: 0000001000000000 OK - K: 0101010101010101 P: d106ff0bed5255d7 C: 0000000800000000 OK - K: 0101010101010101 P: e1652c6b138c64a5 C: 0000000400000000 OK - K: 0101010101010101 P: e428581186ec8f46 C: 0000000200000000 OK - K: 0101010101010101 P: aeb5f5ede22d1a36 C: 0000000100000000 OK - K: 0101010101010101 P: e943d7568aec0c5c C: 0000000080000000 OK - K: 0101010101010101 P: df98c8276f54b04b C: 0000000040000000 OK - K: 0101010101010101 P: b160e4680f6c696f C: 0000000020000000 OK - K: 0101010101010101 P: fa0752b07d9c4ab8 C: 0000000010000000 OK - K: 0101010101010101 P: ca3a2b036dbc8502 C: 0000000008000000 OK - K: 0101010101010101 P: 5e0905517bb59bcf C: 0000000004000000 OK - K: 0101010101010101 P: 814eeb3b91d90726 C: 0000000002000000 OK - K: 0101010101010101 P: 4d49db1532919c9f C: 0000000001000000 OK - K: 0101010101010101 P: 25eb5fc3f8cf0621 C: 0000000000800000 OK - K: 0101010101010101 P: ab6a20c0620d1c6f C: 0000000000400000 OK - K: 0101010101010101 P: 79e90dbc98f92cca C: 0000000000200000 OK - K: 0101010101010101 P: 866ecedd8072bb0e C: 0000000000100000 OK - K: 0101010101010101 P: 8b54536f2f3e64a8 C: 0000000000080000 OK - K: 0101010101010101 P: ea51d3975595b86b C: 0000000000040000 OK - K: 0101010101010101 P: caffc6ac4542de31 C: 0000000000020000 OK - K: 0101010101010101 P: 8dd45a2ddf90796c C: 0000000000010000 OK - K: 0101010101010101 P: 1029d55e880ec2d0 C: 0000000000008000 OK - K: 0101010101010101 P: 5d86cb23639dbea9 C: 0000000000004000 OK - K: 0101010101010101 P: 1d1ca853ae7c0c5f C: 0000000000002000 OK - K: 0101010101010101 P: ce332329248f3228 C: 0000000000001000 OK - K: 0101010101010101 P: 8405d1abe24fb942 C: 0000000000000800 OK - K: 0101010101010101 P: e643d78090ca4207 C: 0000000000000400 OK - K: 0101010101010101 P: 48221b9937748a23 C: 0000000000000200 OK - K: 0101010101010101 P: dd7c0bbd61fafd54 C: 0000000000000100 OK - K: 0101010101010101 P: 2fbc291a570db5c4 C: 0000000000000080 OK - K: 0101010101010101 P: e07c30d7e4e26e12 C: 0000000000000040 OK - K: 0101010101010101 P: 0953e2258e8e90a1 C: 0000000000000020 OK - K: 0101010101010101 P: 5b711bc4ceebf2ee C: 0000000000000010 OK - K: 0101010101010101 P: cc083f1e6d9e85f6 C: 0000000000000008 OK - K: 0101010101010101 P: d2fd8867d50d2dfe C: 0000000000000004 OK - K: 0101010101010101 P: 06e7ea22ce92708f C: 0000000000000002 OK - K: 0101010101010101 P: 166b40b44aba4bd6 C: 0000000000000001 OK - K: 8001010101010101 P: 0000000000000000 C: 95a8d72813daa94d OK - K: 4001010101010101 P: 0000000000000000 C: 0eec1487dd8c26d5 OK - K: 2001010101010101 P: 0000000000000000 C: 7ad16ffb79c45926 OK - K: 1001010101010101 P: 0000000000000000 C: d3746294ca6a6cf3 OK - K: 0801010101010101 P: 0000000000000000 C: 809f5f873c1fd761 OK - K: 0401010101010101 P: 0000000000000000 C: c02faffec989d1fc OK - K: 0201010101010101 P: 0000000000000000 C: 4615aa1d33e72f10 OK - K: 0180010101010101 P: 0000000000000000 C: 2055123350c00858 OK - K: 0140010101010101 P: 0000000000000000 C: df3b99d6577397c8 OK - K: 0120010101010101 P: 0000000000000000 C: 31fe17369b5288c9 OK - K: 0110010101010101 P: 0000000000000000 C: dfdd3cc64dae1642 OK - K: 0108010101010101 P: 0000000000000000 C: 178c83ce2b399d94 OK - K: 0104010101010101 P: 0000000000000000 C: 50f636324a9b7f80 OK - K: 0102010101010101 P: 0000000000000000 C: a8468ee3bc18f06d OK - K: 0101800101010101 P: 0000000000000000 C: a2dc9e92fd3cde92 OK - K: 0101400101010101 P: 0000000000000000 C: cac09f797d031287 OK - K: 0101200101010101 P: 0000000000000000 C: 90ba680b22aeb525 OK - K: 0101100101010101 P: 0000000000000000 C: ce7a24f350e280b6 OK - K: 0101080101010101 P: 0000000000000000 C: 882bff0aa01a0b87 OK - K: 0101040101010101 P: 0000000000000000 C: 25610288924511c2 OK - K: 0101020101010101 P: 0000000000000000 C: c71516c29c75d170 OK - K: 0101018001010101 P: 0000000000000000 C: 5199c29a52c9f059 OK - K: 0101014001010101 P: 0000000000000000 C: c22f0a294a71f29f OK - K: 0101012001010101 P: 0000000000000000 C: ee371483714c02ea OK - K: 0101011001010101 P: 0000000000000000 C: a81fbd448f9e522f OK - K: 0101010801010101 P: 0000000000000000 C: 4f644c92e192dfed OK - K: 0101010401010101 P: 0000000000000000 C: 1afa9a66a6df92ae OK - K: 0101010201010101 P: 0000000000000000 C: b3c1cc715cb879d8 OK - K: 0101010180010101 P: 0000000000000000 C: 19d032e64ab0bd8b OK - K: 0101010140010101 P: 0000000000000000 C: 3cfaa7a7dc8720dc OK - K: 0101010120010101 P: 0000000000000000 C: b7265f7f447ac6f3 OK - K: 0101010110010101 P: 0000000000000000 C: 9db73b3c0d163f54 OK - K: 0101010108010101 P: 0000000000000000 C: 8181b65babf4a975 OK - K: 0101010104010101 P: 0000000000000000 C: 93c9b64042eaa240 OK - K: 0101010102010101 P: 0000000000000000 C: 5570530829705592 OK - K: 0101010101800101 P: 0000000000000000 C: 8638809e878787a0 OK - K: 0101010101400101 P: 0000000000000000 C: 41b9a79af79ac208 OK - K: 0101010101200101 P: 0000000000000000 C: 7a9be42f2009a892 OK - K: 0101010101100101 P: 0000000000000000 C: 29038d56ba6d2745 OK - K: 0101010101080101 P: 0000000000000000 C: 5495c6abf1e5df51 OK - K: 0101010101040101 P: 0000000000000000 C: ae13dbd561488933 OK - K: 0101010101020101 P: 0000000000000000 C: 024d1ffa8904e389 OK - K: 0101010101018001 P: 0000000000000000 C: d1399712f99bf02e OK - K: 0101010101014001 P: 0000000000000000 C: 14c1d7c1cffec79e OK - K: 0101010101012001 P: 0000000000000000 C: 1de5279dae3bed6f OK - K: 0101010101011001 P: 0000000000000000 C: e941a33f85501303 OK - K: 0101010101010801 P: 0000000000000000 C: da99dbbc9a03f379 OK - K: 0101010101010401 P: 0000000000000000 C: b7fc92f91d8e92e9 OK - K: 0101010101010201 P: 0000000000000000 C: ae8e5caa3ca04e85 OK - K: 0101010101010180 P: 0000000000000000 C: 9cc62df43b6eed74 OK - K: 0101010101010140 P: 0000000000000000 C: d863dbb5c59a91a0 OK - K: 0101010101010120 P: 0000000000000000 C: a1ab2190545b91d7 OK - K: 0101010101010110 P: 0000000000000000 C: 0875041e64c570f7 OK - K: 0101010101010108 P: 0000000000000000 C: 5a594528bebef1cc OK - K: 0101010101010104 P: 0000000000000000 C: fcdb3291de21f0c0 OK - K: 0101010101010102 P: 0000000000000000 C: 869efd7f9f265a09 OK - K: 1046913489980131 P: 0000000000000000 C: 88d55e54f54c97b4 OK - K: 1007103489988020 P: 0000000000000000 C: 0c0cc00c83ea48fd OK - K: 10071034c8980120 P: 0000000000000000 C: 83bc8ef3a6570183 OK - K: 1046103489988020 P: 0000000000000000 C: df725dcad94ea2e9 OK - K: 1086911519190101 P: 0000000000000000 C: e652b53b550be8b0 OK - K: 1086911519580101 P: 0000000000000000 C: af527120c485cbb0 OK - K: 5107b01519580101 P: 0000000000000000 C: 0f04ce393db926d5 OK - K: 1007b01519190101 P: 0000000000000000 C: c9f00ffc74079067 OK - K: 3107915498080101 P: 0000000000000000 C: 7cfd82a593252b4e OK - K: 3107919498080101 P: 0000000000000000 C: cb49a2f9e91363e3 OK - K: 10079115b9080140 P: 0000000000000000 C: 00b588be70d23f56 OK - K: 3107911598080140 P: 0000000000000000 C: 406a9a6ab43399ae OK - K: 1007d01589980101 P: 0000000000000000 C: 6cb773611dca9ada OK - K: 9107911589980101 P: 0000000000000000 C: 67fd21c17dbb5d70 OK - K: 9107d01589190101 P: 0000000000000000 C: 9592cb4110430787 OK - K: 1007d01598980120 P: 0000000000000000 C: a6b7ff68a318ddd3 OK - K: 1007940498190101 P: 0000000000000000 C: 4d102196c914ca16 OK - K: 0107910491190401 P: 0000000000000000 C: 2dfa9f4573594965 OK - K: 0107910491190101 P: 0000000000000000 C: b46604816c0e0774 OK - K: 0107940491190401 P: 0000000000000000 C: 6e7e6221a4f34e87 OK - K: 19079210981a0101 P: 0000000000000000 C: aa85e74643233199 OK - K: 1007911998190801 P: 0000000000000000 C: 2e5a19db4d1962d6 OK - K: 10079119981a0801 P: 0000000000000000 C: 23a866a809d30894 OK - K: 1007921098190101 P: 0000000000000000 C: d812d961f017d320 OK - K: 100791159819010b P: 0000000000000000 C: 055605816e58608f OK - K: 1004801598190101 P: 0000000000000000 C: abd88e8b1b7716f1 OK - K: 1004801598190102 P: 0000000000000000 C: 537ac95be69da1e1 OK - K: 1004801598190108 P: 0000000000000000 C: aed0f6ae3c25cdd8 OK - K: 1002911598100104 P: 0000000000000000 C: b3e35a5ee53e7b8d OK - K: 1002911598190104 P: 0000000000000000 C: 61c79c71921a2ef8 OK - K: 1002911598100201 P: 0000000000000000 C: e2f5728f0995013c OK - K: 1002911698100101 P: 0000000000000000 C: 1aeac39a61f0a464 OK - K: 7ca110454a1a6e57 P: 01a1d6d039776742 C: 690f5b0d9a26939b OK - K: 0131d9619dc1376e P: 5cd54ca83def57da C: 7a389d10354bd271 OK - K: 07a1133e4a0b2686 P: 0248d43806f67172 C: 868ebb51cab4599a OK - K: 3849674c2602319e P: 51454b582ddf440a C: 7178876e01f19b2a OK - K: 04b915ba43feb5b6 P: 42fd443059577fa2 C: af37fb421f8c4095 OK - K: 0113b970fd34f2ce P: 059b5e0851cf143a C: 86a560f10ec6d85b OK - K: 0170f175468fb5e6 P: 0756d8e0774761d2 C: 0cd3da020021dc09 OK - K: 43297fad38e373fe P: 762514b829bf486a C: ea676b2cb7db2b7a OK - K: 07a7137045da2a16 P: 3bdd119049372802 C: dfd64a815caf1a0f OK - K: 04689104c2fd3b2f P: 26955f6835af609a C: 5c513c9c4886c088 OK - K: 37d06bb516cb7546 P: 164d5e404f275232 C: 0a2aeeae3ff4ab77 OK - K: 1f08260d1ac2465e P: 6b056e18759f5cca C: ef1bf03e5dfa575a OK - K: 584023641aba6176 P: 004bd6ef09176062 C: 88bf0db6d70dee56 OK - K: 025816164629b007 P: 480d39006ee762f2 C: a1f9915541020b56 OK - K: 49793ebc79b3258f P: 437540c8698f3cfa C: 6fbf1cafcffd0556 OK - K: 4fb05e1515ab73a7 P: 072d43a077075292 C: 2f22e49bab7ca1ac OK - K: 49e95d6d4ca229bf P: 02fe55778117f12a C: 5a6b612cc26cce4a OK - K: 018310dc409b26d6 P: 1d9d5c5018f728c2 C: 5f4c038ed12b2e41 OK - K: 1c587f1c13924fef P: 305532286d6f295a C: 63fac0d034d9f793 OK -Passed DES validation suite diff --git a/test/crypt/md5c-test.c b/test/crypt/md5c-test.c deleted file mode 100644 index 3c6154021..000000000 --- a/test/crypt/md5c-test.c +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include -#include -#include - -int -main (int argc, char *argv[]) -{ - const char salt[] = "$1$saltstring"; - char *cp; - - cp = crypt ("Hello world!", salt); - if (strcmp ("$1$saltstri$YMyguxXMBpd2TEZ.vS/3q1", cp)) { - fprintf(stderr, "Failed md5 crypt test!\n"); - return EXIT_FAILURE; - } - fprintf(stderr, "Passed md5 crypt test!\n"); - return EXIT_SUCCESS; -} diff --git a/test/crypt/sha256c-test.c b/test/crypt/sha256c-test.c deleted file mode 100644 index 357f0d8b7..000000000 --- a/test/crypt/sha256c-test.c +++ /dev/null @@ -1,62 +0,0 @@ -#include -#include -#include - -static const struct -{ - const char *salt; - const char *input; - const char *expected; -} tests[] = -{ - { "$5$saltstring", "Hello world!", - "$5$saltstring$5B8vYYiY.CVt1RlTTf8KbXBH3hsxY/GNooZaBBGWEc5" }, - { "$5$rounds=10000$saltstringsaltstring", "Hello world!", - "$5$rounds=10000$saltstringsaltst$3xv.VbSHBb41AL9AvLeujZkZRBAwqFMz2." - "opqey6IcA" }, - { "$5$rounds=5000$toolongsaltstring", "This is just a test", - "$5$rounds=5000$toolongsaltstrin$Un/5jzAHMgOGZ5.mWJpuVolil07guHPvOW8" - "mGRcvxa5" }, - { "$5$rounds=1400$anotherlongsaltstring", - "a very much longer text to encrypt. This one even stretches over more" - "than one line.", - "$5$rounds=1400$anotherlongsalts$Rx.j8H.h8HjEDGomFU8bDkXm3XIUnzyxf12" - "oP84Bnq1" }, - { "$5$rounds=77777$short", - "we have a short salt string but not a short password", - "$5$rounds=77777$short$JiO1O3ZpDAxGJeaDIuqCoEFysAe1mZNJRs3pw0KQRd/" }, - { "$5$rounds=123456$asaltof16chars..", "a short string", - "$5$rounds=123456$asaltof16chars..$gP3VQ/6X7UUEW3HkBn2w1/Ptq2jxPyzV/" - "cZKmF/wJvD" }, - { "$5$rounds=10$roundstoolow", "the minimum number is still observed", - "$5$rounds=1000$roundstoolow$yfvwcWrQ8l/K0DAWyuPMDNHpIVlTQebY9l/gL97" - "2bIC" }, -}; -#define ntests (sizeof (tests) / sizeof (tests[0])) - - - -static int -do_test (void) -{ - int result = 0; - int i; - - for (i = 0; i < ntests; ++i) - { - char *cp = crypt (tests[i].input, tests[i].salt); - - if (strcmp (cp, tests[i].expected) != 0) - { - printf ("test %d: expected \"%s\", got \"%s\"\n", - i, tests[i].expected, cp); - result = 1; - } - } - - return result; -} - -#define TIMEOUT 6 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/crypt/sha512c-test.c b/test/crypt/sha512c-test.c deleted file mode 100644 index c829242e2..000000000 --- a/test/crypt/sha512c-test.c +++ /dev/null @@ -1,63 +0,0 @@ -#include -#include -#include - -static const struct -{ - const char *salt; - const char *input; - const char *expected; -} tests[] = -{ - { "$6$saltstring", "Hello world!", - "$6$saltstring$svn8UoSVapNtMuq1ukKS4tPQd8iKwSMHWjl/O817G3uBnIFNjnQJu" - "esI68u4OTLiBFdcbYEdFCoEOfaS35inz1" }, - { "$6$rounds=10000$saltstringsaltstring", "Hello world!", - "$6$rounds=10000$saltstringsaltst$OW1/O6BYHV6BcXZu8QVeXbDWra3Oeqh0sb" - "HbbMCVNSnCM/UrjmM0Dp8vOuZeHBy/YTBmSK6H9qs/y3RnOaw5v." }, - { "$6$rounds=5000$toolongsaltstring", "This is just a test", - "$6$rounds=5000$toolongsaltstrin$lQ8jolhgVRVhY4b5pZKaysCLi0QBxGoNeKQ" - "zQ3glMhwllF7oGDZxUhx1yxdYcz/e1JSbq3y6JMxxl8audkUEm0" }, - { "$6$rounds=1400$anotherlongsaltstring", - "a very much longer text to encrypt. This one even stretches over more" - "than one line.", - "$6$rounds=1400$anotherlongsalts$POfYwTEok97VWcjxIiSOjiykti.o/pQs.wP" - "vMxQ6Fm7I6IoYN3CmLs66x9t0oSwbtEW7o7UmJEiDwGqd8p4ur1" }, - { "$6$rounds=77777$short", - "we have a short salt string but not a short password", - "$6$rounds=77777$short$WuQyW2YR.hBNpjjRhpYD/ifIw05xdfeEyQoMxIXbkvr0g" - "ge1a1x3yRULJ5CCaUeOxFmtlcGZelFl5CxtgfiAc0" }, - { "$6$rounds=123456$asaltof16chars..", "a short string", - "$6$rounds=123456$asaltof16chars..$BtCwjqMJGx5hrJhZywWvt0RLE8uZ4oPwc" - "elCjmw2kSYu.Ec6ycULevoBK25fs2xXgMNrCzIMVcgEJAstJeonj1" }, - { "$6$rounds=10$roundstoolow", "the minimum number is still observed", - "$6$rounds=1000$roundstoolow$kUMsbe306n21p9R.FRkW3IGn.S9NPN0x50YhH1x" - "hLsPuWGsUSklZt58jaTfF4ZEQpyUNGc0dqbpBYYBaHHrsX." }, -}; -#define ntests (sizeof (tests) / sizeof (tests[0])) - - -static int -do_test (void) -{ - int result = 0; - int i; - - for (i = 0; i < ntests; ++i) - { - char *cp = crypt (tests[i].input, tests[i].salt); - - if (strcmp (cp, tests[i].expected) != 0) - { - printf ("test %d: expected \"%s\", got \"%s\"\n", - i, tests[i].expected, cp); - result = 1; - } - } - - return result; -} - -#define TIMEOUT 6 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/ctype/Makefile b/test/ctype/Makefile deleted file mode 100644 index 99dbdbc9c..000000000 --- a/test/ctype/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc ctype tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/ctype/Makefile.in b/test/ctype/Makefile.in deleted file mode 100644 index ee10d592e..000000000 --- a/test/ctype/Makefile.in +++ /dev/null @@ -1,4 +0,0 @@ -# uClibc ctype tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -TESTS := ctype diff --git a/test/ctype/ctype.c b/test/ctype/ctype.c deleted file mode 100644 index f38f722b2..000000000 --- a/test/ctype/ctype.c +++ /dev/null @@ -1,250 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* - * Test application for functions defined in ctype.h - * Copyright (C) 2000-2006 by Erik Andersen - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include -#include -#include -#include -#include "../testsuite.h" - - -int main( int argc, char **argv) -{ - int i, c; - - - init_testsuite("Testing functions defined in ctype.h\n"); - - /* isalnum() */ - { - int buffer[]={ '1', '4', 'a', 'z', 'A', 'Z', '5', -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isalnum(c)!=0); - } - } - { - int buffer[]={ 2, 128, 254, '\n', -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isalnum(c)==0); - } - } - - - - /* isalpha() */ - { - int buffer[]={ 'a', 'z', 'A', 'Z', -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isalpha(c)!=0); - } - } - { - int buffer[]={ 2, 63, 128, 254, '\n', -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isalpha(c)==0); - } - } - - - -#ifdef __UCLIBC_SUSV4_LEGACY__ - /* isascii() */ - { - int buffer[]={ 'a', 'z', 'A', 'Z', '\n', -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isascii(c)!=0); - } - } - { - int buffer[]={ 128, 254, -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isascii(c)==0); - } - } -#endif - - - /* iscntrl() */ - { - int buffer[]={ 0x7F, 6, '\t', '\n', 0x7F, -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( iscntrl(c)!=0); - } - } - { - int buffer[]={ 63, 128, 254, -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( iscntrl(c)==0); - } - } - - - /* isdigit() */ - { - int buffer[]={ '1', '5', '7', '9', -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isdigit(c)!=0); - } - } - { - int buffer[]={ 2, 'a', 'z', 'A', 'Z', 63, 128, 254, '\n', -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isdigit(c)==0); - } - } - - - - /* isgraph() */ - { - int buffer[]={ ')', '~', '9', -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isgraph(c)!=0); - } - } - { - int buffer[]={ 9, ' ', '\t', '\n', 200, 0x7F, -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isgraph(c)==0); - } - } - - - /* islower() */ - { - int buffer[]={ 'a', 'g', 'z', -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( islower(c)!=0); - } - } - { - int buffer[]={ 9, 'A', 'Z', 128, 254, ' ', '\t', '\n', 0x7F, -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( islower(c)==0); - } - } - - - /* isprint() */ - { - int buffer[]={ ' ', ')', '~', '9', -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isprint(c)!=0); - } - } - { - int buffer[]={ '\b', '\t', '\n', 9, 128, 254, 200, 0x7F, -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isprint(c)==0); - } - } - - - /* ispunct() */ - { - int buffer[]={ '.', '#', '@', ';', -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( ispunct(c)!=0); - } - } - { - int buffer[]={ 2, 'a', 'Z', '1', 128, 254, '\n', -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( ispunct(c)==0); - } - } - - - /* isspace() */ - { - int buffer[]={ ' ', '\t', '\r', '\v', '\n', -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isspace(c)!=0); - } - } - { - int buffer[]={ 2, 'a', 'Z', '1', 128, 254, -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isspace(c)==0); - } - } - - - /* isupper() */ - { - int buffer[]={ 'A', 'G', 'Z', -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isupper(c)!=0); - } - } - { - int buffer[]={ 2, 'a', 'z', '1', 128, 254, -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isupper(c)==0); - } - } - - - - /* isxdigit() */ - { - int buffer[]={ 'f', 'A', '1', '8', -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isxdigit(c)!=0); - } - } - { - int buffer[]={ 2, 'g', 'G', 'x', '\n', -1}; - for(i=0; buffer[i]!=-1; i++) { - c = buffer[i]; - TEST( isxdigit(c)==0); - } - } - - - /* tolower() */ - c='A'; - TEST_NUMERIC( tolower(c), 'a'); - c='a'; - TEST_NUMERIC( tolower(c), 'a'); - c='#'; - TEST_NUMERIC( tolower(c), c); - - /* toupper() */ - c='a'; - TEST_NUMERIC( toupper(c), 'A'); - c='A'; - TEST_NUMERIC( toupper(c), 'A'); - c='#'; - TEST_NUMERIC( toupper(c), c); - - exit(0); -} diff --git a/test/dlopen/Makefile b/test/dlopen/Makefile deleted file mode 100644 index d5be53c6a..000000000 --- a/test/dlopen/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc dlopen tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/dlopen/Makefile.in b/test/dlopen/Makefile.in deleted file mode 100644 index 740453a19..000000000 --- a/test/dlopen/Makefile.in +++ /dev/null @@ -1,84 +0,0 @@ -# uClibc dlopen tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -# rules need a little love to work with glibc ... -export UCLIBC_ONLY := 1 - -TESTS := dltest dltest2 dlstatic test1 test2 test3 dlundef dlafk dladdr \ - testscope nodelete nodelete1 tst-origin - -ifneq ($(HAVE_SHARED),y) -TESTS_DISABLED := test3 -LDFLAGS_libtest.so := -lpthread -endif - -CFLAGS_dltest := -DLIBNAME="\"./libtest.so\"" -CFLAGS_dltest2 := -DLIBNAME="\"./libtest3.so\"" - -LDFLAGS_dlstatic := -ldl -LDFLAGS_dltest := -ldl -LDFLAGS_dltest2 := -ldl -LDFLAGS_dlundef := -ldl -LDFLAGS_dlafk := -ldl ./libafk.so -Wl,-rpath,. -LDFLAGS_test1 := -ldl -LDFLAGS_test2 := -ldl -LDFLAGS_test3 := -ldl ./libtest1.so ./libtest2.so -Wl,-rpath,. -LDFLAGS_dladdr := -ldl -LDFLAGS_testscope:= -ldl -LDFLAGS_tst-origin:= -ldl -Wl,-rpath,\$$ORIGIN/testlib - -DEBUG_LIBS := X -WRAPPER := env $(DEBUG_LIBS)=all LD_LIBRARY_PATH="$$PWD:.:$(LD_LIBRARY_PATH)" - -testlib: - @mkdir $@ - -testlib/libtest31.so: libtest3.so | testlib - @cp $^ $@ - -EXTRA_DIRS := testlib - -# Build libC.so without -mprefergot compilation flag to force a -# R_SH_JMP_SLOT relocation instead of R_SH_GLOB_DAT for _libC_fini. This is -# needed to resolve the _libC_fini symbol when used (by libC.so destructor), -# whereas with GLOB_DAT relocation the resolution happens in the GOT entry -# when the libC is loaded, for the same reason remove also the "-z now" -# linker flag. -# These are needed to spot the issue test case want raise. - -ifeq ($(TARGET_ARCH),sh) -CFLAGS-OMIT-libC.c = -mprefergot -endif -LDFLAGS-OMIT-libC.c = -Wl,-z,now - -dltest: libtest.so -dltest2: libtest3.so -dlstatic: libstatic.so -dlundef: libundef.so -dlafk: libafk.so -testscope:libA.so -libafk.so: libafk-temp.so -LDFLAGS_libafk.so := ./libafk-temp.so -Wl,-rpath,. -test1: libtest1.so -test2: libtest1.so libtest2.so -test3: libtest1.so libtest2.so -tst-origin: testlib/libtest31.so -libtest1.so: libtest2.so -libB.so: libC.so -libA.so: libB.so -LDFLAGS_libtest.so := -lpthread -LDFLAGS_libtest1.so := ./libtest2.so -Wl,-rpath,. -LDFLAGS_libtest2.so := -Wl,-rpath,. -LDFLAGS_libtest3.so := -lpthread -Wl,-rpath,. -LDFLAGS_libC.so := -ldl -LDFLAGS_libB.so := ./libC.so -Wl,-rpath,. -LDFLAGS_libA.so := ./libB.so -Wl,-rpath,. - -nodelete: nodelmod1.so nodelmod2.so nodelmod3.so -nodelmod3.so: nodelmod4.so -LDFLAGS_nodelete := -rdynamic -ldl -LDFLAGS_nodelmod1.so := -Wl,-z,nodelete -LDFLAGS_nodelmod3.so := ./nodelmod4.so -LDFLAGS_nodelmod4.so := -Wl,-z,nodelete -nodelete1: nodelmod1.so nodelmod2.so -LDFLAGS_nodelete1 := -rdynamic -ldl diff --git a/test/dlopen/dladdr.c b/test/dlopen/dladdr.c deleted file mode 100644 index b64c000bc..000000000 --- a/test/dlopen/dladdr.c +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include -#include -#include - -int main(int argc, char **argv) -{ - Dl_info info; - int res = 0; - - memset(&info, '\0', sizeof(Dl_info)); - res = dladdr((void *)1, &info); - if (res != 0) { - fprintf(stderr, "dladdr() should fail\n"); - fprintf(stderr, "dli_fname = %s\n", info.dli_fname); - fprintf(stderr, "dli_fbase = 0x%08x\n", (unsigned int)info.dli_fbase); - fprintf(stderr, "dli_sname = %s\n", info.dli_sname); - fprintf(stderr, "dli_saddr = 0x%08x\n", (unsigned int)info.dli_saddr); - exit(1); - } - - fprintf(stderr, "dladdr() failed as expected\n"); - return EXIT_SUCCESS; -} - diff --git a/test/dlopen/dlafk.c b/test/dlopen/dlafk.c deleted file mode 100644 index 2eac4afb2..000000000 --- a/test/dlopen/dlafk.c +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -#define LIBNAME "libafk.so" - -#define LIBAFK "libafk-temp.so" -#define LIBAFK_BAK ".libafk-temp.so.temp" - -int main(int argc, char **argv) -{ - void *handle; - - if (rename(LIBAFK, LIBAFK_BAK)) { - fprintf(stderr, "Unable to rename %s: %s\n", LIBAFK, strerror(errno)); - return EXIT_FAILURE; - } - - handle = dlopen(LIBNAME, RTLD_NOW); - if (!handle) { - fprintf(stderr, "Could not open ./%s: %s\n", LIBNAME, dlerror()); - return EXIT_FAILURE; - } - - if (rename(LIBAFK_BAK, LIBAFK)) { - fprintf(stderr, "Unable to rename %s: %s\n", LIBAFK_BAK, strerror(errno)); - return EXIT_FAILURE; - } - - return EXIT_SUCCESS; -} diff --git a/test/dlopen/dlstatic.c b/test/dlopen/dlstatic.c deleted file mode 100644 index 57c8c5dd1..000000000 --- a/test/dlopen/dlstatic.c +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include -#include -#include -#include - -#define LIBNAME "libstatic.so" - -int load_and_test(void) -{ - void *handle; - int (*mystatic)(void); - - handle = dlopen(LIBNAME, RTLD_LAZY); - if (!handle) { - fprintf(stderr, "Could not open ./%s: %s\n", LIBNAME, dlerror()); - return 1; - } - - mystatic = dlsym(handle, "static_test"); - if (mystatic == NULL) { - fprintf(stderr, "Could not locate symbol 'static_test': %s\n", dlerror()); - return 1; - } - - if (!mystatic()) { - fprintf(stderr, "mystatic() failed: static vars were not setup properly\n"); - return 1; - } - - dlclose(handle); - - return 0; -} - -int main(int argc, char **argv) -{ - int count = 5; - while (count-- > 0) - if (load_and_test()) - return EXIT_FAILURE; - return EXIT_SUCCESS; -} diff --git a/test/dlopen/dltest.c b/test/dlopen/dltest.c deleted file mode 100644 index a0fac9027..000000000 --- a/test/dlopen/dltest.c +++ /dev/null @@ -1,41 +0,0 @@ -#include -#include -#include -#include -#include - -int main(int argc, char **argv) -{ - int ret = EXIT_SUCCESS; - void *handle; - void (*mydltest)(void *value1, void *value2); - char *error; - uint32_t *value1, *value2; - - handle = dlopen (LIBNAME, RTLD_LAZY); - if (!handle) { - fprintf(stderr, "Could not open ./%s: %s\n", LIBNAME, dlerror()); - exit(1); - } - - mydltest = dlsym(handle, "dltest"); - if ((error = dlerror()) != NULL) { - fprintf(stderr, "Could not locate symbol 'dltest': %s\n", error); - exit(1); - } - - mydltest(&value1, &value2); - printf("dltest: pthread_once=%p\n", value1); - printf("dltest: pthread_self=%p\n", value2); - if (value1 == value2) { - ret = EXIT_FAILURE; - printf("dltest: values should NOT be equal Weak values resolved incorrectly!\n"); - } else { - printf("dltest: weak symbols resolved correctly.\n"); - } - - dlclose(handle); - - return ret; -} - diff --git a/test/dlopen/dltest2.c b/test/dlopen/dltest2.c deleted file mode 100644 index 127b3b52c..000000000 --- a/test/dlopen/dltest2.c +++ /dev/null @@ -1 +0,0 @@ -#include "dltest.c" diff --git a/test/dlopen/dlundef.c b/test/dlopen/dlundef.c deleted file mode 100644 index cefd93318..000000000 --- a/test/dlopen/dlundef.c +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include -#include -#include -#include - -#define LIBNAME "libundef.so" - -int main(int argc, char **argv) -{ - void *handle; - int (*myundefined)(void); - - handle = dlopen(LIBNAME, RTLD_LAZY); - if (!handle) { - fprintf(stderr, "Could not open ./%s: %s\n", LIBNAME, dlerror()); - return EXIT_FAILURE; - } - - myundefined = dlsym(handle, "__booga_booga_you_cant_touch_this__"); - if (myundefined != NULL) { - fprintf(stderr, "dlsym() found a symbol that does not exist!\n"); - return EXIT_FAILURE; - } - - dlclose(handle); - - return EXIT_SUCCESS; -} diff --git a/test/dlopen/libA.c b/test/dlopen/libA.c deleted file mode 100644 index 13b83dcec..000000000 --- a/test/dlopen/libA.c +++ /dev/null @@ -1,7 +0,0 @@ -extern void libB_func(void); - -void libA_func(void); -void libA_func(void) -{ - libB_func(); -} diff --git a/test/dlopen/libB.c b/test/dlopen/libB.c deleted file mode 100644 index 9b9fff41c..000000000 --- a/test/dlopen/libB.c +++ /dev/null @@ -1,7 +0,0 @@ -extern void libC_func(void); - -void libB_func(void); -void libB_func(void) -{ - libC_func(); -} diff --git a/test/dlopen/libC.c b/test/dlopen/libC.c deleted file mode 100644 index 84cbbef3d..000000000 --- a/test/dlopen/libC.c +++ /dev/null @@ -1,30 +0,0 @@ -#include -#include -#include - -#define LIBNAME "libB.so" -void _libC_fini(void); -void _libC_fini(void) -{ - printf("libC_fini():finish - atexit()\n"); -} - -void libC_fini(void); -void libC_fini(void) -{ - _libC_fini(); -} - -void libC_func(void); -void libC_func(void) -{ - void *libB; - - libB = dlopen(LIBNAME, RTLD_LAZY); - if (!libB) { - fprintf(stderr, "Could not open ./%s: %s\n", LIBNAME, dlerror()); - exit(1); - } - - atexit(libC_fini); -} diff --git a/test/dlopen/libafk-temp.c b/test/dlopen/libafk-temp.c deleted file mode 100644 index 39b58df27..000000000 --- a/test/dlopen/libafk-temp.c +++ /dev/null @@ -1 +0,0 @@ -/* the actual contents doesnt matter */ diff --git a/test/dlopen/libafk.c b/test/dlopen/libafk.c deleted file mode 100644 index 39b58df27..000000000 --- a/test/dlopen/libafk.c +++ /dev/null @@ -1 +0,0 @@ -/* the actual contents doesnt matter */ diff --git a/test/dlopen/libstatic.c b/test/dlopen/libstatic.c deleted file mode 100644 index bf44c3c68..000000000 --- a/test/dlopen/libstatic.c +++ /dev/null @@ -1,15 +0,0 @@ -#include - -static int global_static = -1; - -int static_test(void) -{ - static int local_static = -2; - - if (global_static != -1) - printf("FAIL: global_static is not -1\n"); - if (local_static != -2) - printf("FAIL: local_static is not -2\n"); - - return (global_static == -1 && local_static == -2); -} diff --git a/test/dlopen/libtest.c b/test/dlopen/libtest.c deleted file mode 100644 index 3fd137f06..000000000 --- a/test/dlopen/libtest.c +++ /dev/null @@ -1,11 +0,0 @@ -#include -#include -#include - -void dltest(uint32_t **value1, uint32_t **value2); -void dltest(uint32_t **value1, uint32_t **value2) -{ - *value1 = (uint32_t *) pthread_once; - *value2 = (uint32_t *) pthread_self; -} - diff --git a/test/dlopen/libtest1.c b/test/dlopen/libtest1.c deleted file mode 100644 index a2f7dcdc0..000000000 --- a/test/dlopen/libtest1.c +++ /dev/null @@ -1,40 +0,0 @@ -#include - -extern int libtest2_func(const char *s); - -void __attribute__((constructor)) libtest1_ctor(void); -void libtest1_ctor(void) -{ - printf("libtest1: constructor!\n"); -} - -void __attribute__((destructor)) libtest1_dtor(void); -void libtest1_dtor(void) -{ - printf("libtest1: destructor!\n"); -} - -void __attribute__((weak)) function1(void); -void function1(void) -{ - printf("libtest1: I am weak function1!\n"); -} - -void function2(void); -void function2(void) -{ - printf("libtest1: I am function2!\n"); -} - -int dltest(const char *s); -int dltest(const char *s) -{ - printf( "libtest1: function1 = %p\n" - "libtest1: function2 = %p\n", - function1, function2); - function1(); - function2(); - return(libtest2_func(s)); -} - - diff --git a/test/dlopen/libtest2.c b/test/dlopen/libtest2.c deleted file mode 100644 index 526150666..000000000 --- a/test/dlopen/libtest2.c +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include - -void __attribute__((constructor)) libtest2_ctor(void); -void libtest2_ctor(void) -{ - printf("libtest2: constructor!\n"); -} - -void __attribute__((destructor)) libtest2_dtor(void); -void libtest2_dtor(void) -{ - printf("libtest2: destructor!\n"); -} - -void function1(void); -void function1(void) -{ - printf("libtest2: I am function1!\n"); -} - -void __attribute__((weak)) function2(void); -void function2(void) -{ - printf("libtest2: I am weak function2!\n"); -} - - -int libtest2_func(const char *s); -int libtest2_func(const char *s) -{ - printf( "libtest2: function1 = %p\n" - "libtest2: function2 = %p\n", - function1, function2); - function1(); - function2(); - return 0; -} diff --git a/test/dlopen/libtest3.c b/test/dlopen/libtest3.c deleted file mode 100644 index 1d4bd7e67..000000000 --- a/test/dlopen/libtest3.c +++ /dev/null @@ -1 +0,0 @@ -#include "libtest.c" diff --git a/test/dlopen/libundef.c b/test/dlopen/libundef.c deleted file mode 100644 index 39b58df27..000000000 --- a/test/dlopen/libundef.c +++ /dev/null @@ -1 +0,0 @@ -/* the actual contents doesnt matter */ diff --git a/test/dlopen/nodelete.c b/test/dlopen/nodelete.c deleted file mode 100644 index 07ff96136..000000000 --- a/test/dlopen/nodelete.c +++ /dev/null @@ -1,205 +0,0 @@ -#include -#include -#include -#include -#include - - -static sigjmp_buf jmpbuf; - - -int fini_ran; - - -static void -__attribute__ ((noreturn)) -handler (int sig) -{ - siglongjmp (jmpbuf, 1); -} - - -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ - /* We are testing the two possibilities to mark an object as not deletable: - - marked on the linker commandline with `-z nodelete' - - with the RTLD_NODELETE flag at dlopen()-time. - - The test we are performing should be safe. We are loading the objects, - get the address of variables in the respective object, unload the object - and then try to read the variable. If the object is unloaded this - should lead to an segmentation fault. */ - void *p; - struct sigaction sa; - - sa.sa_handler = handler; - sigfillset (&sa.sa_mask); - sa.sa_flags = SA_RESTART; - - if (sigaction (SIGSEGV, &sa, NULL) == -1) - puts ("cannot install signal handler: %m"); - - p = dlopen ("nodelmod1.so", RTLD_LAZY); - if (p == NULL) - { - printf ("failed to load \"nodelmod1.so\": %s\n", dlerror ()); - exit (1); - } - else - { - int *varp; - - varp = dlsym (p, "var1"); - if (varp == NULL) - { - puts ("failed to get address of \"var1\" in \"nodelmod1.so\""); - exit (1); - } - else - { - *varp = 20000720; - - /* Now close the object. */ - fini_ran = 0; - if (dlclose (p) != 0) - { - puts ("failed to close \"nodelmod1.so\""); - exit (1); - } - else if (! sigsetjmp (jmpbuf, 1)) - { - /* Access the variable again. */ - if (*varp != 20000720) - { - puts ("\"var1\" value not correct"); - exit (1); - } - else if (fini_ran != 0) - { - puts ("destructor of \"nodelmod1.so\" ran"); - exit (1); - } - else - puts ("-z nodelete test succeeded"); - } - else - { - /* We caught an segmentation fault. */ - puts ("\"nodelmod1.so\" got deleted!"); - exit (1); - } - } - } - - p = dlopen ("nodelmod2.so", RTLD_LAZY | RTLD_NODELETE); - if (p == NULL) - { - printf ("failed to load \"nodelmod2.so\": %s\n", dlerror ()); - exit (1); - } - else - { - int *varp; - - varp = dlsym (p, "var2"); - if (varp == NULL) - { - puts ("failed to get address of \"var2\" in \"nodelmod2.so\""); - exit (1); - } - else - { - *varp = 42; - - /* Now close the object. */ - fini_ran = 0; - if (dlclose (p) != 0) - { - puts ("failed to close \"nodelmod2.so\""); - exit (1); - } - else if (! sigsetjmp (jmpbuf, 1)) - { - /* Access the variable again. */ - if (*varp != 42) - { - puts ("\"var2\" value not correct"); - exit (1); - } - else if (fini_ran != 0) - { - puts ("destructor of \"nodelmod2.so\" ran"); - exit (1); - } - else - puts ("RTLD_NODELETE test succeeded"); - } - else - { - /* We caught an segmentation fault. */ - puts ("\"nodelmod2.so\" got deleted!"); - exit (1); - } - } - } - - p = dlopen ("nodelmod3.so", RTLD_LAZY); - if (p == NULL) - { - printf ("failed to load \"nodelmod3.so\": %s\n", dlerror ()); - exit (1); - } - else - { - int *(*fctp) (void); - - fctp = dlsym (p, "addr"); - if (fctp == NULL) - { - puts ("failed to get address of \"addr\" in \"nodelmod3.so\""); - exit (1); - } - else - { - int *varp = fctp (); - - *varp = -1; - - /* Now close the object. */ - fini_ran = 0; - if (dlclose (p) != 0) - { - puts ("failed to close \"nodelmod3.so\""); - exit (1); - } - else if (! sigsetjmp (jmpbuf, 1)) - { - /* Access the variable again. */ - if (*varp != -1) - { - puts ("\"var_in_mod4\" value not correct"); - exit (1); - } - else if (fini_ran != 0) - { - puts ("destructor of \"nodelmod4.so\" ran"); - exit (1); - } - else - puts ("-z nodelete in dependency succeeded"); - } - else - { - /* We caught an segmentation fault. */ - puts ("\"nodelmod4.so\" got deleted!"); - exit (1); - } - } - } - - return 0; -} - -#include "../test-skeleton.c" diff --git a/test/dlopen/nodelete1.c b/test/dlopen/nodelete1.c deleted file mode 100644 index 720e37fd1..000000000 --- a/test/dlopen/nodelete1.c +++ /dev/null @@ -1,59 +0,0 @@ -#include -#include -#include - - -int fini_ran; - -#define LIBNAME1 "nodelmod1.so" - -static int -do_test (void) -{ - /* Verify ability to reload RTLD_NODELETE libraries. - */ - void *p; - - p = dlopen (LIBNAME1, RTLD_NOW); - if (p == NULL) - { - printf ("failed to load "LIBNAME1": %s\n", dlerror ()); - exit (1); - } - - if (dlclose (p) != 0) - { - puts ("failed to close "LIBNAME1""); - exit (1); - } - - p = dlopen (LIBNAME1, RTLD_LAZY); - if (p == NULL) - { - printf ("failed to load "LIBNAME1": %s\n", dlerror ()); - exit (1); - } - - if (dlclose (p) != 0) - { - puts ("failed to close "LIBNAME1""); - exit (1); - } - - p = dlopen ("nodelmod2.so", RTLD_LAZY); - if (p == NULL) - { - printf ("failed to load \"nodelmod2.so\": %s\n", dlerror ()); - exit (1); - } - if (dlclose (p) != 0) - { - puts ("failed to close \"nodelmod2.so\""); - exit (1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/dlopen/nodelmod1.c b/test/dlopen/nodelmod1.c deleted file mode 100644 index 51be080af..000000000 --- a/test/dlopen/nodelmod1.c +++ /dev/null @@ -1,10 +0,0 @@ -extern int fini_ran; - -int var1 = 42; - -static void -__attribute__ ((__destructor__)) -destr (void) -{ - fini_ran = 1; -} diff --git a/test/dlopen/nodelmod2.c b/test/dlopen/nodelmod2.c deleted file mode 100644 index ff2ffc2fc..000000000 --- a/test/dlopen/nodelmod2.c +++ /dev/null @@ -1,10 +0,0 @@ -extern int fini_ran; - -int var2 = 100; - -static void -__attribute__ ((__destructor__)) -destr (void) -{ - fini_ran = 1; -} diff --git a/test/dlopen/nodelmod3.c b/test/dlopen/nodelmod3.c deleted file mode 100644 index 817c94db6..000000000 --- a/test/dlopen/nodelmod3.c +++ /dev/null @@ -1,8 +0,0 @@ -extern int var_in_mod4; -extern int *addr (void); - -int * -addr (void) -{ - return &var_in_mod4; -} diff --git a/test/dlopen/nodelmod4.c b/test/dlopen/nodelmod4.c deleted file mode 100644 index d7fa89396..000000000 --- a/test/dlopen/nodelmod4.c +++ /dev/null @@ -1,10 +0,0 @@ -extern int fini_ran; - -int var_in_mod4 = 99; - -static void -__attribute__ ((__destructor__)) -destr (void) -{ - fini_ran = 1; -} diff --git a/test/dlopen/test1.c b/test/dlopen/test1.c deleted file mode 100644 index c13eb3006..000000000 --- a/test/dlopen/test1.c +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include -#include -#include - -#ifdef __UCLIBC__ -extern void _dlinfo(void); -#endif - -int main(int argc, char **argv) { - void *handle; - int (*mydltest)(const char *s); - char *error; - - handle = dlopen ("./libtest1.so", RTLD_LAZY); - if (!handle) { - fprintf(stderr, "Could not open ./libtest1.so: %s\n", dlerror()); - exit(1); - } - - mydltest = dlsym(handle, "dltest"); - if ((error = dlerror()) != NULL) { - fprintf(stderr, "Could not locate symbol 'dltest': %s\n", error); - exit(1); - } - - mydltest("hello world!"); - - dlclose(handle); - - return EXIT_SUCCESS; -} - diff --git a/test/dlopen/test2.c b/test/dlopen/test2.c deleted file mode 100644 index d8428f7f9..000000000 --- a/test/dlopen/test2.c +++ /dev/null @@ -1,39 +0,0 @@ -#include -#include -#include -#include - -#ifdef __UCLIBC__ -extern void _dlinfo(void); -#endif - -int main(int argc, char **argv) { - void *handle; - int (*mydltest)(const char *s); - char *error; - - handle = dlopen ("./libtest2.so", RTLD_LAZY); - if (!handle) { - fprintf(stderr, "Could not open ./libtest2.so: %s\n", dlerror()); - exit(1); - } - - handle = dlopen ("./libtest1.so", RTLD_LAZY); - if (!handle) { - fprintf(stderr, "Could not open ./libtest1.so: %s\n", dlerror()); - exit(1); - } - - mydltest = dlsym(handle, "dltest"); - if ((error = dlerror()) != NULL) { - fprintf(stderr, "Could not locate symbol 'dltest': %s\n", error); - exit(1); - } - - mydltest("hello world!"); - - dlclose(handle); - - return EXIT_SUCCESS; -} - diff --git a/test/dlopen/test3.c b/test/dlopen/test3.c deleted file mode 100644 index 2f2dfc65c..000000000 --- a/test/dlopen/test3.c +++ /dev/null @@ -1,13 +0,0 @@ -#include -#include -#include -#include - -extern int dltest(const char *s); - -int main(int argc, char **argv) -{ - dltest("hello world!"); - return EXIT_SUCCESS; -} - diff --git a/test/dlopen/testscope.c b/test/dlopen/testscope.c deleted file mode 100644 index 90e079885..000000000 --- a/test/dlopen/testscope.c +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include -#include - -#define LIBNAME "libA.so" -int main(int argc, char **argv) -{ - void *libA; - void (*libAfn)(void); - char *error; - - libA = dlopen(LIBNAME, RTLD_LAZY); - if (!libA) { - fprintf(stderr, "Could not open ./%s: %s\n", LIBNAME, dlerror()); - exit(1); - } - - libAfn = dlsym(libA, "libA_func"); - if ((error = dlerror()) != NULL) { - fprintf(stderr, "Could not locate symbol 'libA_func': %s\n", error); - exit(1); - } - - libAfn(); - - dlclose(libA); - - return EXIT_SUCCESS; -} diff --git a/test/dlopen/tst-origin.c b/test/dlopen/tst-origin.c deleted file mode 100644 index 60fcd3f64..000000000 --- a/test/dlopen/tst-origin.c +++ /dev/null @@ -1,37 +0,0 @@ -#include -#include -#include -#include - -#ifdef __UCLIBC__ -extern void _dlinfo(void); -#endif - -int main(int argc, char **argv) { - void *h1, *h2; - int __attribute__((unused))(*mydltest)(const char *s); - char *error; - - h1 = dlopen ("libtest31.so", RTLD_LAZY); - if (!h1) { - fprintf(stderr, "Could not open libtest31.so: %s\n", dlerror()); - exit(1); - } - - h2 = dlopen ("libtest31.so", RTLD_NOLOAD); - if (!h2) { - fprintf(stderr, "Could not open libtest31.so(RTLD_NOLOAD): %s\n", dlerror()); - exit(1); - } - - mydltest = dlsym(h1, "dltest"); - if ((error = dlerror()) != NULL) { - fprintf(stderr, "Could not locate symbol 'dltest': %s\n", error); - exit(1); - } - - dlclose(h2); - dlclose(h1); - - return EXIT_SUCCESS; -} diff --git a/test/inet/Makefile b/test/inet/Makefile deleted file mode 100644 index b294ea6b5..000000000 --- a/test/inet/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc inet tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/inet/Makefile.in b/test/inet/Makefile.in deleted file mode 100644 index 31a4837ed..000000000 --- a/test/inet/Makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# uClibc inet tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. -# -ifeq ($(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6),) -TESTS_DISABLED := bug-if1 gethost_r-align gethostid if_nameindex tst-aton \ - tst-network tst-ntoa test-ifaddrs -endif - -ifeq ($(UCLIBC_HAS_SOCKET)$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6),) -TESTS_DISABLED += tst-ether_aton tst-ethers tst-ethers-line -endif - -ifeq ($(UCLIBC_HAS_RESOLVER_SUPPORT),) -TESTS_DISABLED += tst-res -else -LDFLAGS_tst-res_glibc := -lresolv # assume it's glibc or somebody with that lib -endif diff --git a/test/inet/bug-if1.c b/test/inet/bug-if1.c deleted file mode 100644 index ea84a6850..000000000 --- a/test/inet/bug-if1.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static int -do_test (void) -{ - char buf[IF_NAMESIZE]; - /* Index 0 is always invalid (see RFC 3493). */ - char *cp = if_indextoname (0, buf); - if (cp != NULL) - { - printf ("invalid index returned result \"%s\"\n", cp); - return 1; - } - else if (errno != ENXIO) - { - int err = errno; - char errbuf1[256]; - char errbuf2[256]; - - printf ("errno = %d (%s), expected %d (%s)\n", - err, strerror_r (err, errbuf1, sizeof (errbuf1)), - ENXIO, strerror_r (ENXIO, errbuf2, sizeof (errbuf2))); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/inet/gethost.c b/test/inet/gethost.c deleted file mode 100644 index 77467e9e3..000000000 --- a/test/inet/gethost.c +++ /dev/null @@ -1,40 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -int main(void) -{ - in_addr_t addr = inet_addr("127.0.0.1"); - struct hostent *hent; - - hent = gethostent(); - if (hent == NULL) { - printf("gethostent(%d):%s\n", errno, hstrerror(h_errno)); - exit(1); - } - - hent = gethostbyname("localhost"); - if (hent == NULL) { - printf("gethostbyname(%d):%s\n", errno, hstrerror(h_errno)); - exit(1); - } - - hent = gethostbyname2("localhost", AF_INET); - if (hent == NULL) { - printf("gethostbyname2(%d):%s\n", errno, hstrerror(h_errno)); - exit(1); - } - - hent = gethostbyaddr(&addr, sizeof(addr), AF_INET); - if (hent == NULL) { - printf("gethostbyaddr(%d):%s\n", errno, hstrerror(h_errno)); - exit(1); - } - - return 0; -} - diff --git a/test/inet/gethost_r-align.c b/test/inet/gethost_r-align.c deleted file mode 100644 index 53ce93acd..000000000 --- a/test/inet/gethost_r-align.c +++ /dev/null @@ -1,50 +0,0 @@ -/* Since the reentrant gethost functions take a char * buffer, - * we have to make sure they internally do not assume alignment. - * The actual return values are not relevant. If the test fails, - * it'll be due to an alignment exception which means the test - * app is killed by the kernel. - */ - -#include -#include -#include -#include -#include -#include -#include - -int main(int argc, char *argv[]) -{ - size_t i; - char buf[1024]; - in_addr_t addr; - - addr = inet_addr("127.0.0.1"); - - for (i = 0; i < sizeof(size_t) * 2; ++i) { - struct hostent hent, *hentres; - int ret, herr; - - printf("Testing misalignment of %2zi bytes: ", i); - - memset(&hent, 0x00, sizeof(hent)); - ret = gethostent_r(&hent, buf + i, sizeof(buf) - i, &hentres, &herr); - printf("%sgethostent_r() ", (ret ? "!!!" : "")); - - memset(&hent, 0x00, sizeof(hent)); - ret = gethostbyname_r("localhost", &hent, buf + i, sizeof(buf) - i, &hentres, &herr); - printf("%sgethostbyname_r() ", (ret ? "!!!" : "")); - - memset(&hent, 0x00, sizeof(hent)); - ret = gethostbyname2_r("localhost", AF_INET, &hent, buf + i, sizeof(buf) - i, &hentres, &herr); - printf("%sgethostbyname2_r() ", (ret ? "!!!" : "")); - - memset(&hent, 0x00, sizeof(hent)); - ret = gethostbyaddr_r(&addr, sizeof(addr), AF_INET, &hent, buf + i, sizeof(buf) - i, &hentres, &herr); - printf("%sgethostbyaddr_r() ", (ret ? "!!!" : "")); - - puts("OK!"); - } - - return 0; -} diff --git a/test/inet/gethostid.c b/test/inet/gethostid.c deleted file mode 100644 index 1b9af86b7..000000000 --- a/test/inet/gethostid.c +++ /dev/null @@ -1,6 +0,0 @@ -#include -#include -int main(void) { - printf("hostid=%ld\n", gethostid()); - return 0; -} diff --git a/test/inet/getnetent.c b/test/inet/getnetent.c deleted file mode 100644 index 1f55e4388..000000000 --- a/test/inet/getnetent.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include -int main(void) -{ - struct netent *net; - setnetent(0); - while ((net = getnetent())) { - while (net->n_net && !((net->n_net >> 24) & 0xff)) { - net->n_net <<= 8; - } - printf("%u.%u.%u.%u\n", - (net->n_net >> 24) & 0xff, (net->n_net >> 16) & 0xff, - (net->n_net >> 8) & 0xff, net->n_net & 0xff); - } - endnetent(); - return 0; -} diff --git a/test/inet/if_nameindex.c b/test/inet/if_nameindex.c deleted file mode 100644 index 126c5bab4..000000000 --- a/test/inet/if_nameindex.c +++ /dev/null @@ -1,61 +0,0 @@ -/* if_nameindex.c: test the if_nameindex() function - * - * Copyright (C) 2006 Erik Andersen - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include -#include -#include - -static char ifname[IF_NAMESIZE]; - -static void test_if_nameindex(void) -{ - size_t i; - struct if_nameindex *ret; - - ret = if_nameindex(); - - if (ret == NULL) { - perror("if_nameindex()"); - exit(1); - } - - printf("--- if_nameindex()\n"); - for (i=0; ret[i].if_name; ++i) - printf("%i: %s\n", ret[i].if_index, ret[i].if_name); - - if_freenameindex(ret); -} - -static void test_if_indextoname(void) -{ - if (if_indextoname(1, ifname) == NULL) { - perror("if_nameindex()"); - exit(1); - } - - printf("if_indextoname(1) = %s\n", ifname); -} - -static void test_if_nametoindex(void) -{ - int ifindex = if_nametoindex(ifname); - - if (ifindex == 0) { - perror("if_nametoindex()"); - exit(1); - } - - printf("if_nametoindex(%s) = %i\n", ifname, ifindex); -} - -int main(void) -{ - test_if_nameindex(); - test_if_indextoname(); - test_if_nametoindex(); - return 0; -} diff --git a/test/inet/tst-aton.c b/test/inet/tst-aton.c deleted file mode 100644 index 3e945f130..000000000 --- a/test/inet/tst-aton.c +++ /dev/null @@ -1,80 +0,0 @@ -#include -#include -#include -#include - -/* Note: uClibc only supports the standard notation 'a.b.c.d' */ - -static struct tests -{ - const char *input; - int valid; - uint32_t result; -} tests[] = -{ - { "", 0, 0 }, - { "-1", 0, 0 }, -/* - { "256", 1, 0x00000100 }, -*/ - { "256.", 0, 0 }, - { "256a", 0, 0 }, -/* - { "0x100", 1, 0x00000100 }, - { "0200.0x123456", 1, 0x80123456 }, - { "0300.0x89123456.", 0 ,0 }, - { "0100.-0xffff0000", 0, 0 }, - { "0.0xffffff", 1, 0x00ffffff }, - { "0.0x1000000", 0, 0 }, - { "0377.16777215", 1, 0xffffffff }, - { "0377.16777216", 0, 0 }, - { "0x87.077777777", 1, 0x87ffffff }, - { "0x87.0100000000", 0, 0 }, - { "0.1.3", 1, 0x00010003 }, -*/ - { "0.256.3", 0, 0 }, - { "256.1.3", 0, 0 }, -/* - { "0.1.0x10000", 0, 0 }, - { "0.1.0xffff", 1, 0x0001ffff }, -*/ - { "0.1a.3", 0, 0 }, - { "0.1.a3", 0, 0 }, - { "1.2.3.4", 1, 0x01020304 }, - { "0400.2.3.4", 0, 0 }, - { "1.0x100.3.4", 0, 0 }, - { "1.2.256.4", 0, 0 }, - { "1.2.3.0x100", 0, 0 }, - { "323543357756889", 0, 0 }, - { "10.1.2.3.4", 0, 0}, -}; - - -int -main (int argc, char *argv[]) -{ - int result = 0; - size_t cnt; - - for (cnt = 0; cnt < sizeof (tests) / sizeof (tests[0]); ++cnt) - { - struct in_addr addr; - - if ((int) inet_aton (tests[cnt].input, &addr) != tests[cnt].valid) - { - if (tests[cnt].valid) - printf ("\"%s\" not seen as valid IP address\n", tests[cnt].input); - else - printf ("\"%s\" seen as valid IP address\n", tests[cnt].input); - result = 1; - } - else if (tests[cnt].valid && addr.s_addr != ntohl (tests[cnt].result)) - { - printf ("\"%s\" not converted correctly: is %08x, should be %08x\n", - tests[cnt].input, addr.s_addr, tests[cnt].result); - result = 1; - } - } - - return result; -} diff --git a/test/inet/tst-ether_aton.c b/test/inet/tst-ether_aton.c deleted file mode 100644 index 67cb43540..000000000 --- a/test/inet/tst-ether_aton.c +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include -#include -#include - -static struct tests -{ - const char *input; - int valid; - uint8_t result[6]; -} tests[] = -{ - { "", 0, {0, 0, 0, 0, 0, 0} }, - { "AB:CD:EF:01:23:45", 1, {171, 205, 239, 1, 35, 69} }, - { "\022B:BB:BB:BB:BB:BB", 0, {0, 0, 0, 0, 0, 0} } -}; - - -int -main (int argc, char *argv[]) -{ - int result = 0; - size_t cnt; - - for (cnt = 0; cnt < sizeof (tests) / sizeof (tests[0]); ++cnt) - { - struct ether_addr *addr; - - if (!!(addr = ether_aton (tests[cnt].input)) != tests[cnt].valid) - { - if (tests[cnt].valid) - printf ("\"%s\" not seen as valid MAC address\n", tests[cnt].input); - else - printf ("\"%s\" seen as valid MAC address\n", tests[cnt].input); - result = 1; - } - else if (tests[cnt].valid - && memcmp(addr, &tests[cnt].result, sizeof(struct ether_addr))) - { - printf ("\"%s\" not converted correctly\n", tests[cnt].input); - result = 1; - } - } - - return result; -} diff --git a/test/inet/tst-ethers-line.c b/test/inet/tst-ethers-line.c deleted file mode 100644 index 182faf098..000000000 --- a/test/inet/tst-ethers-line.c +++ /dev/null @@ -1,55 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -/* glibc 2.4 has no ETHER_FILE_NAME, host compile fails without this */ -#ifndef ETHER_FILE_NAME -#define ETHER_FILE_NAME "/etc/ethers" -#endif - -#define ETHER_LINE_LEN 256 - -/* This test requires /etc/ethers to exist - * and to have nonzero length. You should create it manually, - * if it doesn't exist. - */ - -int main(void) -{ - struct ether_addr addr; - char hostname[ETHER_LINE_LEN]; - int fd, i; - const char *ethers; - struct stat statb; - - if ((fd = open(ETHER_FILE_NAME, O_RDONLY)) == -1) { - perror ("Cannot open file /etc/ethers"); - exit(1); - } - - if (fstat(fd, &statb)) { - perror("Stat failed"); - exit(1); - } - ethers = mmap(NULL, statb.st_size, PROT_READ, MAP_SHARED, fd, 0); - - if (ethers == MAP_FAILED) { - perror("File mapping failed"); - exit(1); - } - - ether_line(ethers, &addr, hostname); - - for (i = 0; i < 6; i++) { - printf("%02x", addr.ether_addr_octet[i]); - if (i < 5) - printf(":"); - } - printf(" %s\n", hostname); - - return 0; -} diff --git a/test/inet/tst-ethers.c b/test/inet/tst-ethers.c deleted file mode 100644 index f12813aec..000000000 --- a/test/inet/tst-ethers.c +++ /dev/null @@ -1,37 +0,0 @@ -#include -#include - -#define ETHER_LINE_LEN 256 - -/* This test requires /etc/ethers to exist - * and to have host "teeth". For example: - * 00:11:22:33:44:55 teeth - * You should create /etc/ethers file with - * host "teeth" manually, if it doesn't exist. - */ - -int main(void) -{ - struct ether_addr addr; - char host[ETHER_LINE_LEN]; - int i; - int res = ether_hostton("teeth", &addr); - - if (res) { - printf("Either /etc/ethers is missing or it has incorrect contents\n"); - return 1; - } - - for (i = 0; i < 6; i++) { - printf("%02x", addr.ether_addr_octet[i]); - if (i < 5) - printf(":"); - } - - res = ether_ntohost(host, &addr); - if (res) - return 1; - printf(" %s\n", host); - - return 0; -} diff --git a/test/inet/tst-ifaddrs.c b/test/inet/tst-ifaddrs.c deleted file mode 100644 index 6e6c01570..000000000 --- a/test/inet/tst-ifaddrs.c +++ /dev/null @@ -1,99 +0,0 @@ -/* Test listing of network interface addresses. - Copyright (C) 2002-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - -static int failures; - -static const char * -addr_string (struct sockaddr *sa, char *buf, size_t size) -{ - if (sa == NULL) - return ""; - - switch (sa->sa_family) - { - case AF_INET: - return inet_ntop (AF_INET, &((struct sockaddr_in *) sa)->sin_addr, - buf, size); - case AF_INET6: - return inet_ntop (AF_INET6, &((struct sockaddr_in6 *) sa)->sin6_addr, - buf, size); -#ifdef AF_LINK - case AF_LINK: - return ""; -#endif - case AF_UNSPEC: - return "---"; - -#ifdef AF_PACKET - case AF_PACKET: - return ""; -#endif - - default: - ++failures; - printf ("sa_family=%d %08x\n", sa->sa_family, - *(int*)&((struct sockaddr_in *) sa)->sin_addr.s_addr); - return ""; - } -} - - -static int -do_test (void) -{ - struct ifaddrs *ifaces, *ifa; - - if (getifaddrs (&ifaces) < 0) - { - if (errno != ENOSYS) - { - printf ("Couldn't get any interfaces: %s.\n", strerror (errno)); - exit (1); - } - /* The function is simply not implemented. */ - exit (0); - } - - puts ("\ -Name Flags Address Netmask Broadcast/Destination"); - - for (ifa = ifaces; ifa != NULL; ifa = ifa->ifa_next) - { - char abuf[64], mbuf[64], dbuf[64]; - printf ("%-15s%#.4x %-15s %-15s %-15s\n", - ifa->ifa_name, ifa->ifa_flags, - addr_string (ifa->ifa_addr, abuf, sizeof (abuf)), - addr_string (ifa->ifa_netmask, mbuf, sizeof (mbuf)), - addr_string (ifa->ifa_broadaddr, dbuf, sizeof (dbuf))); - } - - freeifaddrs (ifaces); - - return failures ? 1 : 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/inet/tst-network.c b/test/inet/tst-network.c deleted file mode 100644 index c6089aa6c..000000000 --- a/test/inet/tst-network.c +++ /dev/null @@ -1,104 +0,0 @@ -/* Test for inet_network. - Copyright (C) 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 2000. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - -struct -{ - const char *network; - uint32_t number; -} tests [] = -{ - {"1.0.0.0", 0x1000000}, - {"1.0.0", 0x10000}, - {"1.0", 0x100}, - {"1", 0x1}, - {"192.168.0.0", 0xC0A80000}, - /* Now some invalid addresses. */ - {"141.30.225.2800", INADDR_NONE}, - {"141.76.1.1.1", INADDR_NONE}, - {"141.76.1.11.", INADDR_NONE}, - {"1410", INADDR_NONE}, - {"1.1410", INADDR_NONE}, - {"1.1410.", INADDR_NONE}, - {"1.1410", INADDR_NONE}, - {"141.76.1111", INADDR_NONE}, - {"141.76.1111.", INADDR_NONE}, - {"1.1.1.257", INADDR_NONE}, - /* Now some from BSD */ - {"0x12", 0x00000012}, - {"127.1", 0x00007f01}, - {"127.1.2.3", 0x7f010203}, - {"0x123456", INADDR_NONE}, - {"0x12.0x34", 0x00001234}, - {"0x12.0x345", INADDR_NONE}, - {"1.2.3.4.5", INADDR_NONE}, - {"1..3.4", INADDR_NONE}, - {".", INADDR_NONE}, - {"1.", INADDR_NONE}, - {".1", INADDR_NONE}, - {"x", INADDR_NONE}, - {"0x", INADDR_NONE}, - {"0", 0x00000000}, - {"0x0", 0x00000000}, - {"01.02.07.077", 0x0102073f}, - {"0x1.23.045.0", 0x01172500}, - {"", INADDR_NONE}, - {" ", INADDR_NONE}, - {"bar", INADDR_NONE}, - {"1.2bar", INADDR_NONE}, - {"1.", INADDR_NONE}, - {"ÊÃÕËÅÎ", INADDR_NONE}, - {"255.255.255.255", INADDR_NONE}, - {"x", INADDR_NONE}, - {"0X12", 0x00000012}, - {"078", INADDR_NONE}, - {"1 bar", INADDR_NONE}, - {"127.0xfff", INADDR_NONE}, -}; - - -int -main (void) -{ - int errors = 0; - size_t i; - uint32_t res; - - for (i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i) - { - printf ("Testing: %s\n", tests[i].network); - res = inet_network (tests[i].network); - - if (res != tests[i].number) - { - ++errors; - printf ("Test failed for inet_network (\"%s\"):\n", - tests[i].network); - printf ("Expected return value %u (0x%x) but got %u (0x%x).\n", - tests[i].number, tests[i].number, res, res); - } - - } - - return errors != 0; -} diff --git a/test/inet/tst-ntoa.c b/test/inet/tst-ntoa.c deleted file mode 100644 index 9be91eb51..000000000 --- a/test/inet/tst-ntoa.c +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include -#include -#include - - -static int -test (unsigned int inaddr, const char *expected) -{ - struct in_addr addr; - char *res; - int fail; - - addr.s_addr = htonl (inaddr); - res = inet_ntoa (addr); - fail = strcmp (res, expected); - - printf ("%#010x -> \"%s\" -> %s%s\n", inaddr, res, - fail ? "fail, expected" : "ok", fail ? expected : ""); - - return fail; -} - - -int -main (void) -{ - int result = 0; - - result |= test (INADDR_LOOPBACK, "127.0.0.1"); - result |= test (INADDR_BROADCAST, "255.255.255.255"); - result |= test (INADDR_ANY, "0.0.0.0"); - result |= test (0xc0060746, "192.6.7.70"); - - return result; -} diff --git a/test/inet/tst-res.c b/test/inet/tst-res.c deleted file mode 100644 index b65f30fd6..000000000 --- a/test/inet/tst-res.c +++ /dev/null @@ -1,44 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -int main(int argc, char **argv) -{ - int r; - struct __res_state state; - - r = res_ninit(&state); - if (r) { - herror("ninit"); - abort(); - } - r = res_init(); - if (r) { - herror("init"); - abort(); - } - -#ifdef __UCLIBC_HAS_BSD_RES_CLOSE__ - res_close(); -#endif -#ifdef __UCLIBC__ - /* assume there is at least one resolver configured */ - assert (state._u._ext.nscount > 0); -#else - assert (state._u._ext.nscount == 0); -#endif - assert (state.options & RES_INIT); - res_nclose(&state); -#ifdef __UCLIBC__ - /* We wipe the whole thing */ - assert ((state.options & RES_INIT) == 0); -#endif - assert (state._u._ext.nscount == 0); - - return 0; -} - diff --git a/test/inet/tst-sock-nonblock.c b/test/inet/tst-sock-nonblock.c deleted file mode 100644 index 54a7ee28a..000000000 --- a/test/inet/tst-sock-nonblock.c +++ /dev/null @@ -1,53 +0,0 @@ -/* vi: set sw=4 ts=4 sts=4: */ -/* - * Nonblocking socket test for uClibc - * Copyright (C) 2012 by Kevin Cernekee - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static int -do_test(void) -{ - int fd, ret, result = 0; - struct sockaddr_un sa; - char buf; - - fd = socket(AF_UNIX, SOCK_DGRAM | SOCK_NONBLOCK, 0); - if (fd < 0) { - perror("socket()"); - result = 1; - } - - memset(&sa, 0, sizeof(sa)); - sa.sun_family = AF_UNIX; - strcpy(sa.sun_path, "socktest"); - unlink("socktest"); - if (bind(fd, (const struct sockaddr *)&sa, sizeof(sa)) < 0) { - perror("bind()"); - result = 1; - } - - ret = read(fd, &buf, sizeof(buf)); - if (ret != -1 || errno != EAGAIN) { - error(0, 0, "Nonblocking read returned %d", ret); - result = 1; - } - - return result; -} - -#define TIMEOUT 5 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/librt/Makefile b/test/librt/Makefile deleted file mode 100644 index 1021afe9c..000000000 --- a/test/librt/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc shm tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/librt/Makefile.in b/test/librt/Makefile.in deleted file mode 100644 index f25522cbe..000000000 --- a/test/librt/Makefile.in +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc shm tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -LDFLAGS_shmtest := -lrt - -ifeq ($(ARCH_USE_MMU),) -TESTS_DISABLED := shmtest -endif diff --git a/test/librt/shmtest.c b/test/librt/shmtest.c deleted file mode 100644 index a14302d09..000000000 --- a/test/librt/shmtest.c +++ /dev/null @@ -1,104 +0,0 @@ -/* Copyright (C) 2009 Mikael Lund Jepsen - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) - -char shared_name[] = "/sharetest"; -int test_data[11] = {0,1,2,3,4,5,6,7,8,9,10}; - -int main(void) { - int pfds[2]; - pid_t pid; - int fd; - int test_data_fails = 0; - char *ptest_data; - unsigned int i; - char buf[30]; - int rv; - - pipe(pfds); - - switch(pid = fork()) { - case -1: - perror("fork"); - exit(1); /* parent exits */ - - case 0: - /* Child */ - - /* wait for parent */ - read(pfds[0], buf, 5); - - fd = shm_open(shared_name, O_RDWR, DEFFILEMODE); - if (fd == -1) { - perror("CHILD - shm_open(existing):"); - exit(1); - } else { - ptest_data = mmap(0, sizeof(test_data), PROT_READ + PROT_WRITE, MAP_SHARED, fd, 0); - if (ptest_data != MAP_FAILED) { - for (i=0; i < ARRAY_SIZE(test_data); i++) { - if (ptest_data[i] != test_data[i]) { - printf("%-40s: Offset %d, local %d, shm %d\n", "Compare memory error", i, test_data[i], ptest_data[i]); - test_data_fails++; - } - } - if (test_data_fails == 0) - printf("%-40s: %s\n", "Compare memory", "Success"); - - munmap(ptest_data, sizeof(test_data)); - } - } - exit(0); - - default: - /* Parent */ - fd = shm_open(shared_name, O_RDWR+O_CREAT+O_EXCL, DEFFILEMODE ); - if (fd == -1) { - perror("PARENT - shm_open(create):"); - } else { - if ((ftruncate(fd, sizeof(test_data))) == -1) - { - printf("%-40s: %s", "ftruncate", strerror(errno)); - shm_unlink(shared_name); - return 0; - } - - ptest_data = mmap(0, sizeof(test_data), PROT_READ + PROT_WRITE, MAP_SHARED, fd, 0); - if (ptest_data == MAP_FAILED) - { - perror("PARENT - mmap:"); - if (shm_unlink(shared_name) == -1) { - perror("PARENT - shm_unlink:"); - } - return 0; - } - for (i=0; i < ARRAY_SIZE(test_data); i++) - ptest_data[i] = test_data[i]; - - /* signal child */ - write(pfds[1], "rdy", 5); - /* wait for child */ - wait(&rv); - - /* Cleanup */ - munmap(ptest_data, sizeof(test_data)); - if (shm_unlink(shared_name) == -1) { - perror("PARENT - shm_unlink:"); - } - } - } - return 0; -} diff --git a/test/locale-mbwc/Makefile b/test/locale-mbwc/Makefile deleted file mode 100644 index 263f325b9..000000000 --- a/test/locale-mbwc/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc locale tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/locale-mbwc/Makefile.in b/test/locale-mbwc/Makefile.in deleted file mode 100644 index 6c0d89447..000000000 --- a/test/locale-mbwc/Makefile.in +++ /dev/null @@ -1,30 +0,0 @@ -# uClibc locale tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. -# tst_mbtowc tst_strcoll tst_strfmon tst_strxfrm \ - -TESTS := tst_iswalnum tst_iswalpha tst_iswcntrl \ - tst_iswctype tst_iswdigit tst_iswgraph \ - tst_iswlower tst_iswprint tst_iswpunct \ - tst_iswspace tst_iswupper tst_iswxdigit \ - tst_mblen tst_mbrlen tst_mbrtowc tst_mbsrtowcs \ - tst_mbstowcs tst_mbtowc tst_strcoll tst_strxfrm \ - tst_swscanf tst_towctrans tst_towlower \ - tst_towupper tst_wcrtomb tst_wcscat tst_wcschr \ - tst_wcscmp tst_wcscoll tst_wcscpy tst_wcscspn \ - tst_wcslen tst_wcsncat tst_wcsncmp tst_wcsncpy \ - tst_wcspbrk tst_wcsrtombs tst_wcsspn tst_wcsstr \ - tst_wcstod tst_wcstok tst_wcstombs tst_wcswidth \ - tst_wcsxfrm tst_wctob tst_wctomb tst_wctrans \ - tst_wctype tst_wcwidth tst_strfmon \ - tst2_mbrtowc - -# NOTE: For now disabled tst_strfmon to avoid build failure. -TESTS_DISABLED := tst_strfmon - -ifneq ($(UCLIBC_HAS_FLOATS),y) -TESTS_DISABLED += tst_swscanf tst_wcstod -endif - -DODIFF_rint := 1 - -EXTRA_CFLAGS := -D__USE_GNU -fno-builtin diff --git a/test/locale-mbwc/dat_isw-funcs.h b/test/locale-mbwc/dat_isw-funcs.h deleted file mode 100644 index 70aecb083..000000000 --- a/test/locale-mbwc/dat_isw-funcs.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_isw-funcs.h - * - * ISW*: int isw* (wint_t wc); - */ - -#include -#include -#include -#include "tst_types.h" -#include "tgn_locdef.h" - -#define TST_ISW_LOC(FUNC, func) \ - TST_ISW## FUNC tst_isw## func ##_loc [] - -#define TST_ISW_REC(locale, func) \ - { Tisw## func, TST_LOC_## locale }, - -/* - * NOTE: - * Set ret_flg = 1, when a return value is expected to be 0 (FALSE). - * Set ret_flg = 0, when a return value is expected to be non-zero (TRUE). - * - * Since the functions return *non*-zero value for TRUE, can't - * compare an actual return value with an expected return value. - * Set the ret_flg=0 for TRUE cases and the tst_isw*() will check - * the non-zero value. - * - * { { WEOF }, { 0,1,0 } }, - * | | - * | ret_val: an expected return value - * ret_flg: if 1, compare an actual return value with the - * ret_val; if 0, the test program - * checks the actual return value. - */ diff --git a/test/locale-mbwc/dat_iswalnum.c b/test/locale-mbwc/dat_iswalnum.c deleted file mode 100644 index 509370359..000000000 --- a/test/locale-mbwc/dat_iswalnum.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_iswalnum.c - * - * ISW*: int iswalnum (wint_t wc); - */ - - -#include "dat_isw-funcs.h" - - -TST_ISW_LOC (ALNUM, alnum) = { - - { TST_ISW_REC (de, alnum) - { - { { 0x0080 }, { 0,1,0 } }, /* CTRL */ - { { 0x009F }, { 0,1,0 } }, /* CTRL */ - { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ - { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ - { { 0x00B0 }, { 0,1,0 } }, /* Degree */ - { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ - { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ - { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ - { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ - { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ - { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ - { { 0x00BB }, { 0,1,0 } }, /* >> */ - { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ - { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ - { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ - { { 0x00BF }, { 0,1,0 } }, /* UD ? */ - { { 0x00C0 }, { 0,0,0 } }, /* A Grave */ - { { 0x00D6 }, { 0,0,0 } }, /* O dia */ - { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ - { { 0x00D8 }, { 0,0,0 } }, /* O stroke */ - { { 0x00DF }, { 0,0,0 } }, /* small Sh */ - { { 0x00E0 }, { 0,0,0 } }, /* a grave */ - { { 0x00F6 }, { 0,0,0 } }, /* o dia */ - { { 0x00F7 }, { 0,1,0 } }, /* division */ - { { 0x00F8 }, { 0,0,0 } }, /* o stroke */ - { { 0x00FF }, { 0,0,0 } }, /* y dia */ - { .is_last = 1 } /* last element */ - } - }, - { TST_ISW_REC (de_UTF8, alnum) - { - { { 0x0080 }, { 0,1,0 } }, /* CTRL */ - { { 0x009F }, { 0,1,0 } }, /* CTRL */ - { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ - { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ - { { 0x00B0 }, { 0,1,0 } }, /* Degree */ - { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ - { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ - { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ - { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ - { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ - { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ - { { 0x00BB }, { 0,1,0 } }, /* >> */ - { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ - { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ - { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ - { { 0x00BF }, { 0,1,0 } }, /* UD ? */ - { { 0x00C0 }, { 0,0,0 } }, /* A Grave */ - { { 0x00D6 }, { 0,0,0 } }, /* O dia */ - { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ - { { 0x00D8 }, { 0,0,0 } }, /* O stroke */ - { { 0x00DF }, { 0,0,0 } }, /* small Sh */ - { { 0x00E0 }, { 0,0,0 } }, /* a grave */ - { { 0x00F6 }, { 0,0,0 } }, /* o dia */ - { { 0x00F7 }, { 0,1,0 } }, /* division */ - { { 0x00F8 }, { 0,0,0 } }, /* o stroke */ - { { 0x00FF }, { 0,0,0 } }, /* y dia */ - { .is_last = 1 } /* last element */ - } - }, - { TST_ISW_REC (enUS, alnum) - { - { { WEOF }, { 0,1,0 } }, - { { 0x0000 }, { 0,1,0 } }, - { { 0x001F }, { 0,1,0 } }, - { { 0x0020 }, { 0,1,0 } }, - { { 0x0021 }, { 0,1,0 } }, - { { 0x002F }, { 0,1,0 } }, - { { 0x0030 }, { 0,0,0 } }, - { { 0x0039 }, { 0,0,0 } }, - { { 0x003A }, { 0,1,0 } }, - { { 0x0040 }, { 0,1,0 } }, - { { 0x0041 }, { 0,0,0 } }, - { { 0x005A }, { 0,0,0 } }, - { { 0x005B }, { 0,1,0 } }, - { { 0x0060 }, { 0,1,0 } }, - { { 0x0061 }, { 0,0,0 } }, - { { 0x007A }, { 0,0,0 } }, - { { 0x007B }, { 0,1,0 } }, - { { 0x007E }, { 0,1,0 } }, - { { 0x007F }, { 0,1,0 } }, - { { 0x0080 }, { 0,1,0 } }, - { .is_last = 1 } /* last element */ - } - }, -#if 0 - { TST_ISW_REC (eucJP, alnum) -#else - { TST_ISW_REC (ja_UTF8, alnum) -#endif - { - { { 0x3000 }, { 0,1,0 } }, /* IDEO. SPACE */ - { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ -#ifdef SHOJI_IS_RIGHT - { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ -#else - { { 0x3029 }, { 0,0,0 } }, /* Hangzhou NUM9 */ -#endif - { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ - { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ - { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ -#ifdef SHOJI_IS_RIGHT - { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ - { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ -#else - { { 0x3041 }, { 0,0,0 } }, /* HIRAGANA a */ - { { 0x3094 }, { 0,0,0 } }, /* HIRAGANA u" */ -#endif - { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ -#ifdef SHOJI_IS_RIGHT - { { 0x309E }, { 0,1,0 } }, /* ITERATION MARK */ - { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ - { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ -#else - { { 0x309E }, { 0,0,0 } }, /* ITERATION MARK */ - { { 0x30A1 }, { 0,0,0 } }, /* KATAKANA a */ - { { 0x30FA }, { 0,0,0 } }, /* KATAKANA wo" */ -#endif - { { 0x30FB }, { 0,1,0 } }, /* KATAKANA MID.DOT */ -#ifdef SHOJI_IS_RIGHT - { { 0x30FE }, { 0,1,0 } }, /* KATAKANA ITERATION */ -#else - { { 0x30FE }, { 0,0,0 } }, /* KATAKANA ITERATION */ -#endif - { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ - { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ - { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ - { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ - { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ -#ifdef SHOJI_IS_RIGHT - { { 0x4E00 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E05 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x4E07 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4FFF }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9000 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9006 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA5 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ -#else - { { 0x4E00 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E05 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E06 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x4E07 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x4FFF }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x9000 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x9006 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x9007 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA5 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ -#endif - { { 0xFE4F }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0xFF0F }, { 0,1,0 } }, /* FULL SLASH */ - { { 0xFF19 }, { 0,0,0 } }, /* FULL 9 */ - { { 0xFF20 }, { 0,1,0 } }, /* FULL @ */ - { { 0xFF3A }, { 0,0,0 } }, /* FULL Z */ - { { 0xFF40 }, { 0,1,0 } }, /* FULL GRAVE ACC. */ - { { 0xFF5A }, { 0,0,0 } }, /* FULL z */ - { { 0xFF5E }, { 0,1,0 } }, /* FULL ~ (tilde) */ - { { 0xFF61 }, { 0,1,0 } }, /* HALF IDEO.STOP. . */ - { { 0xFF65 }, { 0,1,0 } }, /* HALF KATA MID.DOT */ -#ifdef SHOJI_IS_RIGHT - { { 0xFF66 }, { 0,1,0 } }, /* HALF KATA WO */ - { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ - { { 0xFF70 }, { 0,1,0 } }, /* HALF KATA PL - */ - { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ - { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ -#else - { { 0xFF66 }, { 0,0,0 } }, /* HALF KATA WO */ - { { 0xFF6F }, { 0,0,0 } }, /* HALF KATA tu */ - { { 0xFF70 }, { 0,0,0 } }, /* HALF KATA PL - */ - { { 0xFF71 }, { 0,0,0 } }, /* HALF KATA A */ - { { 0xFF9E }, { 0,0,0 } }, /* HALF KATA MI */ -#endif - { .is_last = 1 } /* last element */ - } - }, - { TST_ISW_REC (end, alnum) } -}; diff --git a/test/locale-mbwc/dat_iswalpha.c b/test/locale-mbwc/dat_iswalpha.c deleted file mode 100644 index c2b59fbf9..000000000 --- a/test/locale-mbwc/dat_iswalpha.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_iswalpha.c - * - * ISW*: int iswalpha (wint_t wc); - */ - - -#include "dat_isw-funcs.h" - - -TST_ISW_LOC (ALPHA, alpha) = { - - { TST_ISW_REC (de, alpha) - { - { { 0x0080 }, { 0,1,0 } }, /* CTRL */ - { { 0x009F }, { 0,1,0 } }, /* CTRL */ - { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ - { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ - { { 0x00B0 }, { 0,1,0 } }, /* Degree */ - { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ - { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ - { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ - { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ - { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ - { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ - { { 0x00BB }, { 0,1,0 } }, /* >> */ - { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ - { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ - { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ - { { 0x00BF }, { 0,1,0 } }, /* UD ? */ - { { 0x00C0 }, { 0,0,0 } }, /* A Grave */ - { { 0x00D6 }, { 0,0,0 } }, /* O dia */ - { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ - { { 0x00D8 }, { 0,0,0 } }, /* O stroke */ - { { 0x00DF }, { 0,0,0 } }, /* small Sh */ - { { 0x00E0 }, { 0,0,0 } }, /* a grave */ - { { 0x00F6 }, { 0,0,0 } }, /* o dia */ - { { 0x00F7 }, { 0,1,0 } }, /* division */ - { { 0x00F8 }, { 0,0,0 } }, /* o stroke */ - { { 0x00FF }, { 0,0,0 } }, /* y dia */ - { .is_last = 1 } /* last element */ - } - }, - { TST_ISW_REC (enUS, alpha) - { - { { WEOF }, { 0,1,0 } }, - { { 0x0000 }, { 0,1,0 } }, - { { 0x001F }, { 0,1,0 } }, - { { 0x0020 }, { 0,1,0 } }, - { { 0x0021 }, { 0,1,0 } }, - { { 0x002F }, { 0,1,0 } }, - { { 0x0030 }, { 0,1,0 } }, - { { 0x0039 }, { 0,1,0 } }, - { { 0x003A }, { 0,1,0 } }, - { { 0x0040 }, { 0,1,0 } }, - { { 0x0041 }, { 0,0,0 } }, - { { 0x005A }, { 0,0,0 } }, - { { 0x005B }, { 0,1,0 } }, - { { 0x0060 }, { 0,1,0 } }, - { { 0x0061 }, { 0,0,0 } }, - { { 0x007A }, { 0,0,0 } }, - { { 0x007B }, { 0,1,0 } }, - { { 0x007E }, { 0,1,0 } }, - { { 0x007F }, { 0,1,0 } }, - { { 0x0080 }, { 0,1,0 } }, /* 20 */ - { .is_last = 1 } /* last element */ - } - }, -#if 0 - { TST_ISW_REC (eucJP, alpha) -#else - { TST_ISW_REC (ja_UTF8, alpha) -#endif - { - { { 0x3000 }, { 0,1,0 } }, /* IDEO. SPACE */ - { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ -#ifdef SHOJI_IS_RIGHT - { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ -#else - { { 0x3029 }, { 0,0,0 } }, /* Hangzhou NUM9 */ -#endif - { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ - { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ - { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ -#ifdef SHOJI_IS_RIGHT - { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ - { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ -#else - { { 0x3041 }, { 0,0,0 } }, /* HIRAGANA a */ - { { 0x3094 }, { 0,0,0 } }, /* HIRAGANA u" */ -#endif - { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ -#ifdef SHOJI_IS_RIGHT - { { 0x309E }, { 0,1,0 } }, /* ITERATION MARK */ - { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ - { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ -#else - { { 0x309E }, { 0,0,0 } }, /* ITERATION MARK */ - { { 0x30A1 }, { 0,0,0 } }, /* KATAKANA a */ - { { 0x30FA }, { 0,0,0 } }, /* KATAKANA wo" */ -#endif - { { 0x30FB }, { 0,1,0 } }, /* KATAKANA MID.DOT */ -#ifdef SHOJI_IS_RIGHT - { { 0x30FE }, { 0,1,0 } }, /* KATAKANA ITERATION */ -#else - { { 0x30FE }, { 0,0,0 } }, /* KATAKANA ITERATION */ -#endif - { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ - { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ - { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ - { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ - { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ -#ifdef SHOJI_IS_RIGHT - { { 0x4E00 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E05 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x4E07 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4FFF }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9000 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9006 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA5 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ -#else - { { 0x4E00 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E05 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E06 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x4E07 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x4FFF }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x9000 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x9006 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x9007 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA5 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ -#endif - { { 0xFE4F }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0xFF0F }, { 0,1,0 } }, /* FULL SLASH */ -#ifdef SHOJI_IS_RIGHT - { { 0xFF19 }, { 0,1,0 } }, /* FULL 9 */ -#else - { { 0xFF19 }, { 0,0,0 } }, /* FULL 9 */ -#endif - { { 0xFF20 }, { 0,1,0 } }, /* FULL @ */ - { { 0xFF3A }, { 0,0,0 } }, /* FULL Z */ - { { 0xFF40 }, { 0,1,0 } }, /* FULL GRAVE ACC. */ - { { 0xFF5A }, { 0,0,0 } }, /* FULL z */ - { { 0xFF5E }, { 0,1,0 } }, /* FULL ~ (tilde) */ - { { 0xFF61 }, { 0,1,0 } }, /* HALF IDEO.STOP. . */ - { { 0xFF65 }, { 0,1,0 } }, /* HALF KATA MID.DOT */ -#ifdef SHOJI_IS_RIGHT - { { 0xFF66 }, { 0,1,0 } }, /* HALF KATA WO */ - { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ - { { 0xFF70 }, { 0,1,0 } }, /* HALF KATA PL - */ - { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ - { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ -#else - { { 0xFF66 }, { 0,0,0 } }, /* HALF KATA WO */ - { { 0xFF6F }, { 0,0,0 } }, /* HALF KATA tu */ - { { 0xFF70 }, { 0,0,0 } }, /* HALF KATA PL - */ - { { 0xFF71 }, { 0,0,0 } }, /* HALF KATA A */ - { { 0xFF9E }, { 0,0,0 } }, /* HALF KATA MI */ -#endif - { .is_last = 1 } /* last element */ - } - }, - { TST_ISW_REC (end, alpha) } -}; diff --git a/test/locale-mbwc/dat_iswcntrl.c b/test/locale-mbwc/dat_iswcntrl.c deleted file mode 100644 index e6ec685ed..000000000 --- a/test/locale-mbwc/dat_iswcntrl.c +++ /dev/null @@ -1,125 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_iswcntrl.c - * - * ISW*: int iswcntrl (wint_t wc); - */ - - -#include "dat_isw-funcs.h" - - -TST_ISW_LOC (CNTRL, cntrl) = { - - { TST_ISW_REC (de, cntrl) - { - { { 0x0080 }, { 0,0,0 } }, /* CTRL */ - { { 0x009F }, { 0,0,0 } }, /* CTRL */ - { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ - { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ - { { 0x00B0 }, { 0,1,0 } }, /* Degree */ - { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ - { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ - { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ - { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ - { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ - { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ - { { 0x00BB }, { 0,1,0 } }, /* >> */ - { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ - { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ - { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ - { { 0x00BF }, { 0,1,0 } }, /* UD ? */ - { { 0x00C0 }, { 0,1,0 } }, /* A Grave */ - { { 0x00D6 }, { 0,1,0 } }, /* O dia */ - { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ - { { 0x00D8 }, { 0,1,0 } }, /* O stroke */ - { { 0x00DF }, { 0,1,0 } }, /* small Sh */ - { { 0x00E0 }, { 0,1,0 } }, /* a grave */ - { { 0x00F6 }, { 0,1,0 } }, /* o dia */ - { { 0x00F7 }, { 0,1,0 } }, /* division */ - { { 0x00F8 }, { 0,1,0 } }, /* o stroke */ - { { 0x00FF }, { 0,1,0 } }, /* y dia */ - { .is_last = 1 } /* Last element. */ - } - }, - { TST_ISW_REC (enUS, cntrl) - { - { { WEOF }, { 0,1,0 } }, - { { 0x0000 }, { 0,0,0 } }, - { { 0x001F }, { 0,0,0 } }, - { { 0x0020 }, { 0,1,0 } }, - { { 0x0021 }, { 0,1,0 } }, - { { 0x002F }, { 0,1,0 } }, - { { 0x0030 }, { 0,1,0 } }, - { { 0x0039 }, { 0,1,0 } }, - { { 0x003A }, { 0,1,0 } }, - { { 0x0040 }, { 0,1,0 } }, - { { 0x0041 }, { 0,1,0 } }, - { { 0x005A }, { 0,1,0 } }, - { { 0x005B }, { 0,1,0 } }, - { { 0x0060 }, { 0,1,0 } }, - { { 0x0061 }, { 0,1,0 } }, - { { 0x007A }, { 0,1,0 } }, - { { 0x007B }, { 0,1,0 } }, - { { 0x007E }, { 0,1,0 } }, - { { 0x007F }, { 0,0,0 } }, - { { 0x0080 }, { 0,1,0 } }, - { .is_last = 1 } /* Last element. */ - } - }, -#if 0 - { TST_ISW_REC (eucJP, cntrl) -#else - { TST_ISW_REC (ja_UTF8, cntrl) -#endif - { - { { 0x3000 }, { 0,1,0 } }, /* IDEO. SPACE */ - { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ - { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ - { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ - { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ - { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ - { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ - { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ - { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ - { { 0x309E }, { 0,1,0 } }, /* ITERATION MARK */ - { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ - { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ - { { 0x30FB }, { 0,1,0 } }, /* KATAKANA MID.DOT */ - { { 0x30FE }, { 0,1,0 } }, /* KATAKANA ITERATION */ - { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ - { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ - { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ - { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ - { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ - { { 0x4E00 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E05 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x4E07 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4FFF }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9000 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9006 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA5 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0xFE4F }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0xFF0F }, { 0,1,0 } }, /* FULL SLASH */ - { { 0xFF19 }, { 0,1,0 } }, /* FULL 9 */ - { { 0xFF20 }, { 0,1,0 } }, /* FULL @ */ - { { 0xFF3A }, { 0,1,0 } }, /* FULL Z */ - { { 0xFF40 }, { 0,1,0 } }, /* FULL GRAVE ACC. */ - { { 0xFF5A }, { 0,1,0 } }, /* FULL z */ - { { 0xFF5E }, { 0,1,0 } }, /* FULL ~ (tilde) */ - { { 0xFF61 }, { 0,1,0 } }, /* HALF IDEO.STOP. . */ - { { 0xFF65 }, { 0,1,0 } }, /* HALF KATA MID.DOT */ - { { 0xFF66 }, { 0,1,0 } }, /* HALF KATA WO */ - { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ - { { 0xFF70 }, { 0,1,0 } }, /* HALF KATA PL - */ - { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ - { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ - { .is_last = 1 } /* Last element. */ - } - }, - { TST_ISW_REC(end, cntrl) } -}; diff --git a/test/locale-mbwc/dat_iswctype.c b/test/locale-mbwc/dat_iswctype.c deleted file mode 100644 index 0dcf1824e..000000000 --- a/test/locale-mbwc/dat_iswctype.c +++ /dev/null @@ -1,667 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_iswctype.c - * - * ISWCTYPE: int iswctype( wint_t wc, wctype_t charclass ); - */ - -#include -#include -#include -#include "tst_types.h" -#include "tgn_locdef.h" - -/* - * NOTE: - * Set ret_flg = 1, when a return value is expected to be 0 (FALSE). - * Set ret_flg = 0, when a return value is expected to be non-zero (TRUE). - * - * Since the functions return *non*-zero value for TRUE, can't - * compare an actual return value with an expected return value. - * Set the ret_flg=0 for TRUE cases and the tst_isw*() will check - * the non-zero value. - * - * { { WEOF }, { 0,1,0 } }, - * | | - * | ret_val: an expected return value - * ret_flg: if 1, compare an actual return value with the - * ret_val; if 0, the test program checks - * the actual return value. - */ - -TST_ISWCTYPE tst_iswctype_loc [] = { - { - { Tiswctype, TST_LOC_de }, - { - { { 0x009F, "alnum" }, { 0,1,0 } }, /* CTRL */ - { { 0x00A0, "alnum" }, { 0,1,0 } }, /* NB SPACE */ - { { 0x00A1, "alnum" }, { 0,1,0 } }, /* UD ! */ - { { 0x00B1, "alnum" }, { 0,1,0 } }, /* +- sign */ - { { 0x00B3, "alnum" }, { 0,1,0 } }, /* SUP 3 */ - { { 0x00B4, "alnum" }, { 0,1,0 } }, /* ACUTE */ - { { 0x00BB, "alnum" }, { 0,1,0 } }, /* >> */ - { { 0x00BE, "alnum" }, { 0,1,0 } }, /* 3/4 */ - { { 0x00BF, "alnum" }, { 0,1,0 } }, /* UD ? */ - { { 0x00C0, "alnum" }, { 0,0,0 } }, /* A Grave */ - { { 0x00D6, "alnum" }, { 0,0,0 } }, /* O dia */ - { { 0x00D7, "alnum" }, { 0,1,0 } }, /* multipl. */ - { { 0x00D8, "alnum" }, { 0,0,0 } }, /* O stroke */ - { { 0x00DF, "alnum" }, { 0,0,0 } }, /* small Sh */ - { { 0x00E0, "alnum" }, { 0,0,0 } }, /* a grave */ - { { 0x00F6, "alnum" }, { 0,0,0 } }, /* o dia */ - { { 0x00F7, "alnum" }, { 0,1,0 } }, /* division */ - { { 0x00F8, "alnum" }, { 0,0,0 } }, /* o stroke */ - { { 0x00FF, "alnum" }, { 0,0,0 } }, /* y dia */ - { { 0x0080, "alpha" }, { 0,1,0 } }, /* CTRL */ - { { 0x00A0, "alpha" }, { 0,1,0 } }, /* NB SPACE */ - { { 0x00A1, "alpha" }, { 0,1,0 } }, /* UD ! */ - { { 0x00B1, "alpha" }, { 0,1,0 } }, /* +- sign */ - { { 0x00B4, "alpha" }, { 0,1,0 } }, /* ACUTE */ - { { 0x00B8, "alpha" }, { 0,1,0 } }, /* CEDILLA */ - { { 0x00B9, "alpha" }, { 0,1,0 } }, /* SUP 1 */ - { { 0x00BB, "alpha" }, { 0,1,0 } }, /* >> */ - { { 0x00BE, "alpha" }, { 0,1,0 } }, /* 3/4 */ - { { 0x00BF, "alpha" }, { 0,1,0 } }, /* UD ? */ - { { 0x00C0, "alpha" }, { 0,0,0 } }, /* A Grave */ - { { 0x00D6, "alpha" }, { 0,0,0 } }, /* O dia */ - { { 0x00D7, "alpha" }, { 0,1,0 } }, /* multipl. */ - { { 0x00D8, "alpha" }, { 0,0,0 } }, /* O stroke */ - { { 0x00DF, "alpha" }, { 0,0,0 } }, /* small Sh */ - { { 0x00E0, "alpha" }, { 0,0,0 } }, /* a grave */ - { { 0x00F6, "alpha" }, { 0,0,0 } }, /* o dia */ - { { 0x00F7, "alpha" }, { 0,1,0 } }, /* division */ - { { 0x00F8, "alpha" }, { 0,0,0 } }, /* o stroke */ - { { 0x00FF, "alpha" }, { 0,0,0 } }, /* y dia */ - { { 0x0080, "cntrl" }, { 0,0,0 } }, /* CTRL */ - { { 0x009F, "cntrl" }, { 0,0,0 } }, /* CTRL */ - { { 0x00A0, "cntrl" }, { 0,1,0 } }, /* NB SPACE */ - { { 0x00F6, "cntrl" }, { 0,1,0 } }, /* o dia */ - { { 0x00FF, "cntrl" }, { 0,1,0 } }, /* y dia */ - { { 0x00B9, "digit" }, { 0,1,0 } }, /* SUP 1 */ - { { 0x00BE, "digit" }, { 0,1,0 } }, /* 3/4 */ - { { 0x009F, "graph" }, { 0,1,0 } }, /* CTRL */ -#ifdef SHOJI_IS_RIGHT - { { 0x00A0, "graph" }, { 0,1,0 } }, /* NB SPACE */ -#else - { { 0x00A0, "graph" }, { 0,0,0 } }, /* NB SPACE */ -#endif - { { 0x00A1, "graph" }, { 0,0,0 } }, /* UD ! */ - { { 0x00B1, "graph" }, { 0,0,0 } }, /* +- sign */ - { { 0x00B3, "graph" }, { 0,0,0 } }, /* SUP 3 */ - { { 0x00B4, "graph" }, { 0,0,0 } }, /* ACUTE */ - { { 0x00BB, "graph" }, { 0,0,0 } }, /* >> */ - { { 0x00BE, "graph" }, { 0,0,0 } }, /* 3/4 */ - { { 0x00C0, "graph" }, { 0,0,0 } }, /* A Grave */ - { { 0x00D6, "graph" }, { 0,0,0 } }, /* O dia */ - { { 0x00D7, "graph" }, { 0,0,0 } }, /* multipl. */ - { { 0x00D8, "graph" }, { 0,0,0 } }, /* O stroke */ - { { 0x00DF, "graph" }, { 0,0,0 } }, /* small Sh */ - { { 0x00F7, "graph" }, { 0,0,0 } }, /* division */ - { { 0x00F8, "graph" }, { 0,0,0 } }, /* o stroke */ - { { 0x00FF, "graph" }, { 0,0,0 } }, /* y dia */ - { { 0x009F, "print" }, { 0,1,0 } }, /* CTRL */ -#ifdef SHOJI_IS_RIGHT - { { 0x00A0, "print" }, { 0,1,0 } }, /* NB SPACE */ -#else - { { 0x00A0, "print" }, { 0,0,0 } }, /* NB SPACE */ -#endif - { { 0x00A1, "print" }, { 0,0,0 } }, /* UD ! */ - { { 0x00B1, "print" }, { 0,0,0 } }, /* +- sign */ - { { 0x00B4, "print" }, { 0,0,0 } }, /* ACUTE */ - { { 0x00B8, "print" }, { 0,0,0 } }, /* CEDILLA */ - { { 0x00B9, "print" }, { 0,0,0 } }, /* SUP 1 */ - { { 0x00BB, "print" }, { 0,0,0 } }, /* >> */ - { { 0x00BE, "print" }, { 0,0,0 } }, /* 3/4 */ - { { 0x00C0, "print" }, { 0,0,0 } }, /* A Grave */ - { { 0x00DF, "print" }, { 0,0,0 } }, /* small Sh */ - { { 0x00F6, "print" }, { 0,0,0 } }, /* o dia */ - { { 0x00F7, "print" }, { 0,0,0 } }, /* division */ - { { 0x00F8, "print" }, { 0,0,0 } }, /* o stroke */ - { { 0x00FF, "print" }, { 0,0,0 } }, /* y dia */ - { { 0x009F, "punct" }, { 0,1,0 } }, /* CTRL */ -#ifdef SHOJI_IS_RIGHT - { { 0x00A0, "punct" }, { 0,1,0 } }, /* NB SPACE */ -#else - { { 0x00A0, "punct" }, { 0,0,0 } }, /* NB SPACE */ -#endif - { { 0x00A1, "punct" }, { 0,0,0 } }, /* UD ! */ - { { 0x00B0, "punct" }, { 0,0,0 } }, /* Degree */ - { { 0x00B1, "punct" }, { 0,0,0 } }, /* +- sign */ - { { 0x00B2, "punct" }, { 0,0,0 } }, /* SUP 2 */ - { { 0x00B3, "punct" }, { 0,0,0 } }, /* SUP 3 */ - { { 0x00B4, "punct" }, { 0,0,0 } }, /* ACUTE */ - { { 0x00B8, "punct" }, { 0,0,0 } }, /* CEDILLA */ - { { 0x00B9, "punct" }, { 0,0,0 } }, /* SUP 1 */ - { { 0x00BB, "punct" }, { 0,0,0 } }, /* >> */ - { { 0x00BC, "punct" }, { 0,0,0 } }, /* 1/4 */ - { { 0x00BD, "punct" }, { 0,0,0 } }, /* 1/2 */ - { { 0x00BE, "punct" }, { 0,0,0 } }, /* 3/4 */ - { { 0x00BF, "punct" }, { 0,0,0 } }, /* UD ? */ - { { 0x00C0, "punct" }, { 0,1,0 } }, /* A Grave */ - { { 0x00D7, "punct" }, { 0,0,0 } }, /* multipl. */ - { { 0x00DF, "punct" }, { 0,1,0 } }, /* small Sh */ - { { 0x00F6, "punct" }, { 0,1,0 } }, /* o dia */ - { { 0x00F7, "punct" }, { 0,0,0 } }, /* division */ - { { 0x00FF, "punct" }, { 0,1,0 } }, /* y dia */ - { { 0x009F, "space" }, { 0,1,0 } }, /* CTRL */ - { { 0x00A0, "space" }, { 0,1,0 } }, /* NB SPACE */ - { { 0x00A1, "space" }, { 0,1,0 } }, /* UD ! */ - { { 0x00B1, "space" }, { 0,1,0 } }, /* +- sign */ - { { 0x00F8, "space" }, { 0,1,0 } }, /* o stroke */ - { { 0x00B3, "lower" }, { 0,1,0 } }, /* SUP 3 */ - { { 0x00B8, "lower" }, { 0,1,0 } }, /* CEDILLA */ - { { 0x00BE, "lower" }, { 0,1,0 } }, /* 3/4 */ - { { 0x00C0, "lower" }, { 0,1,0 } }, /* A Grave */ - { { 0x00D6, "lower" }, { 0,1,0 } }, /* O dia */ - { { 0x00D8, "lower" }, { 0,1,0 } }, /* O stroke */ - { { 0x00DF, "lower" }, { 0,0,0 } }, /* small Sh */ - { { 0x00E0, "lower" }, { 0,0,0 } }, /* a grave */ - { { 0x00F6, "lower" }, { 0,0,0 } }, /* o dia */ - { { 0x00F7, "lower" }, { 0,1,0 } }, /* division */ - { { 0x00F8, "lower" }, { 0,0,0 } }, /* o stroke */ - { { 0x00FF, "lower" }, { 0,0,0 } }, /* y dia */ - { { 0x00B4, "upper" }, { 0,1,0 } }, /* ACUTE */ - { { 0x00B8, "upper" }, { 0,1,0 } }, /* CEDILLA */ - { { 0x00B9, "upper" }, { 0,1,0 } }, /* SUP 1 */ - { { 0x00BE, "upper" }, { 0,1,0 } }, /* 3/4 */ - { { 0x00BF, "upper" }, { 0,1,0 } }, /* UD ? */ - { { 0x00C0, "upper" }, { 0,0,0 } }, /* A Grave */ - { { 0x00D6, "upper" }, { 0,0,0 } }, /* O dia */ - { { 0x00D7, "upper" }, { 0,1,0 } }, /* multipl. */ - { { 0x00D8, "upper" }, { 0,0,0 } }, /* O stroke */ - { { 0x00DF, "upper" }, { 0,1,0 } }, /* small Sh */ - { { 0x00FF, "upper" }, { 0,1,0 } }, /* y dia */ - { { 0x00B9, "xdigit" }, { 0,1,0 } }, /* SUP 1 */ - { { 0x00BC, "xdigit" }, { 0,1,0 } }, /* 1/4 */ - { .is_last = 1 } - } - }, - { - { Tiswctype, TST_LOC_enUS }, - { - { { WEOF, "alnum" }, { 0,1,0 } }, - { { 0x0000, "alnum" }, { 0,1,0 } }, - { { 0x001F, "alnum" }, { 0,1,0 } }, - { { 0x0020, "alnum" }, { 0,1,0 } }, - { { 0x0021, "alnum" }, { 0,1,0 } }, - { { 0x002F, "alnum" }, { 0,1,0 } }, - { { 0x0030, "alnum" }, { 0,0,0 } }, - { { 0x0039, "alnum" }, { 0,0,0 } }, - { { 0x003A, "alnum" }, { 0,1,0 } }, - { { 0x0040, "alnum" }, { 0,1,0 } }, - { { 0x0041, "alnum" }, { 0,0,0 } }, - { { 0x005A, "alnum" }, { 0,0,0 } }, - { { 0x005B, "alnum" }, { 0,1,0 } }, - { { 0x0060, "alnum" }, { 0,1,0 } }, - { { 0x0061, "alnum" }, { 0,0,0 } }, - { { 0x007A, "alnum" }, { 0,0,0 } }, - { { 0x007B, "alnum" }, { 0,1,0 } }, - { { 0x007E, "alnum" }, { 0,1,0 } }, - { { 0x007F, "alnum" }, { 0,1,0 } }, - { { 0x0080, "alnum" }, { 0,1,0 } }, - { { 0x0000, "alpha" }, { 0,1,0 } }, - { { 0x001F, "alpha" }, { 0,1,0 } }, - { { 0x0020, "alpha" }, { 0,1,0 } }, - { { 0x0021, "alpha" }, { 0,1,0 } }, - { { 0x002F, "alpha" }, { 0,1,0 } }, - { { 0x0030, "alpha" }, { 0,1,0 } }, - { { 0x0039, "alpha" }, { 0,1,0 } }, - { { 0x003A, "alpha" }, { 0,1,0 } }, - { { 0x0040, "alpha" }, { 0,1,0 } }, - { { 0x0041, "alpha" }, { 0,0,0 } }, - { { 0x005A, "alpha" }, { 0,0,0 } }, - { { 0x005B, "alpha" }, { 0,1,0 } }, - { { 0x0060, "alpha" }, { 0,1,0 } }, - { { 0x0061, "alpha" }, { 0,0,0 } }, - { { 0x007A, "alpha" }, { 0,0,0 } }, - { { 0x007B, "alpha" }, { 0,1,0 } }, - { { 0x007E, "alpha" }, { 0,1,0 } }, - { { 0x007F, "alpha" }, { 0,1,0 } }, - { { 0x0080, "alpha" }, { 0,1,0 } }, - { { 0x0009, "blank" }, { 0,0,0 } }, - { { 0x000B, "blank" }, { 0,1,0 } }, - { { 0x0020, "blank" }, { 0,0,0 } }, - { { 0x0000, "cntrl" }, { 0,0,0 } }, - { { 0x001F, "cntrl" }, { 0,0,0 } }, - { { 0x0020, "cntrl" }, { 0,1,0 } }, - { { 0x0021, "cntrl" }, { 0,1,0 } }, - { { 0x002F, "cntrl" }, { 0,1,0 } }, - { { 0x0030, "cntrl" }, { 0,1,0 } }, - { { 0x0039, "cntrl" }, { 0,1,0 } }, - { { 0x003A, "cntrl" }, { 0,1,0 } }, - { { 0x0040, "cntrl" }, { 0,1,0 } }, - { { 0x0041, "cntrl" }, { 0,1,0 } }, - { { 0x005A, "cntrl" }, { 0,1,0 } }, - { { 0x005B, "cntrl" }, { 0,1,0 } }, - { { 0x0060, "cntrl" }, { 0,1,0 } }, - { { 0x0061, "cntrl" }, { 0,1,0 } }, - { { 0x007A, "cntrl" }, { 0,1,0 } }, - { { 0x007B, "cntrl" }, { 0,1,0 } }, - { { 0x007E, "cntrl" }, { 0,1,0 } }, - { { 0x007F, "cntrl" }, { 0,0,0 } }, - { { 0x0080, "cntrl" }, { 0,1,0 } }, - { { 0x0000, "digit" }, { 0,1,0 } }, - { { 0x001F, "digit" }, { 0,1,0 } }, - { { 0x0020, "digit" }, { 0,1,0 } }, - { { 0x0021, "digit" }, { 0,1,0 } }, - { { 0x002F, "digit" }, { 0,1,0 } }, - { { 0x0030, "digit" }, { 0,0,0 } }, - { { 0x0039, "digit" }, { 0,0,0 } }, - { { 0x003A, "digit" }, { 0,1,0 } }, - { { 0x0040, "digit" }, { 0,1,0 } }, - { { 0x0041, "digit" }, { 0,1,0 } }, - { { 0x005A, "digit" }, { 0,1,0 } }, - { { 0x005B, "digit" }, { 0,1,0 } }, - { { 0x0060, "digit" }, { 0,1,0 } }, - { { 0x0061, "digit" }, { 0,1,0 } }, - { { 0x007A, "digit" }, { 0,1,0 } }, - { { 0x007B, "digit" }, { 0,1,0 } }, - { { 0x007E, "digit" }, { 0,1,0 } }, - { { 0x007F, "digit" }, { 0,1,0 } }, - { { 0x0080, "digit" }, { 0,1,0 } }, - { { 0x0000, "graph" }, { 0,1,0 } }, - { { 0x001F, "graph" }, { 0,1,0 } }, - { { 0x0020, "graph" }, { 0,1,0 } }, - { { 0x0021, "graph" }, { 0,0,0 } }, - { { 0x002F, "graph" }, { 0,0,0 } }, - { { 0x0030, "graph" }, { 0,0,0 } }, - { { 0x0039, "graph" }, { 0,0,0 } }, - { { 0x003A, "graph" }, { 0,0,0 } }, - { { 0x0040, "graph" }, { 0,0,0 } }, - { { 0x0041, "graph" }, { 0,0,0 } }, - { { 0x005A, "graph" }, { 0,0,0 } }, - { { 0x005B, "graph" }, { 0,0,0 } }, - { { 0x0060, "graph" }, { 0,0,0 } }, - { { 0x0061, "graph" }, { 0,0,0 } }, - { { 0x007A, "graph" }, { 0,0,0 } }, - { { 0x007B, "graph" }, { 0,0,0 } }, - { { 0x007E, "graph" }, { 0,0,0 } }, - { { 0x007F, "graph" }, { 0,1,0 } }, - { { 0x0080, "graph" }, { 0,1,0 } }, - { { 0x0000, "print" }, { 0,1,0 } }, - { { 0x001F, "print" }, { 0,1,0 } }, - { { 0x0020, "print" }, { 0,0,0 } }, - { { 0x0021, "print" }, { 0,0,0 } }, - { { 0x002F, "print" }, { 0,0,0 } }, - { { 0x0030, "print" }, { 0,0,0 } }, - { { 0x0039, "print" }, { 0,0,0 } }, - { { 0x003A, "print" }, { 0,0,0 } }, - { { 0x0040, "print" }, { 0,0,0 } }, - { { 0x0041, "print" }, { 0,0,0 } }, - { { 0x005A, "print" }, { 0,0,0 } }, - { { 0x005B, "print" }, { 0,0,0 } }, - { { 0x0060, "print" }, { 0,0,0 } }, - { { 0x0061, "print" }, { 0,0,0 } }, - { { 0x007A, "print" }, { 0,0,0 } }, - { { 0x007B, "print" }, { 0,0,0 } }, - { { 0x007E, "print" }, { 0,0,0 } }, - { { 0x007F, "print" }, { 0,1,0 } }, - { { 0x0080, "print" }, { 0,1,0 } }, - { { 0x0000, "punct" }, { 0,1,0 } }, - { { 0x001F, "punct" }, { 0,1,0 } }, - { { 0x0020, "punct" }, { 0,1,0 } }, - { { 0x0021, "punct" }, { 0,0,0 } }, - { { 0x002F, "punct" }, { 0,0,0 } }, - { { 0x0030, "punct" }, { 0,1,0 } }, - { { 0x0039, "punct" }, { 0,1,0 } }, - { { 0x003A, "punct" }, { 0,0,0 } }, - { { 0x0040, "punct" }, { 0,0,0 } }, - { { 0x0041, "punct" }, { 0,1,0 } }, - { { 0x005A, "punct" }, { 0,1,0 } }, - { { 0x005B, "punct" }, { 0,0,0 } }, - { { 0x0060, "punct" }, { 0,0,0 } }, - { { 0x0061, "punct" }, { 0,1,0 } }, - { { 0x007A, "punct" }, { 0,1,0 } }, - { { 0x007B, "punct" }, { 0,0,0 } }, - { { 0x007E, "punct" }, { 0,0,0 } }, - { { 0x007F, "punct" }, { 0,1,0 } }, - { { 0x0080, "punct" }, { 0,1,0 } }, - { { 0x0000, "space" }, { 0,1,0 } }, - { { 0x001F, "space" }, { 0,1,0 } }, - { { 0x0020, "space" }, { 0,0,0 } }, - { { 0x0021, "space" }, { 0,1,0 } }, - { { 0x002F, "space" }, { 0,1,0 } }, - { { 0x007E, "space" }, { 0,1,0 } }, - { { 0x007F, "space" }, { 0,1,0 } }, - { { 0x0080, "space" }, { 0,1,0 } }, - { { 0x0000, "lower" }, { 0,1,0 } }, - { { 0x001F, "lower" }, { 0,1,0 } }, - { { 0x0020, "lower" }, { 0,1,0 } }, - { { 0x0021, "lower" }, { 0,1,0 } }, - { { 0x002F, "lower" }, { 0,1,0 } }, - { { 0x0030, "lower" }, { 0,1,0 } }, - { { 0x0039, "lower" }, { 0,1,0 } }, - { { 0x003A, "lower" }, { 0,1,0 } }, - { { 0x0040, "lower" }, { 0,1,0 } }, - { { 0x0041, "lower" }, { 0,1,0 } }, - { { 0x005A, "lower" }, { 0,1,0 } }, - { { 0x005B, "lower" }, { 0,1,0 } }, - { { 0x0060, "lower" }, { 0,1,0 } }, - { { 0x0061, "lower" }, { 0,0,0 } }, - { { 0x007A, "lower" }, { 0,0,0 } }, - { { 0x007B, "lower" }, { 0,1,0 } }, - { { 0x007E, "lower" }, { 0,1,0 } }, - { { 0x007F, "lower" }, { 0,1,0 } }, - { { 0x0080, "lower" }, { 0,1,0 } }, - { { 0x0000, "upper" }, { 0,1,0 } }, - { { 0x001F, "upper" }, { 0,1,0 } }, - { { 0x0020, "upper" }, { 0,1,0 } }, - { { 0x0021, "upper" }, { 0,1,0 } }, - { { 0x002F, "upper" }, { 0,1,0 } }, - { { 0x0030, "upper" }, { 0,1,0 } }, - { { 0x0039, "upper" }, { 0,1,0 } }, - { { 0x003A, "upper" }, { 0,1,0 } }, - { { 0x0040, "upper" }, { 0,1,0 } }, - { { 0x0041, "upper" }, { 0,0,0 } }, - { { 0x005A, "upper" }, { 0,0,0 } }, - { { 0x005B, "upper" }, { 0,1,0 } }, - { { 0x0060, "upper" }, { 0,1,0 } }, - { { 0x0061, "upper" }, { 0,1,0 } }, - { { 0x007A, "upper" }, { 0,1,0 } }, - { { 0x007B, "upper" }, { 0,1,0 } }, - { { 0x007E, "upper" }, { 0,1,0 } }, - { { 0x007F, "upper" }, { 0,1,0 } }, - { { 0x0080, "upper" }, { 0,1,0 } }, - { { 0x0000, "xdigit" }, { 0,1,0 } }, - { { 0x001F, "xdigit" }, { 0,1,0 } }, - { { 0x0020, "xdigit" }, { 0,1,0 } }, - { { 0x0021, "xdigit" }, { 0,1,0 } }, - { { 0x002F, "xdigit" }, { 0,1,0 } }, - { { 0x0030, "xdigit" }, { 0,0,0 } }, - { { 0x0039, "xdigit" }, { 0,0,0 } }, - { { 0x003A, "xdigit" }, { 0,1,0 } }, - { { 0x0040, "xdigit" }, { 0,1,0 } }, - { { 0x0041, "xdigit" }, { 0,0,0 } }, - { { 0x005A, "xdigit" }, { 0,1,0 } }, - { { 0x005B, "xdigit" }, { 0,1,0 } }, - { { 0x0060, "xdigit" }, { 0,1,0 } }, - { { 0x0061, "xdigit" }, { 0,0,0 } }, - { { 0x007A, "xdigit" }, { 0,1,0 } }, - { { 0x007B, "xdigit" }, { 0,1,0 } }, - { { 0x007E, "xdigit" }, { 0,1,0 } }, - { { 0x007F, "xdigit" }, { 0,1,0 } }, - { { 0x0080, "xdigit" }, { 0,1,0 } }, - { { 0x0061, "xxxxxx" }, { 0,1,0 } }, - { .is_last = 1 } - } - }, - { -#if 0 - { Tiswctype, TST_LOC_eucJP }, -#else - { Tiswctype, TST_LOC_ja_UTF8 }, -#endif - { -#ifdef SHOJI_IS_RIGHT - { { 0x3029, "alnum" }, { 0,1,0 } }, /* Hangzhou NUM9 */ -#else - { { 0x3029, "alnum" }, { 0,0,0 } }, /* Hangzhou NUM9 */ -#endif - { { 0xFE4F, "alnum" }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0xFF19, "alnum" }, { 0,0,0 } }, /* FULL 9 */ - { { 0xFF20, "alnum" }, { 0,1,0 } }, /* FULL @ */ - { { 0xFF3A, "alnum" }, { 0,0,0 } }, /* FULL Z */ - { { 0xFF40, "alnum" }, { 0,1,0 } }, /* FULL GRAVE ACC. */ - { { 0xFF5A, "alnum" }, { 0,0,0 } }, /* FULL z */ -#ifdef SHOJI_IS_RIGHT - { { 0xFF71, "alnum" }, { 0,1,0 } }, /* HALF KATA A */ -#else - { { 0xFF71, "alnum" }, { 0,0,0 } }, /* HALF KATA A */ -#endif -#ifdef SHOJI_IS_RIGHT - { { 0x3029, "alpha" }, { 0,1,0 } }, /* Hangzhou NUM9 */ -#else - { { 0x3029, "alpha" }, { 0,0,0 } }, /* Hangzhou NUM9 */ -#endif - { { 0xFE4F, "alpha" }, { 0,1,0 } }, /* CJK UNI.IDEO. */ -#ifdef SHOJI_IS_RIGHT - { { 0xFF19, "alpha" }, { 0,1,0 } }, /* FULL 9 */ -#else - { { 0xFF19, "alpha" }, { 0,0,0 } }, /* FULL 9 */ -#endif - { { 0xFF20, "alpha" }, { 0,1,0 } }, /* FULL @ */ - { { 0xFF3A, "alpha" }, { 0,0,0 } }, /* FULL Z */ - { { 0xFF40, "alpha" }, { 0,1,0 } }, /* FULL GRAVE ACC. */ - { { 0xFF5A, "alpha" }, { 0,0,0 } }, /* FULL z */ -#ifdef SHOJI_IS_RIGHT - { { 0xFF71, "alpha" }, { 0,1,0 } }, /* HALF KATA A */ -#else - { { 0xFF71, "alpha" }, { 0,0,0 } }, /* HALF KATA A */ -#endif - { { 0x0080, "cntrl" }, { 0,0,0 } }, /* CNTRL */ - { { 0x3000, "cntrl" }, { 0,1,0 } }, /* IDEO. SPACE */ - { { 0x3029, "digit" }, { 0,1,0 } }, /* Hangzhou NUM9 */ - { { 0x32CB, "digit" }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ - /* 21: */ - { { 0x33FE, "digit" }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ - { { 0xFF19, "digit" }, { 0,1,0 } }, /* FULL 9 */ - { { 0x3000, "graph" }, { 0,1,0 } }, /* IDEO. SPACE */ -#ifdef SHOJI_IS_RIGHT - { { 0x3020, "graph" }, { 0,1,0 } }, /* POSTAL MARK FACE */ - { { 0x3029, "graph" }, { 0,1,0 } }, /* Hangzhou NUM9 */ - { { 0x302F, "graph" }, { 0,1,0 } }, /* Diacritics(Hangul) */ - { { 0x3037, "graph" }, { 0,1,0 } }, /* Separator Symbol */ - { { 0x303F, "graph" }, { 0,1,0 } }, /* IDEO. HALF SPACE */ -#else - { { 0x3020, "graph" }, { 0,0,0 } }, /* POSTAL MARK FACE */ - { { 0x3029, "graph" }, { 0,0,0 } }, /* Hangzhou NUM9 */ - { { 0x302F, "graph" }, { 0,0,0 } }, /* Diacritics(Hangul) */ - { { 0x3037, "graph" }, { 0,0,0 } }, /* Separator Symbol */ - { { 0x303F, "graph" }, { 0,0,0 } }, /* IDEO. HALF SPACE */ -#endif - /* 29: */ - { { 0x3041, "graph" }, { 0,0,0 } }, /* HIRAGANA a */ - /* Non jis: */ -#ifdef SHOJI_IS_RIGHT - { { 0x3094, "graph" }, { 0,1,0 } }, /* HIRAGANA u" */ -#else - { { 0x3094, "graph" }, { 0,0,0 } }, /* HIRAGANA u" */ -#endif - /* Non jis: */ -#ifdef SHOJI_IS_RIGHT - { { 0x3099, "graph" }, { 0,1,0 } }, /* SOUND MARK */ -#else - { { 0x3099, "graph" }, { 0,0,0 } }, /* SOUND MARK */ -#endif - { { 0x309E, "graph" }, { 0,0,0 } }, /* ITERATION MARK */ - /* 33: */ - { { 0x30A1, "graph" }, { 0,0,0 } }, /* KATAKANA a */ - /* Non jis: */ -#ifdef SHOJI_IS_RIGHT - { { 0x30FA, "graph" }, { 0,1,0 } }, /* KATAKANA wo" */ -#else - { { 0x30FA, "graph" }, { 0,0,0 } }, /* KATAKANA wo" */ -#endif - { { 0x30FB, "graph" }, { 0,0,0 } }, /* KATAKANA MID.DOT */ - { { 0x30FE, "graph" }, { 0,0,0 } }, /* KATAKANA ITERATION */ -#ifdef SHOJI_IS_RIGHT - { { 0x3191, "graph" }, { 0,1,0 } }, /* KANBUN REV.MARK */ - { { 0x3243, "graph" }, { 0,1,0 } }, /* IDEO. MARK (reach) */ - { { 0x32CB, "graph" }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ - { { 0x32FE, "graph" }, { 0,1,0 } }, /* MARU KATAKANA wo */ - { { 0x33FE, "graph" }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ -#else - { { 0x3191, "graph" }, { 0,0,0 } }, /* KANBUN REV.MARK */ - { { 0x3243, "graph" }, { 0,0,0 } }, /* IDEO. MARK (reach) */ - { { 0x32CB, "graph" }, { 0,0,0 } }, /* IDEO.TEL.SYM.DEC12 */ - { { 0x32FE, "graph" }, { 0,0,0 } }, /* MARU KATAKANA wo */ - { { 0x33FE, "graph" }, { 0,0,0 } }, /* CJK IDEO.TEL.31th */ -#endif - { { 0x4E00, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E05, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ -#ifdef SHOJI_IS_RIGHT - { { 0x4E06, "graph" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ -#else - { { 0x4E06, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ -#endif - { { 0x4E07, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x4FFF, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x9000, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x9006, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ -#ifdef SHOJI_IS_RIGHT - { { 0x9007, "graph" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4, "graph" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ -#else - { { 0x9007, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ -#endif - /* 51 */ - { { 0x9FA5, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - /* Non jis: */ -#ifdef SHOJI_IS_RIGHT - { { 0xFE4F, "graph" }, { 0,1,0 } }, /* CJK UNI.IDEO. */ -#else - { { 0xFE4F, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ -#endif - { { 0xFF0F, "graph" }, { 0,0,0 } }, /* FULL SLASH */ - { { 0xFF19, "graph" }, { 0,0,0 } }, /* FULL 9 */ - { { 0xFF20, "graph" }, { 0,0,0 } }, /* FULL @ */ - { { 0xFF3A, "graph" }, { 0,0,0 } }, /* FULL Z */ - { { 0xFF40, "graph" }, { 0,0,0 } }, /* FULL GRAVE ACC. */ - { { 0xFF5A, "graph" }, { 0,0,0 } }, /* FULL z */ - { { 0xFF5E, "graph" }, { 0,0,0 } }, /* FULL ~ (tilde) */ - { { 0xFF61, "graph" }, { 0,0,0 } }, /* HALF IDEO.STOP. . */ - { { 0xFF65, "graph" }, { 0,0,0 } }, /* HALF KATA MID.DOT */ - { { 0xFF66, "graph" }, { 0,0,0 } }, /* HALF KATA WO */ - { { 0xFF6F, "graph" }, { 0,0,0 } }, /* HALF KATA tu */ - { { 0xFF70, "graph" }, { 0,0,0 } }, /* HALF KATA PL - */ - { { 0xFF71, "graph" }, { 0,0,0 } }, /* HALF KATA A */ - { { 0xFF9E, "graph" }, { 0,0,0 } }, /* HALF KATA MI */ - { { 0x3000, "print" }, { 0,0,0 } }, /* IDEO. SPACE */ -#ifdef SHOJI_IS_RIGHT - { { 0x3020, "print" }, { 0,1,0 } }, /* POSTAL MARK FACE */ - { { 0x3029, "print" }, { 0,1,0 } }, /* Hangzhou NUM9 */ - { { 0x302F, "print" }, { 0,1,0 } }, /* Diacritics(Hangul) */ - { { 0x3037, "print" }, { 0,1,0 } }, /* Separator Symbol */ -#else - { { 0x3020, "print" }, { 0,0,0 } }, /* POSTAL MARK FACE */ - { { 0x3029, "print" }, { 0,0,0 } }, /* Hangzhou NUM9 */ - { { 0x302F, "print" }, { 0,0,0 } }, /* Diacritics(Hangul) */ - { { 0x3037, "print" }, { 0,0,0 } }, /* Separator Symbol */ -#endif - { { 0x4E00, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E05, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ -#ifdef SHOJI_IS_RIGHT - { { 0x4E06, "print" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ -#else - { { 0x4E06, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ -#endif - { { 0x4E07, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x4FFF, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x9000, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x9006, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ -#ifdef SHOJI_IS_RIGHT - { { 0x9007, "print" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4, "print" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ -#else - { { 0x9007, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ -#endif - /* 81: */ - { { 0x9FA5, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - /* Non jis: */ -#ifdef SHOJI_IS_RIGHT - { { 0xFE4F, "print" }, { 0,1,0 } }, /* CJK UNI.IDEO. */ -#else - { { 0xFE4F, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ -#endif - { { 0x3000, "punct" }, { 0,1,0 } }, /* IDEO. SPACE */ -#ifdef SHOJI_IS_RIGHT - { { 0x3020, "punct" }, { 0,1,0 } }, /* POSTAL MARK FACE */ - { { 0x302F, "punct" }, { 0,1,0 } }, /* Diacritics(Hangul) */ - { { 0x3037, "punct" }, { 0,1,0 } }, /* FEED Separator */ - { { 0x303F, "punct" }, { 0,1,0 } }, /* IDEO. HALF SPACE */ -#else - { { 0x3020, "punct" }, { 0,0,0 } }, /* POSTAL MARK FACE */ - { { 0x302F, "punct" }, { 0,0,0 } }, /* Diacritics(Hangul) */ - { { 0x3037, "punct" }, { 0,0,0 } }, /* FEED Separator */ - { { 0x303F, "punct" }, { 0,0,0 } }, /* IDEO. HALF SPACE */ -#endif - { { 0x3041, "punct" }, { 0,1,0 } }, /* HIRAGANA a */ - { { 0x3094, "punct" }, { 0,1,0 } }, /* HIRAGANA u" */ - /* 90: */ -#ifdef SHOJI_IS_RIGHT - { { 0x3099, "punct" }, { 0,1,0 } }, /* SOUND MARK */ -#else - { { 0x3099, "punct" }, { 0,0,0 } }, /* SOUND MARK */ -#endif - { { 0x309E, "punct" }, { 0,1,0 } }, /* ITERATION MARK */ - { { 0x30A1, "punct" }, { 0,1,0 } }, /* KATAKANA a */ - { { 0x30FA, "punct" }, { 0,1,0 } }, /* KATAKANA wo" */ - { { 0x30FB, "punct" }, { 0,0,0 } }, /* KATAKANA MID.DOT */ - /* 95: */ - { { 0x30FE, "punct" }, { 0,1,0 } }, /* KATAKANA ITERATION */ -#ifdef SHOJI_IS_RIGHT - { { 0x3191, "punct" }, { 0,1,0 } }, /* KANBUN REV.MARK */ - { { 0x3243, "punct" }, { 0,1,0 } }, /* IDEO. MARK (reach) */ - { { 0x32CB, "punct" }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ - { { 0x32FE, "punct" }, { 0,1,0 } }, /* MARU KATAKANA wo */ - { { 0x33FE, "punct" }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ -#else - { { 0x3191, "punct" }, { 0,0,0 } }, /* KANBUN REV.MARK */ - { { 0x3243, "punct" }, { 0,0,0 } }, /* IDEO. MARK (reach) */ - { { 0x32CB, "punct" }, { 0,0,0 } }, /* IDEO.TEL.SYM.DEC12 */ - { { 0x32FE, "punct" }, { 0,0,0 } }, /* MARU KATAKANA wo */ - { { 0x33FE, "punct" }, { 0,0,0 } }, /* CJK IDEO.TEL.31th */ -#endif - { { 0x9007, "punct" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4, "punct" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA5, "punct" }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0xFF0F, "punct" }, { 0,0,0 } }, /* FULL SLASH */ - /* 105: */ - { { 0xFF19, "punct" }, { 0,1,0 } }, /* FULL 9 */ - { { 0xFF20, "punct" }, { 0,0,0 } }, /* FULL @ */ - { { 0xFF3A, "punct" }, { 0,1,0 } }, /* FULL Z */ - { { 0xFF40, "punct" }, { 0,0,0 } }, /* FULL GRAVE ACC. */ - { { 0xFF5A, "punct" }, { 0,1,0 } }, /* FULL z */ - { { 0xFF5E, "punct" }, { 0,0,0 } }, /* FULL ~ (tilde) */ - { { 0xFF61, "punct" }, { 0,0,0 } }, /* HALF IDEO.STOP. . */ - { { 0xFF65, "punct" }, { 0,0,0 } }, /* HALF KATA MID.DOT */ - { { 0xFF70, "punct" }, { 0,1,0 } }, /* HALF KATA PL - */ - { { 0xFF9E, "punct" }, { 0,1,0 } }, /* HALF KATA MI */ - /* 115: */ - { { 0x3000, "space" }, { 0,0,0 } }, /* IDEO. SPACE */ - { { 0x303F, "space" }, { 0,1,0 } }, /* IDEO. HALF SPACE */ - { { 0x3041, "lower" }, { 0,1,0 } }, /* HIRAGANA a */ - { { 0x3094, "lower" }, { 0,1,0 } }, /* HIRAGANA u" */ - { { 0x30A1, "lower" }, { 0,1,0 } }, /* KATAKANA a */ - { { 0x30FA, "lower" }, { 0,1,0 } }, /* KATAKANA wo" */ - { { 0xFF66, "lower" }, { 0,1,0 } }, /* HALF KATA WO */ - { { 0xFF6F, "lower" }, { 0,1,0 } }, /* HALF KATA tu */ - { { 0xFF70, "lower" }, { 0,1,0 } }, /* HALF KATA PL - */ - /* 124: */ - { { 0xFF71, "lower" }, { 0,1,0 } }, /* HALF KATA A */ - { { 0xFF9E, "lower" }, { 0,1,0 } }, /* HALF KATA MI */ - { { 0xFF71, "upper" }, { 0,1,0 } }, /* HALF KATA A */ - { { 0xFF19, "xdigit" }, { 0,1,0 } }, /* FULL 9 */ - { { 0x3000, "jspace" }, { 0,0,0 } }, /* IDEO. SPACE */ - /* Non jis? */ - { { 0x303F, "jspace" }, { 0,1,0 } }, /* IDEO.HALF SPACE */ - { { 0xFF19, "jdigit" }, { 0,0,0 } }, /* FULL 9 */ - { { 0x3041, "jhira" }, { 0,0,0 } }, /* HIRAGANA a */ - { { 0x3094, "jhira" }, { 0,1,0 } }, /* HIRAGANA u" */ - { { 0x30A1, "jkata" }, { 0,0,0 } }, /* KATAKANA a */ - /* Non jis: */ - { { 0x30FA, "jkata" }, { 0,1,0 } }, /* KATAKANA wo" */ - { { 0xFF66, "jkata" }, { 0,0,0 } }, /* HALF KATA WO */ - { { 0xFF6F, "jkata" }, { 0,0,0 } }, /* HALF KATA tu */ - { { 0x4E05, "jkanji" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ -#ifdef SHOJI_IS_RIGHT - /* : */ - { { 0x4E06, "jkanji" }, { 0,1,1 } }, /* CJK UNI.IDEO.NON-J */ -#else - /* XXX This character does not exist in EUC-JP. */ - { { 0x4E06, "jkanji" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ -#endif - { { 0x4E07, "jkanji" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { .is_last = 1 } - } - }, - { - { Tiswctype, TST_LOC_end } - } -}; - - -/* dat_isw-funcs.c */ diff --git a/test/locale-mbwc/dat_iswdigit.c b/test/locale-mbwc/dat_iswdigit.c deleted file mode 100644 index 70ca54479..000000000 --- a/test/locale-mbwc/dat_iswdigit.c +++ /dev/null @@ -1,125 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_iswdigit.c - * - * ISW*: int iswdigit (wint_t wc); - */ - - -#include "dat_isw-funcs.h" - - -TST_ISW_LOC (DIGIT, digit) = { - - { TST_ISW_REC (de, digit) - { - { { 0x0080 }, { 0,1,0 } }, /* CTRL */ - { { 0x009F }, { 0,1,0 } }, /* CTRL */ - { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ - { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ - { { 0x00B0 }, { 0,1,0 } }, /* Degree */ - { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ - { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ - { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ - { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ - { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ - { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ - { { 0x00BB }, { 0,1,0 } }, /* >> */ - { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ - { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ - { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ - { { 0x00BF }, { 0,1,0 } }, /* UD ? */ - { { 0x00C0 }, { 0,1,0 } }, /* A Grave */ - { { 0x00D6 }, { 0,1,0 } }, /* O dia */ - { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ - { { 0x00D8 }, { 0,1,0 } }, /* O stroke */ - { { 0x00DF }, { 0,1,0 } }, /* small Sh */ - { { 0x00E0 }, { 0,1,0 } }, /* a grave */ - { { 0x00F6 }, { 0,1,0 } }, /* o dia */ - { { 0x00F7 }, { 0,1,0 } }, /* division */ - { { 0x00F8 }, { 0,1,0 } }, /* o stroke */ - { { 0x00FF }, { 0,1,0 } }, /* y dia */ - { .is_last = 1 } /* Last element. */ - } - }, - { TST_ISW_REC (enUS, digit) - { - { { WEOF }, { 0,1,0 } }, - { { 0x0000 }, { 0,1,0 } }, - { { 0x001F }, { 0,1,0 } }, - { { 0x0020 }, { 0,1,0 } }, - { { 0x0021 }, { 0,1,0 } }, - { { 0x002F }, { 0,1,0 } }, - { { 0x0030 }, { 0,0,0 } }, - { { 0x0039 }, { 0,0,0 } }, - { { 0x003A }, { 0,1,0 } }, - { { 0x0040 }, { 0,1,0 } }, - { { 0x0041 }, { 0,1,0 } }, - { { 0x005A }, { 0,1,0 } }, - { { 0x005B }, { 0,1,0 } }, - { { 0x0060 }, { 0,1,0 } }, - { { 0x0061 }, { 0,1,0 } }, - { { 0x007A }, { 0,1,0 } }, - { { 0x007B }, { 0,1,0 } }, - { { 0x007E }, { 0,1,0 } }, - { { 0x007F }, { 0,1,0 } }, - { { 0x0080 }, { 0,1,0 } }, - { .is_last = 1 } /* Last element. */ - } - }, -#if 0 - { TST_ISW_REC (eucJP, digit) -#else - { TST_ISW_REC (ja_UTF8, digit) -#endif - { - { { 0x3000 }, { 0,1,0 } }, /* IDEO. SPACE */ - { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ - { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ - { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ - { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ - { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ - { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ - { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ - { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ - { { 0x309E }, { 0,1,0 } }, /* ITERATION MARK */ - { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ - { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ - { { 0x30FB }, { 0,1,0 } }, /* KATAKANA MID.DOT */ - { { 0x30FE }, { 0,1,0 } }, /* KATAKANA ITERATION */ - { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ - { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ - { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ - { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ - { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ - { { 0x4E00 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E05 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x4E07 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4FFF }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9000 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9006 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA5 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0xFE4F }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0xFF0F }, { 0,1,0 } }, /* FULL SLASH */ - { { 0xFF19 }, { 0,1,0 } }, /* FULL 9 */ - { { 0xFF20 }, { 0,1,0 } }, /* FULL @ */ - { { 0xFF3A }, { 0,1,0 } }, /* FULL Z */ - { { 0xFF40 }, { 0,1,0 } }, /* FULL GRAVE ACC. */ - { { 0xFF5A }, { 0,1,0 } }, /* FULL z */ - { { 0xFF5E }, { 0,1,0 } }, /* FULL ~ (tilde) */ - { { 0xFF61 }, { 0,1,0 } }, /* HALF IDEO.STOP. . */ - { { 0xFF65 }, { 0,1,0 } }, /* HALF KATA MID.DOT */ - { { 0xFF66 }, { 0,1,0 } }, /* HALF KATA WO */ - { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ - { { 0xFF70 }, { 0,1,0 } }, /* HALF KATA PL - */ - { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ - { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ - { .is_last = 1 } /* Last element. */ - } - }, - { TST_ISW_REC (end, digit) } -}; diff --git a/test/locale-mbwc/dat_iswgraph.c b/test/locale-mbwc/dat_iswgraph.c deleted file mode 100644 index 80cacb2a3..000000000 --- a/test/locale-mbwc/dat_iswgraph.c +++ /dev/null @@ -1,167 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_iswgraph.c - * - * ISW*: int iswgraph (wint_t wc); - */ - - -#include "dat_isw-funcs.h" - - -TST_ISW_LOC (GRAPH, graph) = { - - { TST_ISW_REC (de, graph) - { - { { 0x0080 }, { 0,1,0 } }, /* CTRL */ - { { 0x009F }, { 0,1,0 } }, /* CTRL */ -#ifdef SHOJI_IS_RIGHT - { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ -#else - { { 0x00A0 }, { 0,0,0 } }, /* NB SPACE */ -#endif - { { 0x00A1 }, { 0,0,0 } }, /* UD ! */ - { { 0x00B0 }, { 0,0,0 } }, /* Degree */ - { { 0x00B1 }, { 0,0,0 } }, /* +- sign */ - { { 0x00B2 }, { 0,0,0 } }, /* SUP 2 */ - { { 0x00B3 }, { 0,0,0 } }, /* SUP 3 */ - { { 0x00B4 }, { 0,0,0 } }, /* ACUTE */ - { { 0x00B8 }, { 0,0,0 } }, /* CEDILLA */ - { { 0x00B9 }, { 0,0,0 } }, /* SUP 1 */ - { { 0x00BB }, { 0,0,0 } }, /* >> */ - { { 0x00BC }, { 0,0,0 } }, /* 1/4 */ - { { 0x00BD }, { 0,0,0 } }, /* 1/2 */ - { { 0x00BE }, { 0,0,0 } }, /* 3/4 */ - { { 0x00BF }, { 0,0,0 } }, /* UD ? */ - { { 0x00C0 }, { 0,0,0 } }, /* A Grave */ - { { 0x00D6 }, { 0,0,0 } }, /* O dia */ - { { 0x00D7 }, { 0,0,0 } }, /* multipl. */ - { { 0x00D8 }, { 0,0,0 } }, /* O stroke */ - { { 0x00DF }, { 0,0,0 } }, /* small Sh */ - { { 0x00E0 }, { 0,0,0 } }, /* a grave */ - { { 0x00F6 }, { 0,0,0 } }, /* o dia */ - { { 0x00F7 }, { 0,0,0 } }, /* division */ - { { 0x00F8 }, { 0,0,0 } }, /* o stroke */ - { { 0x00FF }, { 0,0,0 } }, /* y dia */ - { .is_last = 1 } /* Last element. */ - } - }, - { TST_ISW_REC (enUS, graph) - { - { { WEOF }, { 0,1,0 } }, - { { 0x0000 }, { 0,1,0 } }, - { { 0x001F }, { 0,1,0 } }, - { { 0x0020 }, { 0,1,0 } }, - { { 0x0021 }, { 0,0,0 } }, - { { 0x002F }, { 0,0,0 } }, - { { 0x0030 }, { 0,0,0 } }, - { { 0x0039 }, { 0,0,0 } }, - { { 0x003A }, { 0,0,0 } }, - { { 0x0040 }, { 0,0,0 } }, - { { 0x0041 }, { 0,0,0 } }, - { { 0x005A }, { 0,0,0 } }, - { { 0x005B }, { 0,0,0 } }, - { { 0x0060 }, { 0,0,0 } }, - { { 0x0061 }, { 0,0,0 } }, - { { 0x007A }, { 0,0,0 } }, - { { 0x007B }, { 0,0,0 } }, - { { 0x007E }, { 0,0,0 } }, - { { 0x007F }, { 0,1,0 } }, - { { 0x0080 }, { 0,1,0 } }, /* 20 */ - { .is_last = 1 } /* Last element. */ - } - }, -#if 0 - { TST_ISW_REC( eucJP, graph ) -#else - { TST_ISW_REC( ja_UTF8, graph ) -#endif - { - { { 0x3000 }, { 0,1,0 } }, /* IDEO. SPACE */ -#ifdef SHOJI_IS_RIGHT - { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ - { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ - { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ - { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ - { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ -#else - { { 0x3020 }, { 0,0,0 } }, /* POSTAL MARK FACE */ - { { 0x3029 }, { 0,0,0 } }, /* Hangzhou NUM9 */ - { { 0x302F }, { 0,0,0 } }, /* Diacritics(Hangul) */ - { { 0x3037 }, { 0,0,0 } }, /* Separator Symbol */ - { { 0x303F }, { 0,0,0 } }, /* IDEO. HALF SPACE */ -#endif - { { 0x3041 }, { 0,0,0 } }, /* HIRAGANA a */ -#ifdef SHOJI_IS_RIGHT - { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ /* non jis */ - { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ -#else - { { 0x3094 }, { 0,0,0 } }, /* HIRAGANA u" */ /* non jis */ - { { 0x3099 }, { 0,0,0 } }, /* SOUND MARK */ -#endif - { { 0x309E }, { 0,0,0 } }, /* ITERATION MARK */ /* 10 */ - { { 0x30A1 }, { 0,0,0 } }, /* KATAKANA a */ -#ifdef SHOJI_IS_RIGHT - { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ /* non jis */ -#else - { { 0x30FA }, { 0,0,0 } }, /* KATAKANA wo" */ /* non jis */ -#endif - { { 0x30FB }, { 0,0,0 } }, /* KATAKANA MID.DOT */ - { { 0x30FE }, { 0,0,0 } }, /* KATAKANA ITERATION */ -#ifdef SHOJI_IS_RIGHT - { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ - { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ - { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ - { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ - { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ -#else - { { 0x3191 }, { 0,0,0 } }, /* KANBUN REV.MARK */ - { { 0x3243 }, { 0,0,0 } }, /* IDEO. MARK (reach) */ - { { 0x32CB }, { 0,0,0 } }, /* IDEO.TEL.SYM.DEC12 */ - { { 0x32FE }, { 0,0,0 } }, /* MARU KATAKANA wo */ - { { 0x33FE }, { 0,0,0 } }, /* CJK IDEO.TEL.31th */ -#endif - { { 0x4E00 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ /* 20 */ - { { 0x4E05 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ -#ifdef SHOJI_IS_RIGHT - { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ -#else - { { 0x4E06 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ -#endif - { { 0x4E07 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x4FFF }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x9000 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x9006 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ -#ifdef SHOJI_IS_RIGHT - { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ -#else - { { 0x9007 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ -#endif - { { 0x9FA5 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ -#ifdef SHOJI_IS_RIGHT - { { 0xFE4F }, { 0,1,0 } }, /* CJK Wave Low Line */ /* 30 */ -#else - { { 0xFE4F }, { 0,0,0 } }, /* CJK Wave Low Line */ /* 30 */ -#endif - { { 0xFF0F }, { 0,0,0 } }, /* FULL SLASH */ - { { 0xFF19 }, { 0,0,0 } }, /* FULL 9 */ - { { 0xFF20 }, { 0,0,0 } }, /* FULL @ */ - { { 0xFF3A }, { 0,0,0 } }, /* FULL Z */ - { { 0xFF40 }, { 0,0,0 } }, /* FULL GRAVE ACC. */ - { { 0xFF5A }, { 0,0,0 } }, /* FULL z */ - { { 0xFF5E }, { 0,0,0 } }, /* FULL ~ (tilde) */ - { { 0xFF61 }, { 0,0,0 } }, /* HALF IDEO.STOP. . */ - { { 0xFF65 }, { 0,0,0 } }, /* HALF KATA MID.DOT */ - { { 0xFF66 }, { 0,0,0 } }, /* HALF KATA WO */ - { { 0xFF6F }, { 0,0,0 } }, /* HALF KATA tu */ - { { 0xFF70 }, { 0,0,0 } }, /* HALF KATA PL - */ - { { 0xFF71 }, { 0,0,0 } }, /* HALF KATA A */ - { { 0xFF9E }, { 0,0,0 } }, /* HALF KATA MI */ - { .is_last = 1 } /* Last element. */ - } - }, - { TST_ISW_REC (end, graph) } -}; diff --git a/test/locale-mbwc/dat_iswlower.c b/test/locale-mbwc/dat_iswlower.c deleted file mode 100644 index 58ec08ed4..000000000 --- a/test/locale-mbwc/dat_iswlower.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_iswlower.c - * - * ISW*: int iswlower (wint_t wc); - */ - - -#include "dat_isw-funcs.h" - - -TST_ISW_LOC (LOWER, lower) = { - - { TST_ISW_REC (de, lower) - { - { { 0x0080 }, { 0,1,0 } }, /* CTRL */ - { { 0x009F }, { 0,1,0 } }, /* CTRL */ - { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ - { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ - { { 0x00B0 }, { 0,1,0 } }, /* Degree */ - { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ - { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ - { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ - { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ - { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ - { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ - { { 0x00BB }, { 0,1,0 } }, /* >> */ - { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ - { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ - { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ - { { 0x00BF }, { 0,1,0 } }, /* UD ? */ - { { 0x00C0 }, { 0,1,0 } }, /* A Grave */ - { { 0x00D6 }, { 0,1,0 } }, /* O dia */ - { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ - { { 0x00D8 }, { 0,1,0 } }, /* O stroke */ - { { 0x00DF }, { 0,0,0 } }, /* small Sh */ - { { 0x00E0 }, { 0,0,0 } }, /* a grave */ - { { 0x00F6 }, { 0,0,0 } }, /* o dia */ - { { 0x00F7 }, { 0,1,0 } }, /* division */ - { { 0x00F8 }, { 0,0,0 } }, /* o stroke */ - { { 0x00FF }, { 0,0,0 } }, /* y dia */ - { .is_last = 1 } /* Last element. */ - } - }, - { TST_ISW_REC (enUS, lower) - { - { { WEOF }, { 0,1,0 } }, - { { 0x0000 }, { 0,1,0 } }, - { { 0x001F }, { 0,1,0 } }, - { { 0x0020 }, { 0,1,0 } }, - { { 0x0021 }, { 0,1,0 } }, - { { 0x002F }, { 0,1,0 } }, - { { 0x0030 }, { 0,1,0 } }, - { { 0x0039 }, { 0,1,0 } }, - { { 0x003A }, { 0,1,0 } }, - { { 0x0040 }, { 0,1,0 } }, - { { 0x0041 }, { 0,1,0 } }, - { { 0x005A }, { 0,1,0 } }, - { { 0x005B }, { 0,1,0 } }, - { { 0x0060 }, { 0,1,0 } }, - { { 0x0061 }, { 0,0,0 } }, - { { 0x007A }, { 0,0,0 } }, - { { 0x007B }, { 0,1,0 } }, - { { 0x007E }, { 0,1,0 } }, - { { 0x007F }, { 0,1,0 } }, - { { 0x0080 }, { 0,1,0 } }, - { .is_last = 1 } /* Last element. */ - } - }, -#if 0 - { TST_ISW_REC (eucJP, lower) -#else - { TST_ISW_REC (ja_UTF8, lower) -#endif - { - { { 0x3000 }, { 0,1,0 } }, /* IDEO. SPACE */ - { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ - { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ - { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ - { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ - { { 0x309E }, { 0,1,0 } }, /* ITERATION MARK */ - { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ - { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ - { { 0xFF3A }, { 0,1,0 } }, /* FULL Z */ - { { 0xFF40 }, { 0,1,0 } }, /* FULL GRAVE ACC. */ - { { 0xFF5A }, { 0,0,0 } }, /* FULL z */ - { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ - { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ - { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ - { .is_last = 1 } /* Last element. */ - } - }, - { TST_ISW_REC (end, lower) } - -}; diff --git a/test/locale-mbwc/dat_iswprint.c b/test/locale-mbwc/dat_iswprint.c deleted file mode 100644 index bcd96d059..000000000 --- a/test/locale-mbwc/dat_iswprint.c +++ /dev/null @@ -1,170 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_iswprint.c - * - * ISW*: int iswprint (wint_t wc); - */ - - -#include "dat_isw-funcs.h" - - -TST_ISW_LOC (PRINT, print) = { - - { TST_ISW_REC (de, print) - { - { { 0x0080 }, { 0,1,0 } }, /* CTRL */ - { { 0x009F }, { 0,1,0 } }, /* CTRL */ -#ifdef SHOJI_IS_RIGHT - { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ -#else - { { 0x00A0 }, { 0,0,0 } }, /* NB SPACE */ -#endif - { { 0x00A1 }, { 0,0,0 } }, /* UD ! */ - { { 0x00B0 }, { 0,0,0 } }, /* Degree */ - { { 0x00B1 }, { 0,0,0 } }, /* +- sign */ - { { 0x00B2 }, { 0,0,0 } }, /* SUP 2 */ - { { 0x00B3 }, { 0,0,0 } }, /* SUP 3 */ - { { 0x00B4 }, { 0,0,0 } }, /* ACUTE */ - { { 0x00B8 }, { 0,0,0 } }, /* CEDILLA */ - { { 0x00B9 }, { 0,0,0 } }, /* SUP 1 */ - { { 0x00BB }, { 0,0,0 } }, /* >> */ - { { 0x00BC }, { 0,0,0 } }, /* 1/4 */ - { { 0x00BD }, { 0,0,0 } }, /* 1/2 */ - { { 0x00BE }, { 0,0,0 } }, /* 3/4 */ - { { 0x00BF }, { 0,0,0 } }, /* UD ? */ - { { 0x00C0 }, { 0,0,0 } }, /* A Grave */ - { { 0x00D6 }, { 0,0,0 } }, /* O dia */ - { { 0x00D7 }, { 0,0,0 } }, /* multipl. */ - { { 0x00D8 }, { 0,0,0 } }, /* O stroke */ - { { 0x00DF }, { 0,0,0 } }, /* small Sh */ - { { 0x00E0 }, { 0,0,0 } }, /* a grave */ - { { 0x00F6 }, { 0,0,0 } }, /* o dia */ - { { 0x00F7 }, { 0,0,0 } }, /* division */ - { { 0x00F8 }, { 0,0,0 } }, /* o stroke */ - { { 0x00FF }, { 0,0,0 } }, /* y dia */ - { .is_last = 1 } /* Last element. */ - } - }, - { TST_ISW_REC (enUS, print) - { - { { WEOF }, { 0,1,0 } }, /* 01 */ - { { 0x0000 }, { 0,1,0 } }, - { { 0x001F }, { 0,1,0 } }, - { { 0x0020 }, { 0,0,0 } }, - { { 0x0021 }, { 0,0,0 } }, - { { 0x002F }, { 0,0,0 } }, - { { 0x0030 }, { 0,0,0 } }, - { { 0x0039 }, { 0,0,0 } }, - { { 0x003A }, { 0,0,0 } }, - { { 0x0040 }, { 0,0,0 } }, - { { 0x0041 }, { 0,0,0 } }, - { { 0x005A }, { 0,0,0 } }, - { { 0x005B }, { 0,0,0 } }, - { { 0x0060 }, { 0,0,0 } }, - { { 0x0061 }, { 0,0,0 } }, - { { 0x007A }, { 0,0,0 } }, - { { 0x007B }, { 0,0,0 } }, - { { 0x007E }, { 0,0,0 } }, - { { 0x007F }, { 0,1,0 } }, - { { 0x0080 }, { 0,1,0 } }, /* 20 */ -#ifdef NO_WAIVER - { { 0x3042 }, { 0,1,0 } }, /* */ -#endif - { .is_last = 1 } /* Last element. */ - } - }, -#if 0 - { TST_ISW_REC (eucJP, print) -#else - { TST_ISW_REC (ja_UTF8, print) -#endif - { - { { 0x3000 }, { 0,0,0 } }, /* IDEO. SPACE */ -#ifdef SHOJI_IS_RIGHT - { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ - { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ - { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ - { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ - { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ -#else - { { 0x3020 }, { 0,0,0 } }, /* POSTAL MARK FACE */ - { { 0x3029 }, { 0,0,0 } }, /* Hangzhou NUM9 */ - { { 0x302F }, { 0,0,0 } }, /* Diacritics(Hangul) */ - { { 0x3037 }, { 0,0,0 } }, /* Separator Symbol */ - { { 0x303F }, { 0,0,0 } }, /* IDEO. HALF SPACE */ -#endif - { { 0x3041 }, { 0,0,0 } }, /* HIRAGANA a */ -#ifdef SHOJI_IS_RIGHT - { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ /* non jis */ - { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ -#else - { { 0x3094 }, { 0,0,0 } }, /* HIRAGANA u" */ /* non jis */ - { { 0x3099 }, { 0,0,0 } }, /* SOUND MARK */ -#endif - { { 0x309E }, { 0,0,0 } }, /* ITERATION MARK */ /* 10 */ - { { 0x30A1 }, { 0,0,0 } }, /* KATAKANA a */ -#ifdef SHOJI_IS_RIGHT - { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ /* non jis */ -#else - { { 0x30FA }, { 0,0,0 } }, /* KATAKANA wo" */ /* non jis */ -#endif - { { 0x30FB }, { 0,0,0 } }, /* KATAKANA MID.DOT */ - { { 0x30FE }, { 0,0,0 } }, /* KATAKANA ITERATION */ -#ifdef SHOJI_IS_RIGHT - { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ - { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ - { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ - { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ - { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ -#else - { { 0x3191 }, { 0,0,0 } }, /* KANBUN REV.MARK */ - { { 0x3243 }, { 0,0,0 } }, /* IDEO. MARK (reach) */ - { { 0x32CB }, { 0,0,0 } }, /* IDEO.TEL.SYM.DEC12 */ - { { 0x32FE }, { 0,0,0 } }, /* MARU KATAKANA wo */ - { { 0x33FE }, { 0,0,0 } }, /* CJK IDEO.TEL.31th */ -#endif - { { 0x4E00 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ /* 20 */ - { { 0x4E05 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ -#ifdef SHOJI_IS_RIGHT - { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ -#else - { { 0x4E06 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ -#endif - { { 0x4E07 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x4FFF }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x9000 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ - { { 0x9006 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ -#ifdef SHOJI_IS_RIGHT - { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ -#else - { { 0x9007 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ -#endif - { { 0x9FA5 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ -#ifdef SHOJI_IS_RIGHT - { { 0xFE4F }, { 0,1,0 } }, /* WAVE LOW LINE */ /* 30 */ -#else - { { 0xFE4F }, { 0,0,0 } }, /* WAVE LOW LINE */ /* 30 */ -#endif - { { 0xFF0F }, { 0,0,0 } }, /* FULL SLASH */ - { { 0xFF19 }, { 0,0,0 } }, /* FULL 9 */ - { { 0xFF20 }, { 0,0,0 } }, /* FULL @ */ - { { 0xFF3A }, { 0,0,0 } }, /* FULL Z */ - { { 0xFF40 }, { 0,0,0 } }, /* FULL GRAVE ACC. */ - { { 0xFF5A }, { 0,0,0 } }, /* FULL z */ - { { 0xFF5E }, { 0,0,0 } }, /* FULL ~ (tilde) */ - { { 0xFF61 }, { 0,0,0 } }, /* HALF IDEO.STOP. . */ - { { 0xFF65 }, { 0,0,0 } }, /* HALF KATA MID.DOT */ - { { 0xFF66 }, { 0,0,0 } }, /* HALF KATA WO */ /* 40 */ - { { 0xFF6F }, { 0,0,0 } }, /* HALF KATA tu */ - { { 0xFF70 }, { 0,0,0 } }, /* HALF KATA PL - */ - { { 0xFF71 }, { 0,0,0 } }, /* HALF KATA A */ - { { 0xFF9E }, { 0,0,0 } }, /* HALF KATA MI */ - { .is_last = 1 } /* Last element. */ - } - }, - { TST_ISW_REC (end, print) } -}; diff --git a/test/locale-mbwc/dat_iswpunct.c b/test/locale-mbwc/dat_iswpunct.c deleted file mode 100644 index 2b3612ff8..000000000 --- a/test/locale-mbwc/dat_iswpunct.c +++ /dev/null @@ -1,155 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_iswpunct.c - * - * ISW*: int iswpunct (wint_t wc); - */ - - -#include "dat_isw-funcs.h" - - -TST_ISW_LOC (PUNCT, punct) = { - - { TST_ISW_REC (de, punct) - { - { { 0x0080 }, { 0,1,0 } }, /* CTRL */ - { { 0x009F }, { 0,1,0 } }, /* CTRL */ -#ifdef SHOJI_IS_RIGHT - { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ -#else - { { 0x00A0 }, { 0,0,0 } }, /* NB SPACE */ -#endif - { { 0x00A1 }, { 0,0,0 } }, /* UD ! */ - { { 0x00B0 }, { 0,0,0 } }, /* Degree */ - { { 0x00B1 }, { 0,0,0 } }, /* +- sign */ - { { 0x00B2 }, { 0,0,0 } }, /* SUP 2 */ - { { 0x00B3 }, { 0,0,0 } }, /* SUP 3 */ - { { 0x00B4 }, { 0,0,0 } }, /* ACUTE */ - { { 0x00B8 }, { 0,0,0 } }, /* CEDILLA */ - { { 0x00B9 }, { 0,0,0 } }, /* SUP 1 */ - { { 0x00BB }, { 0,0,0 } }, /* >> */ - { { 0x00BC }, { 0,0,0 } }, /* 1/4 */ - { { 0x00BD }, { 0,0,0 } }, /* 1/2 */ - { { 0x00BE }, { 0,0,0 } }, /* 3/4 */ - { { 0x00BF }, { 0,0,0 } }, /* UD ? */ - { { 0x00C0 }, { 0,1,0 } }, /* A Grave */ - { { 0x00D6 }, { 0,1,0 } }, /* O dia */ - { { 0x00D7 }, { 0,0,0 } }, /* multipl. */ - { { 0x00D8 }, { 0,1,0 } }, /* O stroke */ - { { 0x00DF }, { 0,1,0 } }, /* small Sh */ - { { 0x00E0 }, { 0,1,0 } }, /* a grave */ - { { 0x00F6 }, { 0,1,0 } }, /* o dia */ - { { 0x00F7 }, { 0,0,0 } }, /* division */ - { { 0x00F8 }, { 0,1,0 } }, /* o stroke */ - { { 0x00FF }, { 0,1,0 } }, /* y dia */ - { .is_last = 1 } /* Last element. */ - } - }, - { TST_ISW_REC (enUS, punct) - { - { { WEOF }, { 0,1,0 } }, /* 01 */ - { { 0x0000 }, { 0,1,0 } }, - { { 0x001F }, { 0,1,0 } }, - { { 0x0020 }, { 0,1,0 } }, - { { 0x0021 }, { 0,0,0 } }, - { { 0x002F }, { 0,0,0 } }, - { { 0x0030 }, { 0,1,0 } }, - { { 0x0039 }, { 0,1,0 } }, - { { 0x003A }, { 0,0,0 } }, - { { 0x0040 }, { 0,0,0 } }, - { { 0x0041 }, { 0,1,0 } }, - { { 0x005A }, { 0,1,0 } }, - { { 0x005B }, { 0,0,0 } }, - { { 0x0060 }, { 0,0,0 } }, - { { 0x0061 }, { 0,1,0 } }, - { { 0x007A }, { 0,1,0 } }, - { { 0x007B }, { 0,0,0 } }, - { { 0x007E }, { 0,0,0 } }, - { { 0x007F }, { 0,1,0 } }, - { { 0x0080 }, { 0,1,0 } }, /* 20 */ - { .is_last = 1 } /* Last element. */ - } - }, -#if 0 - { TST_ISW_REC (eucJP, punct) -#else - { TST_ISW_REC (ja_UTF8, punct) -#endif - { - { { 0x3000 }, { 0,1,0 } }, /* IDEO. SPACE */ -#ifdef SHOJI_IS_RIGHT - { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ -#else - { { 0x3020 }, { 0,0,0 } }, /* POSTAL MARK FACE */ -#endif - { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ -#ifdef SHOJI_IS_RIGHT - { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ - { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ - { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ -#else - { { 0x302F }, { 0,0,0 } }, /* Diacritics(Hangul) */ - { { 0x3037 }, { 0,0,0 } }, /* Separator Symbol */ - { { 0x303F }, { 0,0,0 } }, /* IDEO. HALF SPACE */ -#endif - { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ - { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ -#ifdef SHOJI_IS_RIGHT - { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ -#else - { { 0x3099 }, { 0,0,0 } }, /* SOUND MARK */ -#endif - { { 0x309E }, { 0,1,0 } }, /* ITERATION MARK */ /* 10 */ - { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ - { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ - { { 0x30FB }, { 0,0,0 } }, /* KATAKANA MID.DOT */ - { { 0x30FE }, { 0,1,0 } }, /* KATAKANA ITERATION */ -#ifdef SHOJI_IS_RIGHT - { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ - { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ - { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ - { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ - { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ -#else - { { 0x3191 }, { 0,0,0 } }, /* KANBUN REV.MARK */ - { { 0x3243 }, { 0,0,0 } }, /* IDEO. MARK (reach) */ - { { 0x32CB }, { 0,0,0 } }, /* IDEO.TEL.SYM.DEC12 */ - { { 0x32FE }, { 0,0,0 } }, /* MARU KATAKANA wo */ - { { 0x33FE }, { 0,0,0 } }, /* CJK IDEO.TEL.31th */ -#endif - { { 0x4E00 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ /* 20 */ - { { 0x4E05 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x4E07 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4FFF }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9000 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9006 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA5 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ -#ifdef SHOJI_IS_RIGHT - { { 0xFE4F }, { 0,1,0 } }, /* CJK UNI.IDEO. */ /* 30 */ -#else - { { 0xFE4F }, { 0,0,0 } }, /* CJK UNI.IDEO. */ /* 30 */ -#endif - { { 0xFF0F }, { 0,0,0 } }, /* FULL SLASH */ - { { 0xFF19 }, { 0,1,0 } }, /* FULL 9 */ - { { 0xFF20 }, { 0,0,0 } }, /* FULL @ */ - { { 0xFF3A }, { 0,1,0 } }, /* FULL Z */ - { { 0xFF40 }, { 0,0,0 } }, /* FULL GRAVE ACC. */ - { { 0xFF5A }, { 0,1,0 } }, /* FULL z */ - { { 0xFF5E }, { 0,0,0 } }, /* FULL ~ (tilde) */ - { { 0xFF61 }, { 0,0,0 } }, /* HALF IDEO.STOP. . */ - { { 0xFF65 }, { 0,0,0 } }, /* HALF KATA MID.DOT */ - { { 0xFF66 }, { 0,1,0 } }, /* HALF KATA WO */ /* 40 */ - { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ - { { 0xFF70 }, { 0,1,0 } }, /* HALF KATA PL - */ - { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ - { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ - { .is_last = 1 } /* Last element. */ - } - }, - { TST_ISW_REC (end, punct) } -}; diff --git a/test/locale-mbwc/dat_iswspace.c b/test/locale-mbwc/dat_iswspace.c deleted file mode 100644 index 2131b87ae..000000000 --- a/test/locale-mbwc/dat_iswspace.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_iswspace.c - * - * ISW*: int iswspace (wint_t wc); - */ - - -#include "dat_isw-funcs.h" - - -TST_ISW_LOC (SPACE, space) = { - - { TST_ISW_REC (de, space) - { - { { 0x0080 }, { 0,1,0 } }, /* CTRL */ - { { 0x009F }, { 0,1,0 } }, /* CTRL */ - { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ - { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ - { { 0x00B0 }, { 0,1,0 } }, /* Degree */ - { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ - { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ - { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ - { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ - { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ - { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ - { { 0x00BB }, { 0,1,0 } }, /* >> */ - { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ - { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ - { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ - { { 0x00BF }, { 0,1,0 } }, /* UD ? */ - { { 0x00C0 }, { 0,1,0 } }, /* A Grave */ - { { 0x00D6 }, { 0,1,0 } }, /* O dia */ - { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ - { { 0x00D8 }, { 0,1,0 } }, /* O stroke */ - { { 0x00DF }, { 0,1,0 } }, /* small Sh */ - { { 0x00E0 }, { 0,1,0 } }, /* a grave */ - { { 0x00F6 }, { 0,1,0 } }, /* o dia */ - { { 0x00F7 }, { 0,1,0 } }, /* division */ - { { 0x00F8 }, { 0,1,0 } }, /* o stroke */ - { { 0x00FF }, { 0,1,0 } }, /* y dia */ - { .is_last = 1 } /* Last element. */ - } - }, - { TST_ISW_REC (enUS, space) - { - { { WEOF }, { 0,1,0 } }, - { { 0x0000 }, { 0,1,0 } }, - { { 0x0008 }, { 0,1,0 } }, - { { 0x0009 }, { 0,0,0 } }, - { { 0x000D }, { 0,0,0 } }, - { { 0x000E }, { 0,1,0 } }, - { { 0x001F }, { 0,1,0 } }, - { { 0x0020 }, { 0,0,0 } }, - { { 0x0021 }, { 0,1,0 } }, - { { 0x002F }, { 0,1,0 } }, - { { 0x0030 }, { 0,1,0 } }, - { { 0x0039 }, { 0,1,0 } }, - { { 0x003A }, { 0,1,0 } }, - { { 0x0040 }, { 0,1,0 } }, - { { 0x0041 }, { 0,1,0 } }, - { { 0x005A }, { 0,1,0 } }, - { { 0x005B }, { 0,1,0 } }, - { { 0x0060 }, { 0,1,0 } }, - { { 0x0061 }, { 0,1,0 } }, - { { 0x007A }, { 0,1,0 } }, /* 20 */ - { { 0x007B }, { 0,1,0 } }, - { { 0x007E }, { 0,1,0 } }, - { { 0x007F }, { 0,1,0 } }, - { { 0x0080 }, { 0,1,0 } }, - { .is_last = 1 } /* Last element. */ - } - }, -#if 0 - { TST_ISW_REC (eucJP, space) -#else - { TST_ISW_REC (ja_UTF8, space) -#endif - { - { { 0x3000 }, { 0,0,0 } }, /* IDEO. SPACE */ - { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ - { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ - { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ - { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ - { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ /* No JIS */ - { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ - { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ - { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ - { { 0x309E }, { 0,1,0 } }, /* ITERATION MARK */ - { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ - { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ - { { 0x30FB }, { 0,1,0 } }, /* KATAKANA MID.DOT */ - { { 0x30FE }, { 0,1,0 } }, /* KATAKANA ITERATION */ - { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ - { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ - { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ - { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ - { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ - { { 0x4E00 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E05 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x4E07 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4FFF }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9000 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9006 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA5 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0xFE4F }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0xFF0F }, { 0,1,0 } }, /* FULL SLASH */ - { { 0xFF19 }, { 0,1,0 } }, /* FULL 9 */ - { { 0xFF20 }, { 0,1,0 } }, /* FULL @ */ - { { 0xFF3A }, { 0,1,0 } }, /* FULL Z */ - { { 0xFF40 }, { 0,1,0 } }, /* FULL GRAVE ACC. */ - { { 0xFF5A }, { 0,1,0 } }, /* FULL z */ - { { 0xFF5E }, { 0,1,0 } }, /* FULL ~ (tilde) */ - { { 0xFF61 }, { 0,1,0 } }, /* HALF IDEO.STOP. . */ - { { 0xFF65 }, { 0,1,0 } }, /* HALF KATA MID.DOT */ - { { 0xFF66 }, { 0,1,0 } }, /* HALF KATA WO */ - { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ - { { 0xFF70 }, { 0,1,0 } }, /* HALF KATA PL - */ - { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ - { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ - { .is_last = 1 } /* Last element. */ - } - }, - { TST_ISW_REC (end, space) } -}; diff --git a/test/locale-mbwc/dat_iswupper.c b/test/locale-mbwc/dat_iswupper.c deleted file mode 100644 index 865f42fe5..000000000 --- a/test/locale-mbwc/dat_iswupper.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_iswupper.c - * - * ISW*: int iswupper (wint_t wc); - */ - - -#include "dat_isw-funcs.h" - - -TST_ISW_LOC (UPPER, upper) = { - - { TST_ISW_REC (de, upper) - { - { { 0x0080 }, { 0,1,0 } }, /* CTRL */ - { { 0x009F }, { 0,1,0 } }, /* CTRL */ - { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ - { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ - { { 0x00B0 }, { 0,1,0 } }, /* Degree */ - { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ - { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ - { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ - { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ - { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ - { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ - { { 0x00BB }, { 0,1,0 } }, /* >> */ - { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ - { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ - { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ - { { 0x00BF }, { 0,1,0 } }, /* UD ? */ - { { 0x00C0 }, { 0,0,0 } }, /* A Grave */ - { { 0x00D6 }, { 0,0,0 } }, /* O dia */ - { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ - { { 0x00D8 }, { 0,0,0 } }, /* O stroke */ - { { 0x00DF }, { 0,1,0 } }, /* small Sh */ - { { 0x00E0 }, { 0,1,0 } }, /* a grave */ - { { 0x00F6 }, { 0,1,0 } }, /* o dia */ - { { 0x00F7 }, { 0,1,0 } }, /* division */ - { { 0x00F8 }, { 0,1,0 } }, /* o stroke */ - { { 0x00FF }, { 0,1,0 } }, /* y dia */ - { .is_last = 1 } /* Last entry. */ - } - }, - { TST_ISW_REC (enUS, upper) - { - { { WEOF }, { 0,1,0 } }, - { { 0x0000 }, { 0,1,0 } }, - { { 0x001F }, { 0,1,0 } }, - { { 0x0020 }, { 0,1,0 } }, - { { 0x0021 }, { 0,1,0 } }, - { { 0x002F }, { 0,1,0 } }, - { { 0x0030 }, { 0,1,0 } }, - { { 0x0039 }, { 0,1,0 } }, - { { 0x003A }, { 0,1,0 } }, - { { 0x0040 }, { 0,1,0 } }, - { { 0x0041 }, { 0,0,0 } }, - { { 0x005A }, { 0,0,0 } }, - { { 0x005B }, { 0,1,0 } }, - { { 0x0060 }, { 0,1,0 } }, - { { 0x0061 }, { 0,1,0 } }, - { { 0x007A }, { 0,1,0 } }, - { { 0x007B }, { 0,1,0 } }, - { { 0x007E }, { 0,1,0 } }, - { { 0x007F }, { 0,1,0 } }, - { { 0x0080 }, { 0,1,0 } }, - { .is_last = 1 } /* Last entry. */ - } - }, -#if 0 - { TST_ISW_REC (eucJP, upper) -#else - { TST_ISW_REC (ja_UTF8, upper) -#endif - { - { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ - { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ - { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ - { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ - { { 0xFF19 }, { 0,1,0 } }, /* FULL 9 */ - { { 0xFF20 }, { 0,1,0 } }, /* FULL @ */ - { { 0xFF3A }, { 0,0,0 } }, /* FULL Z */ - { { 0xFF40 }, { 0,1,0 } }, /* FULL GRAVE ACC. */ - { { 0xFF5A }, { 0,1,0 } }, /* FULL z */ - { { 0xFF66 }, { 0,1,0 } }, /* HALF KATA WO */ - { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ - { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ - { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ - { .is_last = 1 } /* Last entry. */ - } - }, - { TST_ISW_REC (end, upper) } -}; diff --git a/test/locale-mbwc/dat_iswxdigit.c b/test/locale-mbwc/dat_iswxdigit.c deleted file mode 100644 index 5d6c652f5..000000000 --- a/test/locale-mbwc/dat_iswxdigit.c +++ /dev/null @@ -1,125 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_iswxdigit.c - * - * ISW*: int iswxdigit (wint_t wc); - */ - - -#include "dat_isw-funcs.h" - - -TST_ISW_LOC (XDIGIT, xdigit) = { - - { TST_ISW_REC (de, xdigit) - { - { { 0x0080 }, { 0,1,0 } }, /* CTRL */ - { { 0x009F }, { 0,1,0 } }, /* CTRL */ - { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ - { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ - { { 0x00B0 }, { 0,1,0 } }, /* Degree */ - { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ - { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ - { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ - { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ - { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ - { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ - { { 0x00BB }, { 0,1,0 } }, /* >> */ - { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ - { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ - { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ - { { 0x00BF }, { 0,1,0 } }, /* UD ? */ - { { 0x00C0 }, { 0,1,0 } }, /* A Grave */ - { { 0x00D6 }, { 0,1,0 } }, /* O dia */ - { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ - { { 0x00D8 }, { 0,1,0 } }, /* O stroke */ - { { 0x00DF }, { 0,1,0 } }, /* small Sh */ - { { 0x00E0 }, { 0,1,0 } }, /* a grave */ - { { 0x00F6 }, { 0,1,0 } }, /* o dia */ - { { 0x00F7 }, { 0,1,0 } }, /* division */ - { { 0x00F8 }, { 0,1,0 } }, /* o stroke */ - { { 0x00FF }, { 0,1,0 } }, /* y dia */ - { .is_last = 1 } /* Last element. */ - } - }, - { TST_ISW_REC( enUS, xdigit ) - { - { { WEOF }, { 0,1,0 } }, - { { 0x0000 }, { 0,1,0 } }, - { { 0x001F }, { 0,1,0 } }, - { { 0x0020 }, { 0,1,0 } }, - { { 0x0021 }, { 0,1,0 } }, - { { 0x002F }, { 0,1,0 } }, - { { 0x0030 }, { 0,0,0 } }, - { { 0x0039 }, { 0,0,0 } }, - { { 0x003A }, { 0,1,0 } }, - { { 0x0040 }, { 0,1,0 } }, - { { 0x0041 }, { 0,0,0 } }, - { { 0x005A }, { 0,1,0 } }, - { { 0x005B }, { 0,1,0 } }, - { { 0x0060 }, { 0,1,0 } }, - { { 0x0061 }, { 0,0,0 } }, - { { 0x007A }, { 0,1,0 } }, - { { 0x007B }, { 0,1,0 } }, - { { 0x007E }, { 0,1,0 } }, - { { 0x007F }, { 0,1,0 } }, - { { 0x0080 }, { 0,1,0 } }, - { .is_last = 1 } /* Last element. */ - } - }, -#if 0 - { TST_ISW_REC( eucJP, xdigit ) -#else - { TST_ISW_REC( ja_UTF8, xdigit ) -#endif - { - { { 0x3000 }, { 0,1,0 } }, /* IDEO. SPACE */ - { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ - { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ - { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ - { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ - { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ - { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ - { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ - { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ - { { 0x309E }, { 0,1,0 } }, /* ITERATION MARK */ - { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ - { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ - { { 0x30FB }, { 0,1,0 } }, /* KATAKANA MID.DOT */ - { { 0x30FE }, { 0,1,0 } }, /* KATAKANA ITERATION */ - { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ - { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ - { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ - { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ - { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ - { { 0x4E00 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E05 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x4E07 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x4FFF }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9000 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9006 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ - { { 0x9FA5 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0xFE4F }, { 0,1,0 } }, /* CJK UNI.IDEO. */ - { { 0xFF0F }, { 0,1,0 } }, /* FULL SLASH */ - { { 0xFF19 }, { 0,1,0 } }, /* FULL 9 */ - { { 0xFF20 }, { 0,1,0 } }, /* FULL @ */ - { { 0xFF3A }, { 0,1,0 } }, /* FULL Z */ - { { 0xFF40 }, { 0,1,0 } }, /* FULL GRAVE ACC. */ - { { 0xFF5A }, { 0,1,0 } }, /* FULL z */ - { { 0xFF5E }, { 0,1,0 } }, /* FULL ~ (tilde) */ - { { 0xFF61 }, { 0,1,0 } }, /* HALF IDEO.STOP. . */ - { { 0xFF65 }, { 0,1,0 } }, /* HALF KATA MID.DOT */ - { { 0xFF66 }, { 0,1,0 } }, /* HALF KATA WO */ - { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ - { { 0xFF70 }, { 0,1,0 } }, /* HALF KATA PL - */ - { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ - { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ - { .is_last = 1 } /* Last element. */ - } - }, - { TST_ISW_REC (end, xdigit) } -}; diff --git a/test/locale-mbwc/dat_mblen.c b/test/locale-mbwc/dat_mblen.c deleted file mode 100644 index 8da038c75..000000000 --- a/test/locale-mbwc/dat_mblen.c +++ /dev/null @@ -1,137 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_mblen.c - * - * MBLEN: int mblen (char *s, size_t n); - */ - - -/* - * NOTE: - * int mblen (char *s, size_t n); - * - * where n: a maximum number of bytes - * - * return - the number of bytes - * - * CAUTION: - * - * o When you feed a null pointer for a string (s) to the function, - * set s_flg=0 instead of putting just a 'NULL' there. - * Even if you set a 'NULL', it doens't mean a NULL pointer. - * - * o When s is a null pointer, the function checks state dependency. - * - * state-dependent encoding - return NON-zero - * state-independent encoding - return 0 - * - * If state-dependent encoding is expected, set - * - * s_flg = 0, ret_flg = 0, ret_val = +1 - * - * If state-independent encoding is expected, set - * - * s_flg = 0, ret_flg = 0, ret_val = 0 - * - * - * When you set ret_flg=1, the test program simply compares an - * actual return value with an expected value. You can check - * state-independent case (return value is 0) in that way, but - * you can not check state-dependent case. So when you check - * state- dependency in this test function: tst_mblen(), set - * ret_flg=0 always. It's a special case, and the test - * function takes care of it. - * - * s_flg=0 ret_flg=0 - * | | - * { 0, 0 }, { 0, 0, 0, x } - * | | - * not used ret_val: 0/+1 - * (expected val) */ - - -TST_MBLEN tst_mblen_loc [] = { - { - { Tmblen, TST_LOC_de }, - { - /* 01: a character. */ - { { 1, "\300", USE_MBCURMAX }, { 0, 1, 1 } }, - /* 02: a character. */ - { { 1, "\309", USE_MBCURMAX }, { 0, 1, 1 } }, - /* 03: a character + an invalid byte. */ - { { 1, "Z\204", USE_MBCURMAX }, { 0, 1, +1 } }, - /* 04: control/invalid characters. */ - { { 1, "\177\000", USE_MBCURMAX }, { 0, 1, +1 } }, - /* 05: a null string. */ - { { 1, "", USE_MBCURMAX }, { 0, 1, 0 } }, - /* 06: a null pointer. */ - { { 0, "", USE_MBCURMAX }, { 0, 0, 0 } }, - /* Last element. */ - { .is_last = 1 } - } - }, - { - { Tmblen, TST_LOC_enUS }, - { - /* 01: a character. */ - { { 1, "A", USE_MBCURMAX }, { 0, 1, 1 } }, - /* 02: a character. */ - { { 1, "a", USE_MBCURMAX }, { 0, 1, 1 } }, - /* 03: a character + an invalid byte. */ - { { 1, "Z\204", USE_MBCURMAX }, { 0, 1, +1 } }, - /* 04: control/invalid characters. */ - { { 1, "\177\000", USE_MBCURMAX }, { 0, 1, +1 } }, - /* 05: a null string. */ - { { 1, "", USE_MBCURMAX }, { 0, 1, 0 } }, - /* 06: a null pointer. */ - { { 0, "", USE_MBCURMAX }, { 0, 0, 0 } }, - /* Last element. */ - { .is_last = 1 } - } - }, -#if 0 - { - { Tmblen, TST_LOC_eucJP }, - { - /* 01: a character. */ - { { 1, "\264\301", USE_MBCURMAX }, { 0, 1, 2 } }, - /* 02: a character. */ - { { 1, "\216\261", USE_MBCURMAX }, { 0, 1, 2 } }, - /* 03: a character + an invalid byte. */ - { { 1, "\260\241\200", USE_MBCURMAX }, { 0, 1, 2 } }, - /* 04: control/invalid characters. */ - { { 1, "\377\202", USE_MBCURMAX }, { EILSEQ, 1, -1 } }, - /* 05: a null string. */ - { { 1, "", USE_MBCURMAX }, { 0, 1, 0 } }, - /* 06: a null pointer. */ - { { 0, "", USE_MBCURMAX }, { 0, 0, 0 } }, - /* Last element. */ - { .is_last = 1 } - } - }, -#else - { - { Tmblen, TST_LOC_ja_UTF8 }, - { - /* 01: a character. */ - { { 1, "\346\274\242", USE_MBCURMAX }, { 0, 1, 3 } }, - /* 02: a character. */ - { { 1, "\357\275\261", USE_MBCURMAX }, { 0, 1, 3 } }, - /* 03: a character + an invalid byte. */ - { { 1, "\345\272\234\200", USE_MBCURMAX }, { 0, 1, 3 } }, - /* 04: control/invalid characters. */ - { { 1, "\377\202", USE_MBCURMAX }, { EILSEQ, 1, -1 } }, - /* 05: a null string. */ - { { 1, "", USE_MBCURMAX }, { 0, 1, 0 } }, - /* 06: a null pointer. */ - { { 0, "", USE_MBCURMAX }, { 0, 0, 0 } }, - /* Last element. */ - { .is_last = 1 } - } - }, -#endif - { - { Tmblen, TST_LOC_end} - } -}; diff --git a/test/locale-mbwc/dat_mbrlen.c b/test/locale-mbwc/dat_mbrlen.c deleted file mode 100644 index 63ae19fb2..000000000 --- a/test/locale-mbwc/dat_mbrlen.c +++ /dev/null @@ -1,222 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_mbrlen.c - * - * MBRLEN: size_t mbrlen (const char *s, size_t n, mbstate_t *ps); - */ - -/* - * NOTE: - * (1) A mbstate object is initialized for - * every new data record by the test program. - * - * (2) USE_MBCURMAX is defined as a value of 99. - * - */ - - -TST_MBRLEN tst_mbrlen_loc [] = { - { - { Tmbrlen, TST_LOC_de }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, "", 0, 0, 0 }, - { 1, "", 1, 0, 0 }, - { 1, "\300", USE_MBCURMAX, 0, 0 }, - } - }, - { - { - { 0, 1, 0, }, - { 0, 1, 0, }, - { 0, 1, 1, }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { - { 1, "\300\001", 0, 0, 0 }, - { 1, "\300\001", 1, 0, 0 }, - { 1, "\317\001", USE_MBCURMAX, 0, 0 }, - } - }, - { - { - { 0, 1, 0, }, - { 0, 1, 1, }, - { 0, 1, 1, }, - } - } - }, - { .is_last = 1 } - } - }, - { - { Tmbrlen, TST_LOC_enUS }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, "A", 0, 0, 0 }, - { 1, "A", 1, 0, 0 }, - { 1, "A", USE_MBCURMAX, 0, 0 }, - } - }, - { - { - { 0, 1, 0, }, - { 0, 1, 1, }, - { 0, 1, 1, }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { - { 1, "\317\001", 0, 1, 0 }, - { 1, "\317\001", 1, 1, 0 }, - { 1, "\317\001", USE_MBCURMAX, 1, 0 }, - } - }, - { - { - { 0, 1, 0, }, - { EILSEQ, 1, -1, }, - { EILSEQ, 1, -1, }, - } - } - }, - { .is_last = 1 } - } - }, -#if 0 - { - { Tmbrlen, TST_LOC_eucJP }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, "\317\302", 1, 1, 1 }, - { 0, "", 0, 1, 0 }, - { 1, "\317\302", USE_MBCURMAX, 1, 1 }, - } - }, - { - { - { 0, 1, -2, }, - { 0, 1, -1, }, - { 0, 1, 2, }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { - { 1, "\317", 1, 1, 0 }, - { 1, "\302", 1, 1, 0 }, - { 1, "\317\302", USE_MBCURMAX, 0, 0 }, - } - }, - { - { - { 0, 1, -2, }, -#ifdef SHOJI_IS_RIGHT - { 0, 1, +2, }, -#else - /* XXX ISO C explicitly says that the return value does not - XXX reflect the bytes contained in the state. */ - { 0, 1, +1, }, -#endif - { 0, 1, 2, }, - } - } - }, - { /*----------------- #03 -----------------*/ - { - { - { 1, "\216\217", 0, 0, 0 }, - { 1, "\216\217", 1, 0, 0 }, - { 1, "\216\217", USE_MBCURMAX, 0, 0 }, - } - }, - { - { - { 0, 1, 0, }, - { 0, 1, -2, }, - { EILSEQ, 1, -1, }, - } - } - }, - { .is_last = 1 } - } - }, -#else - { - { Tmbrlen, TST_LOC_ja_UTF8 }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, "\345\222\214", 1, 1, 1 }, - { 0, "", 0, 1, 0 }, - { 1, "\345\222\214", USE_MBCURMAX, 1, 1 }, - } - }, - { - { - { 0, 1, -2, }, - { 0, 1, -1, }, - { 0, 1, 3, }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { - { 1, "\317", 1, 1, 0 }, - { 1, "\266", 1, 1, 0 }, - { 1, "\345\222\214", USE_MBCURMAX, 0, 0 }, - } - }, - { - { - { 0, 1, -2, }, -#ifdef SHOJI_IS_RIGHT - { 0, 1, +2, }, -#else - /* XXX ISO C explicitly says that the return value does not - XXX reflect the bytes contained in the state. */ - { 0, 1, +1, }, -#endif - { 0, 1, 3, }, - } - } - }, - { /*----------------- #03 -----------------*/ - { - { - { 1, "\302\303", 0, 0, 0 }, - { 1, "\302\303", 1, 0, 0 }, - { 1, "\302\303", USE_MBCURMAX, 0, 0 }, - } - }, - { - { - { 0, 1, 0, }, - { 0, 1, -2, }, - { EILSEQ, 1, -1, }, - } - } - }, - { .is_last = 1 } - } - }, -#endif - { - { Tmbrlen, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_mbrtowc.c b/test/locale-mbwc/dat_mbrtowc.c deleted file mode 100644 index b8eb3dd21..000000000 --- a/test/locale-mbwc/dat_mbrtowc.c +++ /dev/null @@ -1,140 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_mbrtowc.c - * - * MBTOWC: size_t mbrtowc (wchar_t *pwc, char *s, size_t n, - * mbstate_t *ps); - */ - -#include - -/* Note: - assumes en_US = en_US.ascii -*/ - - - - -TST_MBRTOWC tst_mbrtowc_loc [] = { - { - { Tmbrtowc, TST_LOC_de }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, 1, "ÄÖÜ", 1, 0, 0 }, - { 1, 1, "ÄÖÜ", 2, 0, 0 }, - { 1, 1, "ÄÖÜ", USE_MBCURMAX, 0, 0 }, - } - }, - { - { - { 0, 1, 1, 0x00C4 }, - { 0, 1, 1, 0x00C4 }, - { 0, 1, 1, 0x00C4 }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { - { 1, 1, "ÄÖÜ", 1, 0, 0 }, - { 1, 1, "ÄÖÜ", 2, 0, 0 }, - { 1, 1, "ÄÖÜ", USE_MBCURMAX, 0, 0 }, - } - }, - { - { - { 0, 1, 1, 0x00C4 }, - { 0, 1, 1, 0x00C4 }, - { 0, 1, 1, 0x00C4 }, - } - } - }, - { .is_last = 1 } - } - }, -#if 0 - /* XXX: These tests don't make sense to me. */ - { - { Tmbrtowc, TST_LOC_enUS }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, 1, "ÄÖÜ", 1, 0, 0 }, - { 1, 1, "ÄÖÜ", 2, 0, 0 }, - { 1, 1, "ÄÖÜ", USE_MBCURMAX, 0, 0 }, - } - }, - { - { - { 0, 1, 1, 0x00C4 }, - { 0, 1, 1, 0x00C4 }, - { 0, 1, 1, 0x00C4 }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { - { 1, 1, "ÄÖÜ", 1, 0, 0 }, - { 1, 1, "ÄÖÜ", 2, 0, 0 }, - { 1, 1, "ÄÖÜ", USE_MBCURMAX, 0, 0 }, - } - }, - { - { - { 0, 1, 1, 0x00C4 }, - { 0, 1, 1, 0x00C4 }, - { 0, 1, 1, 0x00C4 }, - } - } - }, - { .is_last = 1 } - } - }, - { - { Tmbrtowc, TST_LOC_eucJP }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, 1, "ÄÖÜ", 1, 0, 0 }, - { 1, 1, "ÄÖÜ", 2, 0, 0 }, - { 1, 1, "ÄÖÜ", USE_MBCURMAX, 0, 0 }, - } - }, - { - { - { 0, 1, 1, 0x00C4 }, - { 0, 1, 1, 0x00C4 }, - { 0, 1, 1, 0x00C4 }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { - { 1, 1, "ÄÖÜ", 1, 0, 0 }, - { 1, 1, "ÄÖÜ", 2, 0, 0 }, - { 1, 1, "ÄÖÜ", USE_MBCURMAX, 0, 0 }, - } - }, - { - { - { 0, 1, 1, 0x00C4 }, - { 0, 1, 1, 0x00C4 }, - { 0, 1, 1, 0x00C4 }, - } - } - }, - { .is_last = 1 } - } - }, -#endif - { - { Tmbrtowc, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_mbsrtowcs.c b/test/locale-mbwc/dat_mbsrtowcs.c deleted file mode 100644 index 30a0a6c02..000000000 --- a/test/locale-mbwc/dat_mbsrtowcs.c +++ /dev/null @@ -1,180 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_mbsrtowcs.c - * - * MBSRTOWCS: size_t mbsrtowcs (wchar_t *ws, char **s, size_t n, - * mbstate_t *ps); - */ - - -TST_MBSRTOWCS tst_mbsrtowcs_loc [] = { - { - { Tmbsrtowcs, TST_LOC_de }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, "üäö", 4, 0,0 }, - { 1, "üäö", 3, 0,0 }, - { 1, "üäö", 2, 0,0 }, - } - }, - { - { - { 0,1,3, { 0x00FC,0x00E4,0x00F6,0x0000 } }, - { 0,1,3, { 0x00FC,0x00E4,0x00F6,0x0000 } }, - { 0,1,2, { 0x00FC,0x00E4,0x00F6,0x0000 } }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { - { 1, "üäö", 4, 0,0 }, - { 1, "", 1, 0,0 }, - { 0, "üäö", 4, 0,0 }, - } - }, - { - { - { 0,1,3, { 0x00FC,0x00E4,0x00F6,0x0000 } }, - { 0,1,0, { 0x0000 } }, - { 0,1,3, { 0x0000 } }, - } - } - }, - { /*----------------- END -----------------*/ - .is_last = 1 - } - } - }, - - { - { Tmbsrtowcs, TST_LOC_enUS }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, "ABC", 4, 0,0 }, - { 1, "ABC", 3, 0,0 }, - { 1, "ABC", 2, 0,0 }, - } - }, - { - { - { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, - { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, - { 0,1,2, { 0x0041,0x0042,0x0043,0x0000 } }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { - { 1, "ABC", 4, 0,0 }, - { 1, "", 1, 0,0 }, - { 0, "ABC", 4, 0,0 }, - } - }, - { - { - { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, - { 0,1,0, { 0x0000 } }, - { 0,1,3, { 0x0000 } }, - } - } - }, - { /*----------------- END -----------------*/ - .is_last = 1 - } - } - }, - -#if 0 - { - { Tmbsrtowcs, TST_LOC_eucJP }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, "\244\242\244\244\244\246ABC", 7, 0,0 }, - { 1, "\244\242\244\244\244\246ABC", 6, 0,0 }, - { 1, "\244\242\244\244\244\246ABC", 4, 0,0 }, - } - }, - { - { - { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, - { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, - { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 } }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { - { 1, "\244\242\244\244\244\246ABC", 7, 0,0 }, - { 1, "", 1, 0,0 }, - { 0, "\244\242\244\244\244\246ABC", 7, 0,0 }, - } - }, - { - { - { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, - { 0,1,0, { 0x0000 } }, - { 0,1,6, { 0x0000 } }, - } - } - }, - { /*----------------- END -----------------*/ - .is_last = 1 - } - } - }, -#else - { - { Tmbsrtowcs, TST_LOC_ja_UTF8 }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, "\343\201\202\343\201\204\343\201\206ABC", 7, 0,0 }, - { 1, "\343\201\202\343\201\204\343\201\206ABC", 6, 0,0 }, - { 1, "\343\201\202\343\201\204\343\201\206ABC", 4, 0,0 }, - } - }, - { - { - { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, - { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, - { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 } }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { - { 1, "\343\201\202\343\201\204\343\201\206ABC", 7, 0,0 }, - { 1, "", 1, 0,0 }, - { 0, "\343\201\202\343\201\204\343\201\206ABC", 7, 0,0 }, - } - }, - { - { - { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, - { 0,1,0, { 0x0000 } }, - { 0,1,6, { 0x0000 } }, - } - } - }, - { /*----------------- END -----------------*/ - .is_last = 1 - } - } - }, -#endif - { - { Tmbsrtowcs, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_mbstowcs.c b/test/locale-mbwc/dat_mbstowcs.c deleted file mode 100644 index 3b8ce65dd..000000000 --- a/test/locale-mbwc/dat_mbstowcs.c +++ /dev/null @@ -1,190 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_mbstowcs.c - * - * MBSTOWCS: size_t mbstowcs (wchar_t *ws, char *s, size_t n); - */ - -#include - -TST_MBSTOWCS tst_mbstowcs_loc [] = { - { - { Tmbstowcs, TST_LOC_de }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, 1, "ABC", 4 }, - { 1, 1, "ABC", 3 }, - { 1, 1, "ABC", 2 }, - } - }, - { - { - { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, - { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, - { 0,1,2, { 0x0041,0x0042,0x0043,0x0000 } }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { - { 1, 1, "ABC", 4 }, - { 1, 1, "", 1 }, - { 0, 1, "ABC", 4 }, - } - }, - { - { - { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, - { 0,1,0, { 0x0000 } }, - { 0,1,3, { 0x0000 } }, - } - } - }, - { .is_last = 1 } - } - }, - { - { Tmbstowcs, TST_LOC_enUS }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, 1, "ABC", 4 }, - { 1, 1, "ABC", 3 }, - { 1, 1, "ABC", 2 }, - } - }, - { - { - { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, - { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, - { 0,1,2, { 0x0041,0x0042,0x0043,0x0000 } }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { - { 1, 1, "ABC", 4 }, - { 1, 1, "", 1 }, - { 0, 1, "ABC", 4 }, - } - }, - { - { - { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, - { 0,1,0, { 0x0000 } }, - { 0,1,3, { 0x0000 } }, - } - } - }, - { .is_last = 1 } - } - }, -#if 0 - { - { Tmbstowcs, TST_LOC_eucJP }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, 1, "\244\242\244\244\244\246ABC", 7 }, - { 1, 1, "\244\242\244\244\244\246ABC", 6 }, - { 1, 1, "\244\242\244\244\244\246ABC", 4 }, - } - }, - { - { - { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, - { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, - { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 } }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { -#ifdef SHOJI_IS_RIGHT - /* XXX I really don't understand the first and third line. - the result of the first line is the same as the first - in the last test (i.e., returns 6). Also, the third - test will simply convert everything. */ - { 1, 1, "\244\242\244\244\244\246ABC", 7 }, - { 1, 1, "", 1 }, - { 0, 1, "\244\242\244\244\244\246ABC", 7 }, -#else - { 1, 1, "\244\242\244\244\244\246ABC", 4 }, - { 1, 1, "", 1 }, - { 0, 1, "\244\242\244\244\244\246ABC", 0 }, -#endif - } - }, - { - { - { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 } }, - { 0,1,0, { 0x0000 } }, - { 0,1,6, { 0x0000 } }, - } - } - }, - { .is_last = 1 } - } - }, -#else - { - { Tmbstowcs, TST_LOC_ja_UTF8 }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, 1, "\343\201\202\343\201\204\343\201\206ABC", 7 }, - { 1, 1, "\343\201\202\343\201\204\343\201\206ABC", 6 }, - { 1, 1, "\343\201\202\343\201\204\343\201\206ABC", 4 }, - } - }, - { - { - { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, - { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, - { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 } }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { -#ifdef SHOJI_IS_RIGHT - /* XXX I really don't understand the first and third line. - the result of the first line is the same as the first - in the last test (i.e., returns 6). Also, the third - test will simply convert everything. */ - { 1, 1, "\244\242\244\244\244\246ABC", 7 }, - { 1, 1, "", 1 }, - { 0, 1, "\244\242\244\244\244\246ABC", 7 }, -#else - { 1, 1, "\343\201\202\343\201\204\343\201\206ABC", 4 }, - { 1, 1, "", 1 }, - { 0, 1, "\343\201\202\343\201\204\343\201\206ABC", 7 }, -#endif - } - }, - { - { - { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 } }, - { 0,1,0, { 0x0000 } }, - { 0,1,6, { 0x0000 } }, - } - } - }, - { .is_last = 1 } - } - }, -#endif - { - { Tmbstowcs, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_mbtowc.c b/test/locale-mbwc/dat_mbtowc.c deleted file mode 100644 index 9a7a9c358..000000000 --- a/test/locale-mbwc/dat_mbtowc.c +++ /dev/null @@ -1,444 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_mbtowc.c - * - * MBTOWC: int mbtowc (wchar_t *wp, char *s, size_t n); - */ - -/* NOTE: - * - * int mbtowc (wchar_t *wp, char *s, size_t n); - * - * where n: a maximum number of bytes - * return: the number of bytes - * - * - * o When you feed a null pointer for a string (s) to the function, - * set s_flg=0 instead of putting just a 'NULL' there. - * Even if you put a 'NULL', it means a null string as well as "". - * - * o When s is a null pointer, the function checks state dependency. - * - * state-dependent encoding - return NON-zero - * state-independent encoding - return 0 - * - * If state-dependent encoding is expected, set - * - * s_flg = 0, ret_flg = 0, ret_val = +1 - * - * If state-independent encoding is expected, set - * - * s_flg = 0, ret_flg = 0, ret_val = 0 - * - * - * When you set ret_flg=1, the test program simply compares - * an actual return value with an expected value. You can - * check state-independent case (return value is 0) in that - * way, but you can not check state-dependent case. So when - * you check state- dependency in this test function: - * tst_mbtowc(), set ret_flg=0 always. It's a special case - * and the test function takes care of it. - * - * w_flg - * | s: (a null string; can't be (char *)NULL) - * | | - * input. { 1, 0, (char)NULL, MB_LEN_MAX }, - * | - * s_flg=0: makes _s_ a null pointer. - * - * expect { 0,0,0,x, 0x0000 }, - * | | - * | ret_val: 0/+1 - * ret_flg=0 - * - * - * Test data for State dependent encodings: - * - * mbtowc( NULL, NULL, 0 ); ... first data - * mbtowc( &wc, s1, n1 ); ... second data - * mbtowc( &wc, s2, n2 ); ... third data - * */ - -#include - -TST_MBTOWC tst_mbtowc_loc [] = { - { - { Tmbtowc, TST_LOC_de }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, 1, "\xfc\xe4\xf6", 1 }, - { 1, 1, "\xfc\xe4\xf6", 2 }, - { 1, 1, "\xfc\xe4\xf6", MB_LEN_MAX }, - } - }, - { - { - { 0, 1, 1, 0x00FC }, - { 0, 1, 1, 0x00FC }, - { 0, 1, 1, 0x00FC }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { - { 1, 1, "\177", MB_LEN_MAX }, - { 1, 1, "\200", MB_LEN_MAX }, - { 1, 1, "\201", MB_LEN_MAX }, - } - }, - { - { - { 0, 1, 1, 0x007F }, - { 0, 1, 1, 0x0080 }, - { 0, 1, 1, 0x0081 }, - } - } - }, - { /*----------------- #03 -----------------*/ - { - { - { 1, 1, "", MB_LEN_MAX }, - { 0, 1, "\xfc\xe4\xf6", 1 }, - { 0, 1, "\xfc\xe4\xf6", 2 }, - } - }, - { - { - { 0, 1, 0, 0x0000 }, - { 0, 1, 1, 0x0000 }, - { 0, 1, 1, 0x0000 }, - } - } - }, - { /*----------------- #04 -----------------*/ - { - { - { 0, 1, "\xfc\xe4\xf6", MB_LEN_MAX }, - { 0, 1, "\177", MB_LEN_MAX }, - { 0, 1, "", MB_LEN_MAX }, - } - }, - { - { - { 0, 1, 1, 0x0000 }, - { 0, 1, 1, 0x0000 }, - { 0, 1, 0, 0x0000 }, - } - } - }, - { /*----------------- #05 -----------------*/ - { - { - { 0, 1, "\xfc\xe4\xf6", MB_LEN_MAX }, - { 0, 1, "\177", MB_LEN_MAX }, - { 0, 0, NULL, MB_LEN_MAX }, - } - }, - { - { - { 0, 1, 1, 0x0000 }, - { 0, 1, 1, 0x0000 }, - { 0, 0, 0, 0x0000 }, - } - } - }, - { .is_last = 1 } - } - }, - { - { Tmbtowc, TST_LOC_enUS }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, 1, "ABC", 1 }, - { 1, 1, "ABC", 2 }, - { 1, 1, "ABC", MB_LEN_MAX }, - } - }, - { - { - { 0, 1, 1, 0x0041 }, - { 0, 1, 1, 0x0041 }, - { 0, 1, 1, 0x0041 }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { - { 1, 1, "\177", MB_LEN_MAX }, - { 1, 1, "\200", MB_LEN_MAX }, - { 1, 1, "\201", MB_LEN_MAX }, - } - }, - { - { - { 0, 1, 1, 0x007F }, - { EILSEQ, 1, -1, 0x0000 }, - { EILSEQ, 1, -1, 0x0000 }, - } - } - }, - { /*----------------- #03 -----------------*/ - { - { - { 1, 1, "", MB_LEN_MAX }, - { 0, 1, "ABC", 1 }, - { 0, 1, "ABC", 2 }, - } - }, - { - { - { 0, 1, 0, 0x0000 }, - { 0, 1, 1, 0x0000 }, - { 0, 1, 1, 0x0000 }, - } - } - }, - { /*----------------- #04 -----------------*/ - { - { - { 0, 1, "ABC", MB_LEN_MAX }, - { 0, 1, "\177", MB_LEN_MAX }, - { 0, 1, "", MB_LEN_MAX }, - } - }, - { - { - { 0, 1, 1, 0x0000 }, - { 0, 1, 1, 0x0000 }, - { 0, 1, 0, 0x0000 }, - } - } - }, - { /*----------------- #05 -----------------*/ - { - { - { 0, 1, "ABC", MB_LEN_MAX }, - { 0, 1, "\177", MB_LEN_MAX }, - { 0, 0, NULL, MB_LEN_MAX }, - } - }, - { - { - { 0, 1, 1, 0x0000 }, - { 0, 1, 1, 0x0000 }, - { 0, 0, 0, 0x0000 }, - } - } - }, - { .is_last = 1 } - } - }, -#if 0 - { - { Tmbtowc, TST_LOC_eucJP }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, 1, "\244\242A", 1 }, - { 1, 1, "\244\242A", 2 }, - { 1, 1, "\244\242A", MB_LEN_MAX }, - } - }, - { - { -#ifdef SHOJI_IS_RIGHT - { EILSEQ, 1, -1, 0x0000 }, -#else - /* XXX EILSEQ was introduced in ISO C99. */ - { 0, 1, -1, 0x0000 }, -#endif - { 0, 1, 2, 0x3042 }, - { 0, 1, 2, 0x3042 }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { - { 1, 1, "\177\244\242", MB_LEN_MAX }, - { 1, 1, "\377\244\242", MB_LEN_MAX }, - { 1, 1, "\201\244\242", MB_LEN_MAX }, - } - }, - { - { - { 0, 1, +1, 0x007F }, -#ifdef SHOJI_IS_RIGHT - { EILSEQ, 1, -1, 0x0000 }, -#else - { 0, 1, -1, 0x0000 }, -#endif - { 0, 1, +1, 0x0081 }, - } - } - }, - { /*----------------- #03 -----------------*/ - { - { - { 1, 1, "", MB_LEN_MAX }, - { 0, 1, "\244\242A", 1 }, - { 0, 1, "\244\242A", 2 }, - } - }, - { - { - { 0, 1, 0, 0x0000 }, -#ifdef SHOJI_IS_RIGHT - { EILSEQ, 1, -1, 0x0000 }, -#else - /* XXX EILSEQ was introduced in ISO C99. */ - { 0, 1, -1, 0x0000 }, -#endif - { 0, 1, 2, 0x0000 }, - } - } - }, - { /*----------------- #04 -----------------*/ - { - { - { 0, 1, "\244\242A", MB_LEN_MAX }, - { 0, 1, "\177\244\242", MB_LEN_MAX }, - { 0, 1, "", MB_LEN_MAX }, - } - }, - { - { - { 0, 1, 2, 0x0000 }, - { 0, 1, +1, 0x0000 }, - { 0, 1, 0, 0x0000 }, - } - } - }, - { /*----------------- #05 -----------------*/ - { - { - { 0, 1, "\244\242A", MB_LEN_MAX }, - { 0, 1, "\177\244\242", MB_LEN_MAX }, - { 0, 0, NULL, MB_LEN_MAX }, - } - }, - { - { - { 0, 1, 2, 0x0000 }, - { 0, 1, +1, 0x0000 }, - { 0, 0, 0, 0x0000 }, - } - } - }, - { .is_last = 1 } - } - }, -#else - { - { Tmbtowc, TST_LOC_ja_UTF8 }, - { - { /*----------------- #01 -----------------*/ - { - { - { 1, 1, "\343\201\202A", 1 }, - { 1, 1, "\343\201\202A", 3 }, - { 1, 1, "\343\201\202A", MB_LEN_MAX }, - } - }, - { - { -#ifdef SHOJI_IS_RIGHT - { EILSEQ, 1, -1, 0x0000 }, -#else - /* XXX EILSEQ was introduced in ISO C99. */ - { 0, 1, -1, 0x0000 }, -#endif - { 0, 1, 3, 0x3042 }, - { 0, 1, 3, 0x3042 }, - } - } - }, - { /*----------------- #02 -----------------*/ - { - { - { 1, 1, "\177\343\201\202", MB_LEN_MAX }, - { 1, 1, "\377\343\201\202", MB_LEN_MAX }, - { 1, 1, "\302\201\343\201\202", MB_LEN_MAX }, - } - }, - { - { - { 0, 1, +1, 0x007F }, -#ifdef SHOJI_IS_RIGHT - { EILSEQ, 1, -1, 0x0000 }, -#else - { 0, 1, -1, 0x0000 }, -#endif - { 0, 1, +2, 0x0081 }, - } - } - }, - { /*----------------- #03 -----------------*/ - { - { - { 1, 1, "", MB_LEN_MAX }, - { 0, 1, "\343\201\202A", 1 }, - { 0, 1, "\343\201\202A", 3 }, - } - }, - { - { - { 0, 1, 0, 0x0000 }, -#ifdef SHOJI_IS_RIGHT - { EILSEQ, 1, -1, 0x0000 }, -#else - /* XXX EILSEQ was introduced in ISO C99. */ - { 0, 1, -1, 0x0000 }, -#endif - { 0, 1, 3, 0x0000 }, - } - } - }, - { /*----------------- #04 -----------------*/ - { - { - { 0, 1, "\343\201\202A", MB_LEN_MAX }, - { 0, 1, "\177\343\201\202", MB_LEN_MAX }, - { 0, 1, "", MB_LEN_MAX }, - } - }, - { - { - { 0, 1, 3, 0x0000 }, - { 0, 1, +1, 0x0000 }, - { 0, 1, 0, 0x0000 }, - } - } - }, - { /*----------------- #05 -----------------*/ - { - { - { 0, 1, "\343\201\202A", MB_LEN_MAX }, - { 0, 1, "\177\343\201\202", MB_LEN_MAX }, - { 0, 0, NULL, MB_LEN_MAX }, - } - }, - { - { - { 0, 1, 3, 0x0000 }, - { 0, 1, +1, 0x0000 }, - { 0, 0, 0, 0x0000 }, - } - } - }, - { .is_last = 1 } - } - }, -#endif - { - { Tmbtowc, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_strcoll.c b/test/locale-mbwc/dat_strcoll.c deleted file mode 100644 index e12037ca0..000000000 --- a/test/locale-mbwc/dat_strcoll.c +++ /dev/null @@ -1,209 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_strcoll.c - * - * STRCOLL: int strcoll (const char *s1, const char *s2); - */ - -/* - NOTE: - - If a return value is expected to be 0, set ret_flg=1 and the - expected value = 0. If a return value is expected to be a - positive/negative value, set ret_flg=0, and set the expected value - = +1/-1. - There is inconsistensy between tst_strcoll() and tst_wcscoll()(it - has cmp_flg) for input data. I'll fix it. - - Assuming en_US to be en_US.ascii. (maybe, should be iso8859-1). - - - - ASCII CODE : A,B,C, ... , a, b, c, ... B,a:-1 a,B:+1 - DICTIONARY : A,a,B,b,C,c,.... a,B:-1 B,a:+1 */ - -TST_STRCOLL tst_strcoll_loc [] = { - { - { Tstrcoll, TST_LOC_de }, - { - { /*input.*/ { "ÄBCDEFG", "ÄBCDEFG" }, /* #1 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { "XX Ä XX", "XX B XX" }, /* #2 */ - /*expect*/ { 0,0,-1, }, - }, - { /*input.*/ { "XX B XX", "XX Ä XX" }, /* #3 */ - /*expect*/ { 0,0,+1, }, - }, - { /*input.*/ { "B", "a" }, /* #4 */ - /*expect*/ { 0,0,+1, }, - }, - { /*input.*/ { "a", "B" }, /* #5 */ - /*expect*/ { 0,0,-1, }, - }, - { /*input.*/ { "b", "A" }, /* #6 */ - /*expect*/ { 0,0,+1, }, - }, - { /*input.*/ { "A", "b" }, /* #7 */ - /*expect*/ { 0,0,-1, }, - }, - { /*input.*/ { "ä", "B" }, /* #8 */ - /*expect*/ { 0,0,-1, }, - }, - { /*input.*/ { "B", "ä" }, /* #9 */ - /*expect*/ { 0,0,+1, }, - }, - { .is_last = 1 } /* Last element. */ - } - }, - { - { Tstrcoll, TST_LOC_en }, - { - { /*input.*/ { "ABCDEFG", "ABCDEFG" }, /* #1 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { "XX a XX", "XX B XX" }, /* #2 */ - /*expect*/ { 0,0,-1, }, - }, - { /*input.*/ { "XX B XX", "XX a XX" }, /* #3 */ - /*expect*/ { 0,0,+1, }, - }, - { - /* */ - /*input.*/ { "B", "a" }, /* #4 */ -#ifdef SHOJI_IS_RIGHT - /*expect*/ { 0,0,-1, }, -#else - /* XXX We are not testing the C locale. */ - /*expect*/ { 0,0,+1, }, -#endif - }, - { - /* */ - /*input.*/ { "a", "B" }, /* #5 */ -#ifdef SHOJI_IS_RIGHT - /*expect*/ { 0,0,+1, }, -#else - /* XXX We are not testing the C locale. */ - /*expect*/ { 0,0,-1, }, -#endif - }, - { /*input.*/ { "b", "A" }, /* #6 */ - /*expect*/ { 0,0,+1, }, - }, - { /*input.*/ { "A", "b" }, /* #7 */ - /*expect*/ { 0,0,-1, }, - }, -#ifdef NO_WAIVER - /* XXX I do not yet know whether strcoll really should reject - characters outside the multibyte character range. */ - { - /* #8 */ /* */ - /*input.*/ { "\244\242\244\244\244\246\244\250\244\252", "ABCDEFG" }, - /*expect*/ { EINVAL,0,0, }, - }, - { - /* #9 */ /* */ - /*input.*/ { "ABCZEFG", "\244\242\244\244\244\246\244\250\244\252" }, - /*expect*/ { EINVAL,0,0, }, - }, -#endif - { .is_last = 1 } /* Last element. */ - } - }, -#if 0 - { - { Tstrcoll, TST_LOC_eucJP }, - { - { /*input.*/ { "\244\242\244\244\244\246\244\250\244\252", - "\244\242\244\244\244\246\244\250\244\252" }, /* #1 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { "\244\242\244\244\244\246\244\250\244\252", - "\244\242\244\244\244\363\244\250\244\252" }, /* #2 */ - /*expect*/ { 0,0,-1, }, - }, - { /*input.*/ { "\244\242\244\244\244\363\244\250\244\252", - "\244\242\244\244\244\246\244\250\244\252" }, /* #3 */ - /*expect*/ { 0,0,+1, }, - }, - { /*input.*/ { "B", "a" }, /* #4 */ - /*expect*/ { 0,0,-1, }, - }, - { /*input.*/ { "a", "B" }, /* #5 */ - /*expect*/ { 0,0,+1, }, - }, - { /*input.*/ { "b", "A" }, /* #6 */ - /*expect*/ { 0,0,+1, }, - }, - { /*input.*/ { "A", "b" }, /* #7 */ - /*expect*/ { 0,0,-1, }, - }, -#ifdef NO_WAIVER - /* XXX I do not yet know whether strcoll really should reject - characters outside the multibyte character range. */ - { - /* */ - /*input.*/ { "\200\216\217", "ABCDEFG" }, /* #8 */ - /*expect*/ { EINVAL,0,0, }, - }, - { - /* */ - /*input.*/ { "ABCZEFG", "\200\216\217" }, /* #9 */ - /*expect*/ { EINVAL,0,0, }, - }, -#endif - { .is_last = 1 } /* Last element. */ - } - }, -#else - { - { Tstrcoll, TST_LOC_ja_UTF8 }, - { - { /*input.*/ { "\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212", - "\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212" }, /* #1 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { "\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212", - "\343\201\202\343\201\204\343\202\223\343\201\210\343\201\212" }, /* #2 */ - /*expect*/ { 0,0,-1, }, - }, - { /*input.*/ { "\343\201\202\343\201\204\343\202\223\343\201\210\343\201\212", - "\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212" }, /* #3 */ - /*expect*/ { 0,0,+1, }, - }, - { /*input.*/ { "B", "a" }, /* #4 */ - /*expect*/ { 0,0,-1, }, - }, - { /*input.*/ { "a", "B" }, /* #5 */ - /*expect*/ { 0,0,+1, }, - }, - { /*input.*/ { "b", "A" }, /* #6 */ - /*expect*/ { 0,0,+1, }, - }, - { /*input.*/ { "A", "b" }, /* #7 */ - /*expect*/ { 0,0,-1, }, - }, -#ifdef NO_WAIVER - /* XXX I do not yet know whether strcoll really should reject - characters outside the multibyte character range. */ - { - /* */ - /*input.*/ { "\200\216\217", "ABCDEFG" }, /* #8 */ - /*expect*/ { EINVAL,0,0, }, - }, - { - /* */ - /*input.*/ { "ABCZEFG", "\200\216\217" }, /* #9 */ - /*expect*/ { EINVAL,0,0, }, - }, -#endif - { .is_last = 1 } /* Last element. */ - } - }, -#endif - { - { Tstrcoll, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_strfmon.c b/test/locale-mbwc/dat_strfmon.c deleted file mode 100644 index 8c28bba52..000000000 --- a/test/locale-mbwc/dat_strfmon.c +++ /dev/null @@ -1,268 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY - * - * FILE: dat_strfmon.c - * - * STRFMON: size_t strfmon (char *buf, size_t nbyte, char *fmt, ... ); - */ - -/* - * NOTE: - * - * The buffer size should be enough to contain a string including a - * null char. - * Returns the number of bytes of the string (NOT including a null char). - */ - -TST_STRFMON tst_strfmon_loc [] = { - { - { Tstrfmon, TST_LOC_de }, - { - { - /* #01 */ - /*inp*/ { 24, "%n %% %i", 123.00 }, - /*exp*/ { 0,1,23, "123,00 EUR % 123,00 EUR" }, - }, - { - /* #02 */ - /*inp*/ { 24, "%n %% %i", 123.00 }, - /*exp*/ { 0,1,23, "123,00 EUR % 123,00 EUR" }, - }, - { - /* #03 */ - /*inp*/ { 23, "%n %% %i", 123.00 }, - /*exp*/ { E2BIG,1,-1, "" }, - }, - { - /* #04 */ - /*inp*/ { 31, "%n|%i", 1234.561 }, - /*exp*/ { 0,1,25, "1.234,56 EUR|1.234,56 EUR"}, - }, - { - /* #05 */ - /*inp*/ { 33, "%n|%i", -1234.561 }, - /*exp*/ { 0,1,27, "-1.234,56 EUR|-1.234,56 EUR"}, - }, - { - /* #06 */ - /*inp*/ { 33, "%13n|%12i", 1234.561 }, - /*exp*/ { 0,1,26, " 1.234,56 EUR|1.234,56 EUR"}, - }, - { - /* #07 */ - /*inp*/ { 33, "%12n|%12i", -1234.561 }, - /*exp*/ { 0,1,27, "-1.234,56 EUR|-1.234,56 EUR"}, - }, - { - /* #08 */ - /*inp*/ { 33, "%#5n|%#5i", 1234.561 }, - /*exp*/ { 0,1,29, " 1.234,56 EUR| 1.234,56 EUR"}, - }, - { - /* #09 */ - /*inp*/ { 33, "%#5n|%#5i", -1234.561 }, - /*exp*/ { 0,1,29, "- 1.234,56 EUR|- 1.234,56 EUR"}, - }, - { - /* #10 */ - /*inp*/ { 33, "%=*#5n|%=*#5i", 1234.561 }, - /*exp*/ { 0,1,29, " *1.234,56 EUR| *1.234,56 EUR"}, - }, - { - /* #11 */ - /*inp*/ { 33, "%=0#5n|%=0#5i", -1234.561 }, - /*exp*/ { 0,1,29, "-01.234,56 EUR|-01.234,56 EUR"}, - }, - { - /* #12 */ - /*inp*/ { 33, "%^#5n|%^#5i", -1234.561 }, - /*exp*/ { 0,1,27, "- 1234,56 EUR|- 1234,56 EUR"}, - }, - { - /* #13 */ - /*inp*/ { 33, "%#5.0n|%#5.0i", 1234.444 }, - /*exp*/ { 0,1,23, " 1.234 EUR| 1.234 EUR" }, - }, - { - /* #14 */ - /*inp*/ { 33, "%#5.0n|%#5.4i", -1234.555 }, - /*exp*/ { 0,1,28, "- 1.235 EUR|- 1.234,5550 EUR"}, - }, - { - /* #15 */ - /*inp*/ { 33, "%(#5n|%!(#5i", -1234.561 }, - /*exp*/ { 0,1,27, "( 1.234,56 EUR)|( 1.234,56)"}, - }, - { .is_last = 1 } - } - }, - { - { Tstrfmon, TST_LOC_enUS }, - { - { - /* #01 */ - /*inp*/ { 22, "%n %% %i", 123.00 }, - /*exp*/ { 0,1,20, "$123.00 % USD 123.00" }, - }, - { - /* #02 */ - /*inp*/ { 21, "%n %% %i", 123.00 }, - /*exp*/ { 0,1,20, "$123.00 % USD 123.00" }, - }, - { - /* #03 */ - /*inp*/ { 20, "%n %% %i", 123.00 }, - /*exp*/ { E2BIG,1,-1, "" }, - }, - { - /* #04 */ - /*inp*/ { 30, "%n|%i", 1234.561 }, - /*exp*/ { 0,1,22, "$1,234.56|USD 1,234.56" }, - }, - { - /* #05 */ - /*inp*/ { 32, "%n|%i", -1234.561 }, - /*exp*/ { 0,1,24, "-$1,234.56|-USD 1,234.56" }, - }, - { - /* #06 */ - /*inp*/ { 30, "%12n|%12i", 1234.561 }, - /*exp*/ { 0,1,25, " $1,234.56|USD 1,234.56"}, - }, - { - /* #07 */ - /*inp*/ { 32, "%12n|%12i", -1234.561 }, - /*exp*/ { 0,1,26, " -$1,234.56|-USD 1,234.56"}, - }, - { - /* #08 */ - /*inp*/ { 32, "%#5n|%#5i", 1234.561 }, - /*exp*/ { 0,1,26, " $ 1,234.56| USD 1,234.56"}, - }, - { - /* #09 */ - /*inp*/ { 32, "%#5n|%#5i", -1234.561 }, - /*exp*/ { 0,1,26, "-$ 1,234.56|-USD 1,234.56"}, - }, - { - /* #10 */ - /*inp*/ { 32, "%=*#5n|%=*#5i", 1234.561 }, - /*exp*/ { 0,1,26, " $*1,234.56| USD *1,234.56"}, - }, - { - /* #11 */ - /*inp*/ { 32, "%=0#5n|%=0#5i", -1234.561 }, - /*exp*/ { 0,1,26, "-$01,234.56|-USD 01,234.56"}, - }, - { - /* #12 */ - /*inp*/ { 32, "%^#5n|%^#5i", -1234.561 }, - /*exp*/ { 0,1,24, "-$ 1234.56|-USD 1234.56" }, - }, - { - /* #13 */ - /*inp*/ { 32, "%#5.0n|%#5.0i", 1234.444 }, - /*exp*/ { 0,1,20, " $ 1,234| USD 1,234" }, - }, - { - /* #14 */ - /*inp*/ { 32, "%#5.0n|%#5.4i", -1234.555 }, - /*exp*/ { 0,1,25, "-$ 1,235|-USD 1,234.5550"}, - }, - { - /* #15 */ - /*inp*/ { 32, "%(#5n|%!(#5i", -1234.561 }, - /*exp*/ { 0,1,24, "($ 1,234.56)|( 1,234.56)" }, - }, - { .is_last = 1 } - } - }, - { -#if 0 - { Tstrfmon, TST_LOC_eucJP }, -#else - { Tstrfmon, TST_LOC_ja_UTF8 }, -#endif - { - { - /* #01 */ - /*inp*/ { 17, "%n %% %i", 123.00 }, - /*exp*/ { 0,1,15, "\241\357123 % JPY 123" }, - }, - { - /* #02 */ - /*inp*/ { 16, "%n %% %i", 123.00 }, - /*exp*/ { 0,1,15, "\241\357123 % JPY 123" }, - }, - { - /* #03 */ - /*inp*/ { 15, "%n %% %i", 123.00 }, - /*exp*/ { E2BIG,1,-1, "" }, - }, - { - /* #04 */ - /*inp*/ { 30, "%n|%i", 1234.561 }, - /*exp*/ { 0,1,17, "\241\3571,235|JPY 1,235" }, - }, - { - /* #05 */ - /*inp*/ { 32, "%n|%i", -1234.561 }, - /*exp*/ { 0,1,19, "\241\357-1,235|JPY -1,235" }, - }, - { - /* #06 */ - /*inp*/ { 32, "%12n|%12i", 1234.561 }, - /*exp*/ { 0,1,25, " \241\3571,235| JPY 1,235" }, - }, - { - /* #07 */ - /*inp*/ { 32, "%12n|%12i", -1234.561 }, - /*exp*/ { 0,1,25, " \241\357-1,235| JPY -1,235" }, - }, - { - /* #08 */ - /*inp*/ { 32, "%#5n|%#5i", 1234.561 }, - /*exp*/ { 0,1,21, " \241\357 1,235| JPY 1,235" }, - }, - { - /* #09 */ - /*inp*/ { 32, "%#5n|%#5i", -1234.561 }, - /*exp*/ { 0,1,21, "\241\357- 1,235|JPY - 1,235" }, - }, - { - /* #10 */ - /*inp*/ { 32, "%=*#5n|%=*#5i", 1234.561 }, - /*exp*/ { 0,1,21, " \241\357*1,235| JPY *1,235" }, - }, - { - /* #11 */ - /*inp*/ { 32, "%=0#5n|%=0#5i", -1234.561 }, - /*exp*/ { 0,1,21, "\241\357-01,235|JPY -01,235" }, - }, - { - /* #12 */ - /*inp*/ { 32, "%^#5n|%^#5i", -1234.561 }, - /*exp*/ { 0,1,19, "\241\357- 1235|JPY - 1235" }, - }, - { - /* #13 */ - /*inp*/ { 32, "%#5.0n|%#5.0i", 1234.444 }, - /*exp*/ { 0,1,21, " \241\357 1,234| JPY 1,234" }, - }, - { - /* #14 */ - /*inp*/ { 32, "%#5.0n|%#5.4i", -1234.555 }, - /*exp*/ { 0,1,26, "\241\357- 1,235|JPY - 1,234.5550"}, - }, - { - /* #15 */ - /*inp*/ { 32, "%(#5n|%!(#5i", -1234.561 }, - /*exp*/ { 0,1,19, "(\241\357 1,235)|( 1,235)" }, - }, - { .is_last = 1 } - } - }, - { - { Tstrfmon, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_strxfrm.c b/test/locale-mbwc/dat_strxfrm.c deleted file mode 100644 index 0c672d3d7..000000000 --- a/test/locale-mbwc/dat_strxfrm.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY - * - * FILE: dat_strxfrm.c - * - * STRXFRM: size_t strxfrm (char *s1, const char s2, size_t n); - */ - - -/* - * NOTE: - * - * Return value and errno value are checked only for 2nd string: - * org2[]; n1 and n2 don't mean bytes to be translated. - * It means a buffer size including a null character. - * Results of this test depens on results of strcoll(). - * If you got errors, check both test results. - * - * The buffer size should be enough to contain a string including a - * null char. Returns the number of bytes of the string (NOT - * including a null char). - */ - - - -TST_STRXFRM tst_strxfrm_loc [] = { - { - { Tstrxfrm, TST_LOC_de }, - { - { /*inp*/ { "\xf6\xc4\xe4\xfc", "\xf6\xc4\xe4\xfc", 17, 17 }, /* #01 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "aA", "Aa", 10, 10 }, /* #02 */ - /*exp*/ { 0,0,0 , }, - }, - { /*inp*/ { "Aa", "aA", 10, 10 }, /* #03 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "abc", "", 13, 13 }, /* #04 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "a", "B", 7, 7 }, /* #05 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "B", "a", 7, 7 }, /* #06 */ - /*exp*/ { 0,0,0, }, - }, - { - /* hiragana == latin1 */ - /*inp*/ { "abc", "\244\241\244\242", 13, 9 }, /* #07 */ - /*exp*/ { 0,0,0, }, - }, - { .is_last = 1 } - } - }, - { - { Tstrxfrm, TST_LOC_enUS }, - { - { /*inp*/ { "abcd", "abcd", 17, 17 }, /* #01 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "aA", "Aa", 10, 10 }, /* #02 */ - /*exp*/ { 0,0,0 , }, - }, - { /*inp*/ { "Aa", "aA", 10, 10 }, /* #03 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "abc", "", 13, 13 }, /* #04 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "a", "B", 7, 7 }, /* #05 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "B", "a", 7, 7 }, /* #06 */ - /*exp*/ { 0,0,0, }, - }, -#ifdef NO_WAIVER - { - /* */ - /*inp*/ { "abc", "\244\241\244\242", 13, 9 }, /* #07 */ - /*exp*/ { EINVAL,0,0, }, - }, -#endif - { .is_last = 1 } - } - }, -#if 0 - { - { Tstrxfrm, TST_LOC_eucJP }, /* ??? */ - { - { - /* #01 */ - /*inp*/ { "\244\242\244\241", "\244\241\244\242", 5, 5 }, - /*exp*/ { 0,0,0, }, - }, - { - /* #02 */ - /*inp*/ { "\244\241\244\242", "\244\242\244\241", 5, 5 }, - /*exp*/ { 0,0,0, }, - }, - { - /* #03 */ - /*inp*/ { "\244\242\216\261", "\216\261\244\242", 5, 5 }, - /*exp*/ { 0,0,0, }, - }, -#ifdef NO_WAIVER - { - /*inp*/ { "AAA", "\216\217", 5, 5 }, /* #04 */ /* */ - /*exp*/ { EINVAL,0,0, }, - }, -#endif - { .is_last = 1 } - } - }, -#else - { - { Tstrxfrm, TST_LOC_ja_UTF8 }, /* ??? */ - { - { - /* #01 */ - /*inp*/ { "\343\201\202\343\201\201", "\343\201\201\343\201\202", 7, 7 }, - /*exp*/ { 0,0,0, }, - }, - { - /* #02 */ - /*inp*/ { "\343\201\201\343\201\202", "\343\201\202\343\201\201", 7, 7 }, - /*exp*/ { 0,0,0, }, - }, - { - /* #03 */ - /*inp*/ { "\343\201\202\357\275\261", "\357\275\261343\201\202", 7, 7 }, - /*exp*/ { 0,0,0, }, - }, -#ifdef NO_WAIVER - { - /*inp*/ { "AAA", "\340\277\220", 5, 5 }, /* #04 */ /* */ - /*exp*/ { EINVAL,0,0, }, - }, -#endif - { .is_last = 1 } - } - }, -#endif - { - { Tstrxfrm, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_swscanf.c b/test/locale-mbwc/dat_swscanf.c deleted file mode 100644 index 088f165f7..000000000 --- a/test/locale-mbwc/dat_swscanf.c +++ /dev/null @@ -1,185 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY - * - * FILE: dat_swscanf.c - * - * SWSCANF: int swscanf (const wchar_t *s, const wchar_t *fmt, ...); - */ - - -#include -#include -#include "tst_types.h" -#include "tgn_locdef.h" - - -TST_SWSCANF tst_swscanf_loc [] = -{ - { - { Tswscanf, TST_LOC_de }, - { - /*------------------------ 01 -----------------------*/ - { { { - 0x002D, 0x0031, 0x003A, /* %d: -1 */ - 0x0032, 0x003A, /* %u: 2 */ - 0x0033, 0x002C, 0x0033, 0x003A, /* %f: 3.3 */ - 0x00E4, 0x003A, /* %c: 'ä' */ - 0x00C4, 0x00DC, 0x0000, 0x0000, /* %s: "ÄÜ" */ - }, - L"%d:%u:%f:%c:%s", 0 - }, - { /* The fields are: err_val, ret_flag, ret_val, - val_int, val_uns, val_flt, val_c, val_s, val_S. */ - 0,1,5, - -1, 2, 3.3, 'ä', "ÄÜ", { 0x0000, }, - }, - }, - /*------------------------ 02 -----------------------*/ - { { { - 0x00E4, 0x00C4, 0x0000 /* "äÄ" */ - }, - L"%lc", 'C' - }, - { 0,1,1, - 0,0,0,0,"", { 0x00E4, 0x0000 }, - }, - }, - /*------------------------ 03 -----------------------*/ - { { { - 0x00E4, 0x00C4, 0x0000 /* "äÄ" */ - }, - L"%ls", 'S' - }, - { 0,1,1, - 0,0,0,0,"", { 0x00E4, 0x00C4, 0x0000 }, - }, - }, - /*------------------------ 04 -----------------------*/ - /* x 2 */ - { { { - 0x00E4, 0x00C4, 0x0000 /* "äÄ" */ - }, - L"1%d:2%d:3%d:4%d:5%d:6%d:7%d:8%d:9%d", 0 - }, -#ifdef SHOJI_IS_RIGHT - { 1,EINVAL,1,WEOF, - 0,0,0,0,"", { 0x0000 }, -#else - { 0,1,0, - 0,0,0,0,"", { 0x0000 }, -#endif - }, - }, - /*---------------------------------------------------*/ - { .is_last = 1} /* Last element. */ - } - }, - { - { Tswscanf, TST_LOC_enUS }, - { - /*------------------------ 01 -----------------------*/ - { { { 0x002D, 0x0031, 0x003A, - 0x0032, 0x003A, - 0x0035, 0x0034, 0x002E, 0x0033, 0x0045, 0x002D, 0x0031, 0x003A, - 0x0041, 0x003A, - 0x0061, 0x0062, 0x0000, 0x0000, - }, - L"%d:%u:%f:%c:%s", 0 - }, - { 0,1,5, - -1, 2, 5.43, 'A', "ab", { 0x0000 }, - }, - }, - /*------------------------ 02 -----------------------*/ - /* x 2 */ - { { { - 0x0063, 0x0064, 0x0000 - }, - L"%C", 'C' - }, - { 0,1,1, - 0,0,0,0,"", { 0x0063, 0x0000 }, - }, - }, - /*------------------------ 03 -----------------------*/ - { { { - 0x0063, 0x0064, 0x0000 - }, - L"%S", 'S' - }, - { 0,1,1, - 0,0,0,0,"", { 0x0063, 0x0064, 0x0000 }, - }, - }, - /*---------------------------------------------------*/ - { .is_last = 1} /* Last element. */ - } - }, - { -#if 0 - { Tswscanf, TST_LOC_eucJP }, -#else - { Tswscanf, TST_LOC_ja_UTF8 }, -#endif - { - /*------------------------ 01 -----------------------*/ - { { { 0x002D, 0x0031, 0x003A, - 0x0032, 0x003A, - 0x0033, 0x002E, 0x0033, 0x003A, - 0x0062, 0x003A, - 0x0061, 0x0062, 0x0000, 0x0000, - }, - L"%d:%u:%f:%c:%s", 0 - }, - { 0,1,5, - -1, 2, 3.3, 'b', "ab", { 0x0000 } - }, - }, - /*------------------------ 02 -----------------------*/ - { { { - 0x30A2, 0x30A4, 0x0000 - }, - L"%ls", 'S' - }, - { 0,1,1, - 0,0,0,0,"", { 0x30A2, 0x30A4, 0x0000 } - }, - }, - /*------------------------ 03 -----------------------*/ - { { { - 0x0031, 0x003A, - 0x0030, 0x003A, - 0x0033, 0x002E, 0x0039, 0x003A, - 0x0061, 0x003A, - 0x0063, 0x0064, 0x0000, 0x0000, - }, - L"%2$d:%1$u:%3$f:%4$c:%5$s", 0 - }, - { 0,1,5, - 0, 1, 3.9, 'a', "cd", { 0x0000 } - }, - }, -#ifdef SHOJI_IS_RIGHT - /* XXX This test does not make sense. The format string is - L"\x1\x2\x25\x53" and it is supposed to match the words - 0x30A2, 0x30A4, 0x0001. */ - /*------------------------ 04 -----------------------*/ - /* x 2 */ - { { { - 0x30A2, 0x30A4, 0x0001, 0x0000 - }, - { 0x0001,0x0002,0x0025,0x0053,0x0000 }, 'S' - }, - { EILSEQ,1,EOF, - 0,0,0,0,"", { 0x0000 } - }, - }, -#endif - /*---------------------------------------------------*/ - { .is_last = 1} /* Last element. */ - } - }, - { - { Tswscanf, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_tow-funcs.h b/test/locale-mbwc/dat_tow-funcs.h deleted file mode 100644 index 44564374c..000000000 --- a/test/locale-mbwc/dat_tow-funcs.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_tow-funcs.h - * - * ISW*: int tow*( wint_t wc ); - */ - -#include -#include -#include -#include "tst_types.h" -#include "tgn_locdef.h" - -#define TST_TOW_LOC(FUNC, func) \ - TST_TOW## FUNC tst_tow## func ##_loc[] - -#define TST_TOW_REC(locale, func) \ - { Ttow## func, TST_LOC_## locale }, - -/* - * NOTE: - * need more test data! - */ diff --git a/test/locale-mbwc/dat_towctrans.c b/test/locale-mbwc/dat_towctrans.c deleted file mode 100644 index cf3712a21..000000000 --- a/test/locale-mbwc/dat_towctrans.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_towctrans.c - * - * TOWCTRANS: wint_t towctrans (wint_t wc, wctrans_t charclass); - */ - -#include -#include -#include -#include "tst_types.h" -#include "tgn_locdef.h" - -/* - * NOTE: - * Set ret_flg = 1, when a return value is expected to be 0 (FALSE). - * Set ret_flg = 0, when a return value is expected to be non-zero (TRUE). - * - * Since the functions return *non*-zero value for TRUE, can't - * compare an actual return value with an expected return value. - * Set the ret_flg=0 for TRUE cases and the tst_isw*() will check - * the non-zero value. - * - * { { WEOF }, { 0,0,1,0 } }, - * | | - * | ret_val: an expected return value - * ret_flg: if 1, compare an actual return value with the - * ret_val; if 0, the test program checks - * the actual return value. - * - * CAUTION: if a charclass is invalid, the test function gives - * towctrans() an invalid wctrans object instead of a return value - * from wctrans() which is supposed to be 0. - */ - -TST_TOWCTRANS tst_towctrans_loc [] = { - { - { Ttowctrans, TST_LOC_C }, - { -#ifdef SHOJI_IS_RIGHT - { { 0x0010, "xxxxxxx" }, { EINVAL,1,0x0010 } }, -#else - { { 0x0010, "xxxxxxx" }, { 0, 1,0x0010 } }, -#endif - { { 0x007F, "tolower" }, { 0, 1,0x007F } }, - { { 0x0061, "toupper" }, { 0, 1,0x0041 } }, - { { 0x0041, "tolower" }, { 0, 1,0x0061 } }, - { .is_last = 1 } - } - }, - { - { Ttowctrans, TST_LOC_de }, - { -#ifdef SHOJI_IS_RIGHT - { { 0x0010, "tojkata" }, { EINVAL,1,0x0010 } }, -#else - { { 0x0010, "tojkata" }, { 0, 1,0x0010 } }, -#endif - { { 0x0080, "tolower" }, { 0, 1,0x0080 } }, - { { 0x00EC, "toupper" }, { 0, 1,0x00CC } }, - { { 0x00CC, "tolower" }, { 0, 1,0x00EC } }, - { .is_last = 1 } - } - }, - { - { Ttowctrans, TST_LOC_enUS }, - { -#ifdef SHOJI_IS_RIGHT - { { 0x0010, "xxxxxxx" }, { EINVAL,1,0x0010 } }, -#else - { { 0x0010, "xxxxxxx" }, { 0, 1,0x0010 } }, -#endif - { { 0x007F, "tolower" }, { 0, 1,0x007F } }, - { { 0x0061, "toupper" }, { 0, 1,0x0041 } }, - { { 0x0041, "tolower" }, { 0, 1,0x0061 } }, - { .is_last = 1 } - } - }, - { -#if 0 - { Ttowctrans, TST_LOC_eucJP }, -#else - { Ttowctrans, TST_LOC_ja_UTF8 }, -#endif - { - { { 0xFF21, "tolower" }, { 0, 1,0xFF41 } }, - { { 0xFF41, "toupper" }, { 0, 1,0xFF21 } }, - { { 0x30A1, "tojhira" }, { 0, 1,0x3041 } }, - { { 0x3041, "tojkata" }, { 0, 1,0x30A1 } }, - { .is_last = 1 } - } - }, - { - { Ttowctrans, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_towlower.c b/test/locale-mbwc/dat_towlower.c deleted file mode 100644 index b6dd275fd..000000000 --- a/test/locale-mbwc/dat_towlower.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_towlower.c - * - * ISW*: int towlower (wint_t wc); - */ - - -#include "dat_tow-funcs.h" - - -TST_TOW_LOC (LOWER, lower) = { - - { TST_TOW_REC (de, lower) - { - { { WEOF }, { 0, 1, (wint_t)-1 } }, - { { 0x0080 }, { 0, 1, 0x0080 } }, - { { 0x00CC }, { 0, 1, 0x00EC } }, - { { 0x00EC }, { 0, 1, 0x00EC } }, - { .is_last = 1 } /* Last element. */ - } - }, - { TST_TOW_REC (enUS, lower) - { - { { WEOF }, { 0, 1, (wint_t)-1 } }, - { { 0x007F }, { 0, 1, 0x007F } }, - { { 0x0041 }, { 0, 1, 0x0061 } }, - { { 0x0061 }, { 0, 1, 0x0061 } }, - { .is_last = 1 } /* Last element. */ - } - }, -#if 0 - { TST_TOW_REC (eucJP, lower) -#else - { TST_TOW_REC (ja_UTF8, lower) -#endif - { - { { 0x007F }, { 0, 1, 0x007F } }, - { { 0x0080 }, { 0, 1, 0x0080 } }, - { { 0xFF21 }, { 0, 1, 0xFF41 } }, - { { 0xFF41 }, { 0, 1, 0xFF41 } }, - { .is_last = 1 } /* Last element. */ - } - }, - { TST_TOW_REC (end, lower) } -}; diff --git a/test/locale-mbwc/dat_towupper.c b/test/locale-mbwc/dat_towupper.c deleted file mode 100644 index 704ad44a6..000000000 --- a/test/locale-mbwc/dat_towupper.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_towupper.c - * - * ISW*: int towupper (wint_t wc); - */ - - -#include "dat_tow-funcs.h" - - -TST_TOW_LOC (UPPER, upper) = { - - { TST_TOW_REC (de, upper) - { - { { WEOF }, { 0, 1, (wint_t)-1 } }, - { { 0x0080 }, { 0, 1, 0x0080 } }, - { { 0x00EC }, { 0, 1, 0x00CC } }, - { { 0x00CC }, { 0, 1, 0x00CC } }, - { .is_last = 1 } /* Last element. */ - } - }, - { TST_TOW_REC (enUS, upper) - { - { { WEOF }, { 0, 1, (wint_t)-1 } }, - { { 0x0080 }, { 0, 1, 0x0080 } }, - { { 0x0041 }, { 0, 1, 0x0041 } }, - { { 0x0061 }, { 0, 1, 0x0041 } }, - { .is_last = 1 } /* Last element. */ - } - }, -#if 0 - { TST_TOW_REC (eucJP, upper) -#else - { TST_TOW_REC (ja_UTF8, upper) -#endif - { - { { WEOF }, { 0, 1, (wint_t)-1 } }, - { { 0x007F }, { 0, 1, 0x007F } }, - { { 0xFF41 }, { 0, 1, 0xFF21 } }, - { { 0xFF21 }, { 0, 1, 0xFF21 } }, - { .is_last = 1 } /* Last element. */ - } - }, - { TST_TOW_REC (end, upper) } -}; diff --git a/test/locale-mbwc/dat_wcrtomb.c b/test/locale-mbwc/dat_wcrtomb.c deleted file mode 100644 index 055f7b08c..000000000 --- a/test/locale-mbwc/dat_wcrtomb.c +++ /dev/null @@ -1,122 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wcrtomb.c - * - * WCRTOMB: intwcrtomb (char *s, wchar_t wc, mbstate_t *ps); - * - */ - -TST_WCRTOMB tst_wcrtomb_loc [] = { - { - { Twcrtomb, TST_LOC_de }, - { - /* #01 : normal case */ - { /*input.*/ { 1, 0x00FC, 0,0 }, - /*expect*/ { 0, 1,1, "ü" }, - }, - /* #02 : normal case */ - { /*input.*/ { 1, 0x00D6, 0,0 }, - /*expect*/ { 0, 1,1, "Ö" }, - }, - /* #03 : error case */ - { /*input.*/ { 1, 0xFFA1, 0,0 }, - /*expect*/ { EILSEQ,1,-1, "" }, - }, - /* #04 : */ - { /*input.*/ { 0, 0x0041, 0,0 }, - /*expect*/ { 0, 1,1, "" }, - }, - /* #05 : */ - { /*input.*/ { 0, 0x0092, 0,0 }, - /*expect*/ { 0, 1,1, "" }, - }, - { .is_last = 1 } - } - }, - { - { Twcrtomb, TST_LOC_enUS }, - { - /* #01 : normal case */ - { /*input.*/ { 1, 0x0041, 0,0 }, - /*expect*/ { 0, 1,1, "A" }, - }, - /* #02 : normal case */ - { /*input.*/ { 1, 0x0042, 0,0 }, - /*expect*/ { 0, 1,1, "B" }, - }, - /* #03 : error case */ - /* x 2 */ - { /*input.*/ { 1, 0x0092, 0,0 }, /* assume ascii */ - /*expect*/ { EILSEQ,1,-1, "" }, - }, - /* #04 : */ - { /*input.*/ { 0, 0x0041, 0,0 }, - /*expect*/ { 0, 1,1, "" }, - }, - /* #05 : */ - { /*input.*/ { 0, 0x0092, 0,0 }, - /*expect*/ { 0, 1,1, "" }, - }, - { .is_last = 1 } - } - }, -#if 0 - { - { Twcrtomb, TST_LOC_eucJP }, - { - /* #01 : normal case */ - { /*input.*/ { 1, 0x3042, 0,0 }, - /*expect*/ { 0, 1,2, "\244\242" }, - }, - /* #02 : normal case */ - { /*input.*/ { 1, 0x3044, 0,0 }, - /*expect*/ { 0, 1,2, "\244\244" }, - }, - /* #03 : normal case */ - { /*input.*/ { 1, 0x008E, 0,0 }, - /*expect*/ { EILSEQ, 1,-1, "" }, - }, - /* #04 : */ - { /*input.*/ { 0, 0x3042, 0,0 }, - /*expect*/ { 0, 0,0, "" }, - }, - /* #05 : */ - { /*input.*/ { 0, 0x008E, 0,0 }, - /*expect*/ { 0, 0,0, "" }, - }, - { .is_last = 1 } - } - }, -#else - { - { Twcrtomb, TST_LOC_ja_UTF8 }, - { - /* #01 : normal case */ - { /*input.*/ { 1, 0x3042, 0,0 }, - /*expect*/ { 0, 1,3, "\343\201\202" }, - }, - /* #02 : normal case */ - { /*input.*/ { 1, 0x3044, 0,0 }, - /*expect*/ { 0, 1,3, "\343\201\204" }, - }, - /* #03 : normal case */ - { /*input.*/ { 1, 0x008E, 0,0 }, - /*expect*/ { EILSEQ, 1,-1, "" }, - }, - /* #04 : */ - { /*input.*/ { 0, 0x3042, 0,0 }, - /*expect*/ { 0, 0,0, "" }, - }, - /* #05 : */ - { /*input.*/ { 0, 0x008E, 0,0 }, - /*expect*/ { 0, 0,0, "" }, - }, - { .is_last = 1 } - } - }, -#endif - { - { Twcrtomb, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_wcscat.c b/test/locale-mbwc/dat_wcscat.c deleted file mode 100644 index f54e72de3..000000000 --- a/test/locale-mbwc/dat_wcscat.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wcscat.c - * - * WCSCAT: wchar_t *wcscat (wchar_t *ws1, wchar_t *ws2) - */ - -/* NOTE: - Since this is not a locale sensitive function, - it doesn't make sense to test the function on some - locales. Better make different test cases for each locale ... - (Also some wc* functions are not locale sensitive.) -*/ - - -TST_WCSCAT tst_wcscat_loc [] = { - - { - {Twcscat, TST_LOC_de}, - { - /* 1 */ - {{{ 0x00C1,0x00C2,0x0000 }, - { 0x00C3,0x00C4,0x0000 }, }, - { 0, 0, 0, - { 0x00C1,0x00C2,0x00C3,0x00C4,0x0000 } }, - }, - /* 2 */ - {{{ 0x0001,0x0002,0x0000 }, - { 0x0003,0x0004,0x0000 }, }, - { 0, 0, 0, - { 0x0001,0x0002,0x0003,0x0004,0x0000 } }, - }, - /* 3 */ - {{{ 0x0000 }, - { 0x00C3,0x00C4,0x0000 }, }, - { 0, 0, 0, - { 0x00C3,0x00C4,0x0000 } }, - }, - /* 4 */ - {{{ 0x0001,0xFFFF,0x0000 }, - { 0x0080,0x0090,0x0000 }, }, - { 0, 0, 0, - { 0x0001,0xFFFF,0x0080,0x0090,0x0000 } }, - }, - {.is_last = 1} - } - }, - { - {Twcscat, TST_LOC_enUS}, - { - /* 1 */ - {{{ 0x0041,0x0042,0x0000 }, - { 0x0043,0x0044,0x0000 }, }, - { 0, 0, 0, - { 0x0041,0x0042,0x0043,0x0044,0x0000 } }, - }, - /* 2 */ - {{{ 0x0001,0x0002,0x0000 }, - { 0x0003,0x0004,0x0000 }, }, - { 0, 0, 0, - { 0x0001,0x0002,0x0003,0x0004,0x0000 } }, - }, - /* 3 */ - {{{ 0x0000 }, - { 0x0043,0x0044,0x0000 }, }, - { 0, 0, 0, - { 0x0043,0x0044,0x0000 } }, - }, - /* 4 */ - {{{ 0x0001,0xFFFF,0x0000 }, - { 0x0080,0x0090,0x0000 }, }, - { 0, 0, 0, - { 0x0001,0xFFFF,0x0080,0x0090,0x0000 } }, - }, - {.is_last = 1} - } - }, - { -#if 0 - {Twcscat, TST_LOC_eucJP}, -#else - {Twcscat, TST_LOC_ja_UTF8}, -#endif - { - /* 1 */ - {{{ 0x30A2,0x74E0,0x0000 }, - { 0xFF71,0x0041,0x0000 }, }, - { 0, 0, 0, - { 0x30A2,0x74E0,0xFF71,0x0041,0x0000 } }, - }, - /* 2 */ - {{{ 0x0001,0x0002,0x0000 }, - { 0x0003,0x0004,0x0000 }, }, - { 0, 0, 0, - { 0x0001,0x0002,0x0003,0x0004,0x0000 } }, - }, - /* 3 */ - {{{ 0x30A2,0xFF71,0x0000 }, - { 0x0000 }, }, - { 0, 0, 0, - { 0x30A2,0xFF71,0x0000 } }, - }, - /* 4 */ - {{{ 0x0001,0xFFFF,0x0000 }, - { 0x0080,0x0090,0x0000 }, }, - { 0, 0, 0, - { 0x0001,0xFFFF,0x0080,0x0090,0x0000 } }, - }, - {.is_last = 1} - } - }, - { - {Twcscat, TST_LOC_end} - } -}; diff --git a/test/locale-mbwc/dat_wcschr.c b/test/locale-mbwc/dat_wcschr.c deleted file mode 100644 index aa355e98e..000000000 --- a/test/locale-mbwc/dat_wcschr.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wcschr.c - * - * WCSCHR: wchar_t *wcschr (const wchar_t *ws, wchar_t wc); - */ - -TST_WCSCHR tst_wcschr_loc [] = { - - { { Twcschr, TST_LOC_de }, - { - { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0x00C0 }, /* #1 */ - /*expect*/ { 0,1,(wchar_t *)NULL }, - }, - { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0x00C1 }, /* #2 */ - /*expect*/ { 0,0,0 }, - }, - { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0x00C2 }, /* #3 */ - /*expect*/ { 0,0,0 }, - }, - { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0x00C3 }, /* #4 */ - /*expect*/ { 0,0,0 }, - }, - { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0x0000 }, /* #5 */ - /*expect*/ { 0,0,0 }, - }, - { /*input.*/ { { 0x0000,0x00C2,0x00C3,0x0000 }, 0x00C1 }, /* #6 */ - /*expect*/ { 0,1,(wchar_t *)NULL }, - }, - { /*input.*/ { { 0x0000,0x00C2,0x00C3,0x0000 }, 0x0000 }, /* #7 */ - /*expect*/ { 0,0,0 }, - }, - { .is_last = 1 } - } - }, - { { Twcschr, TST_LOC_enUS }, - { - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 0x0040 }, /* #1 */ - /*expect*/ { 0,1,(wchar_t *)NULL }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 0x0041 }, /* #2 */ - /*expect*/ { 0,0,0 }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 0x0042 }, /* #3 */ - /*expect*/ { 0,0,0 }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 0x0043 }, /* #4 */ - /*expect*/ { 0,0,0 }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 0x0000 }, /* #5 */ - /*expect*/ { 0,0,0 }, - }, - { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, 0x0041 }, /* #6 */ - /*expect*/ { 0,1,(wchar_t *)NULL }, - }, - { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, 0x0000 }, /* #7 */ - /*expect*/ { 0,0,0 }, - }, - { .is_last = 1 } - } - }, -#if 0 - { { Twcschr, TST_LOC_eucJP }, -#else - { { Twcschr, TST_LOC_ja_UTF8 }, -#endif - { - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0x3040 }, /* #1 */ - /*expect*/ { 0,1,(wchar_t *)NULL }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0x3041 }, /* #2 */ - /*expect*/ { 0,0,0 }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0x3042 }, /* #3 */ - /*expect*/ { 0,0,0 }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0x3043 }, /* #4 */ - /*expect*/ { 0,0,0 }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0x0000 }, /* #5 */ - /*expect*/ { 0,0,0 }, - }, - { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, 0x3041 }, /* #6 */ - /*expect*/ { 0,1,(wchar_t *)NULL }, - }, - { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, 0x0000 }, /* #7 */ - /*expect*/ { 0,0,0 }, - }, - { .is_last = 1 } - } - }, - { { Twcschr, TST_LOC_end } } -}; diff --git a/test/locale-mbwc/dat_wcscmp.c b/test/locale-mbwc/dat_wcscmp.c deleted file mode 100644 index a2da5519b..000000000 --- a/test/locale-mbwc/dat_wcscmp.c +++ /dev/null @@ -1,137 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wcscmp.c - * - * WCSCMP: int wcscmp (const wchar_t *ws1, const wchar_t *ws2); - */ - -/* NOTE: - This is not a locale sensitive function and - it may not make sence testing it for each locale ... -*/ - - -TST_WCSCMP tst_wcscmp_loc [] = { - { - { Twcscmp, TST_LOC_de }, - { - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x00D2,0x00D3,0x0000 }, }, /* #1 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0000,0x00D1,0x00D3,0x0000 }, - { 0x0000,0x00D2,0x00D3,0x0000 }, }, /* #2 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D1,0x00D3,0x0000 }, - { 0x0000,0x00D2,0x00D3,0x0000 }, }, /* #3 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x00D1,0x00D3,0x0000 }, }, /* #4 */ - /*expect*/ { 0,1,-1, }, - }, - { /*input.*/ { { 0x00D1,0x00D5,0x00D3,0x0000 }, - { 0x00D1,0x00D2,0x00D3,0x0000 }, }, /* #5 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x00D2,0x00D9,0x0000 }, }, /* #6 */ - /*expect*/ { 0,1,-1, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x0000 }, - { 0x00D1,0x00D2,0x00D9,0x0000 }, }, /* #7 */ - /*expect*/ { 0,1,-1, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D9,0x0000 }, - { 0x00D1,0x00D2,0x0000 }, }, /* #8 */ - /*expect*/ { 0,1,1, }, - }, - { .is_last = 1 } - } - }, - { - { Twcscmp, TST_LOC_enUS }, - { - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0042,0x0043,0x0000 }, }, /* #1 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0000,0x0041,0x0043,0x0000 }, - { 0x0000,0x0042,0x0043,0x0000 }, }, /* #2 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0041,0x0041,0x0043,0x0000 }, - { 0x0000,0x0042,0x0043,0x0000 }, }, /* #3 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, - { 0x0041,0x0041,0x0043,0x0000 }, }, /* #4 */ - /*expect*/ { 0,1,-1, }, - }, - { /*input.*/ { { 0x0041,0x0045,0x0043,0x0000 }, - { 0x0041,0x0042,0x0043,0x0000 }, }, /* #5 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0042,0x0049,0x0000 }, }, /* #6 */ - /*expect*/ { 0,1,-1, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0000 }, - { 0x0041,0x0042,0x0049,0x0000 }, }, /* #7 */ - /*expect*/ { 0,1,-1, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0049,0x0000 }, - { 0x0041,0x0042,0x0000 }, }, /* #8 */ - /*expect*/ { 0,1,1, }, - }, - { .is_last = 1 } - } - }, - { -#if 0 - { Twcscmp, TST_LOC_eucJP}, -#else - { Twcscmp, TST_LOC_ja_UTF8}, -#endif - { - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3041,0x3042,0x3043,0x0000 }, }, /* #1 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0000,0x3041,0x3043,0x0000 }, - { 0x0000,0x3042,0x3043,0x0000 }, }, /* #2 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x3041,0x3041,0x3043,0x0000 }, - { 0x0000,0x3042,0x3043,0x0000 }, }, /* #3 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, - { 0x3041,0x3041,0x3043,0x0000 }, }, /* #4 */ - /*expect*/ { 0,1,-1, }, - }, - { /*input.*/ { { 0x3041,0x3045,0x3043,0x0000 }, - { 0x3041,0x3042,0x3043,0x0000 }, }, /* #5 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3041,0x3042,0x3049,0x0000 }, }, /* #6 */ - /*expect*/ { 0,1,-1, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x0000 }, - { 0x3041,0x3042,0x3049,0x0000 }, }, /* #7 */ - /*expect*/ { 0,1,-1, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3049,0x0000 }, - { 0x3041,0x3042,0x0000 }, }, /* #8 */ - /*expect*/ { 0,1,1, }, - }, - { .is_last = 1 } - } - }, - { - { Twcschr, TST_LOC_end} - } -}; diff --git a/test/locale-mbwc/dat_wcscoll.c b/test/locale-mbwc/dat_wcscoll.c deleted file mode 100644 index a9733ad8b..000000000 --- a/test/locale-mbwc/dat_wcscoll.c +++ /dev/null @@ -1,210 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wcscoll.c - * - * WCSCOLL: int wcscoll (const wchar_t *ws1, const wchar_t *ws2); - */ - -/* - * CAUTION: - * When LC_COLLATE (or LC_ALL) is set for ja_JP.EUC, - * wcscoll() core-dumps for big values such as 0x3041 - * (0x0041 is okay) in glibc 2.1.2. - * - * NOTE: - * a) When 0 is expected as a return value, set ret_flg=1. - * - the return value is compared with an expected value: ret_val. - * b) When a positive value is expected as a return value, - * set ret_flg=0 and set cmp_flg=+1. - * - the return value is not compared with the expected value - * (can not be compared); instead, the test program checks - * if the return value is positive when cmp_flg=+1. - * c) When a negative value is expected as a return value, - * ...... - * d) When data contains invalid values, set err_val to the expected errno. - * Set ret_flg=0 and cmp_flg=0 so that it doesn't compare - * the return value with an expected value or doesn't check - * the sign of the return value. - * - * - * ------------------------------------------- - * CASE err_val ret_flg ret_val cmp_flg - * ------------------------------------------- - * a) 0 1 0 0 - * b) 0 0 0 +1 - * c) 0 0 0 -1 - * d) EINVAL 0 0 0 - * ------------------------------------------- - */ - - -TST_WCSCOLL tst_wcscoll_loc [] = { - - { { Twcscoll, TST_LOC_de }, - { - { /*input.*/ { { 0x00E1,0x00E2,0x00E3,0x0000 }, - { 0x00E1,0x00E2,0x00E3,0x0000 }, }, /* #1 */ - /*expect*/ { 0,1,0, 0, }, - }, - { /*input.*/ { { 0x0000,0x00E1,0x00E3,0x0000 }, - { 0x0000,0x00E2,0x00E3,0x0000 }, }, /* #2 */ - /*expect*/ { 0,1,0, 0, }, - }, - { /*input.*/ { { 0x00E1,0x00E1,0x00E3,0x0000 }, - { 0x0000,0x00E2,0x00E3,0x0000 }, }, /* #3 */ - /*expect*/ { 0,0,0, +1, }, - }, - { /*input.*/ { { 0x0000,0x00E2,0x00E3,0x0000 }, - { 0x00E1,0x00E1,0x00E3,0x0000 }, }, /* #4 */ - /*expect*/ { 0,0,0, -1, }, - }, - { /*input.*/ { { 0x00E1,0x0042,0x00E3,0x0000 }, - { 0x00E1,0x0061,0x00E3,0x0000 }, }, /* #5 */ - /*expect*/ { 0,0,0, +1, }, - }, - { /*input.*/ { { 0x00E1,0x0061,0x00E3,0x0000 }, - { 0x00E1,0x0042,0x00E3,0x0000 }, }, /* #6 */ - /*expect*/ { 0,0,0, -1, }, - }, - { /*input.*/ { { 0x00E1,0x00E2,0x0000 }, - { 0x00E1,0x00E2,0x00E9,0x0000 }, }, /* #7 */ - /*expect*/ { 0,0,0, -1, }, - }, - { /*input.*/ { { 0x00E1,0x00E2,0x00E9,0x0000 }, - { 0x00E1,0x00E2,0x0000 }, }, /* #8 */ - /*expect*/ { 0,0,0, +1, }, - }, - { /*input.*/ { { 0x00E1,0x0092,0x00E9,0x0000 }, - { 0x00E1,0x008E,0x00E9,0x0000 }, }, /* #9 */ - /*expect*/ { 0,0,0, +1, }, - }, - { /*input.*/ { { 0x00E1,0x008E,0x00E9,0x0000 }, - { 0x00E1,0x0092,0x00E9,0x0000 }, }, /* #10 */ - /*expect*/ { 0,0,0, -1, }, - }, - { .is_last = 1 } - } - }, - { { Twcscoll, TST_LOC_en }, - { - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0042,0x0043,0x0000 }, }, /* #1 */ - /*expect*/ { 0,1,0, 0, }, - }, - { /*input.*/ { { 0x0000,0x0041,0x0043,0x0000 }, - { 0x0000,0x0042,0x0043,0x0000 }, }, /* #2 */ - /*expect*/ { 0,1,0, 0, }, - }, - { /*input.*/ { { 0x0041,0x0041,0x0043,0x0000 }, - { 0x0000,0x0042,0x0043,0x0000 }, }, /* #3 */ - /*expect*/ { 0,0,0, +1, }, - }, - { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, - { 0x0041,0x0041,0x0043,0x0000 }, }, /* #4 */ - /*expect*/ { 0,0,0, -1, }, - }, -#ifdef SHOJI_IS_RIGHT - /* */ /* assume ascii */ - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0061,0x0043,0x0000 }, }, /* #5 */ - /*expect*/ { 0,0,0, -1, }, - }, - /* */ /* assume ascii */ - { /*input.*/ { { 0x0041,0x0061,0x0043,0x0000 }, - { 0x0041,0x0042,0x0043,0x0000 }, }, /* #6 */ - /*expect*/ { 0,0,0, +1, }, - }, -#else - /* XXX Correct order is lowercase before uppercase. */ - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0061,0x0043,0x0000 }, }, /* #5 */ - /*expect*/ { 0,0,0, +1, }, - }, - { /*input.*/ { { 0x0041,0x0061,0x0043,0x0000 }, - { 0x0041,0x0042,0x0043,0x0000 }, }, /* #6 */ - /*expect*/ { 0,0,0, -1, }, - }, -#endif - { /*input.*/ { { 0x0041,0x0042,0x0000 }, - { 0x0041,0x0042,0x0049,0x0000 }, }, /* #7 */ - /*expect*/ { 0,0,0, -1, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0049,0x0000 }, - { 0x0041,0x0042,0x0000 }, }, /* #8 */ - /*expect*/ { 0,0,0, +1, }, - }, -#ifdef SHOJI_IS_RIGHT - { /*input.*/ { { 0x0041,0x0092,0x0049,0x0000 }, - { 0x0041,0x008E,0x0049,0x0000 }, }, /* #9 */ - /*expect*/ { 0,0,0, +1, }, - }, - { /*input.*/ { { 0x0041,0x008E,0x0049,0x0000 }, - { 0x0041,0x0092,0x0049,0x0000 }, }, /* #10 */ - /*expect*/ { 0,0,0, -1, }, - }, -#else - /* Do not assume position of character out of range. */ - { /*input.*/ { { 0x0041,0x0092,0x0049,0x0000 }, - { 0x0041,0x008E,0x0049,0x0000 }, }, /* #9 */ - /*expect*/ { 0,0,0, 0, }, - }, - { /*input.*/ { { 0x0041,0x008E,0x0049,0x0000 }, - { 0x0041,0x0092,0x0049,0x0000 }, }, /* #10 */ - /*expect*/ { 0,0,0, 0, }, - }, -#endif - { .is_last = 1 } - } - }, -#if 0 - { { Twcscoll, TST_LOC_eucJP }, -#else - { { Twcscoll, TST_LOC_ja_UTF8 }, -#endif - { - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3041,0x3042,0x3043,0x0000 }, }, /* #1 */ - /*expect*/ { 0,1,0, 0, }, - }, - { /*input.*/ { { 0x0000,0x3041,0x3043,0x0000 }, - { 0x0000,0x3042,0x3043,0x0000 }, }, /* #2 */ - /*expect*/ { 0,1,0, 0, }, - }, - { /*input.*/ { { 0x3041,0x3041,0x3043,0x0000 }, - { 0x0000,0x3042,0x3043,0x0000 }, }, /* #3 */ - /*expect*/ { 0,0,0, +1, }, - }, - { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, - { 0x3041,0x3041,0x3043,0x0000 }, }, /* #4 */ - /*expect*/ { 0,0,0, -1, }, - }, - { /*input.*/ { { 0x3041,0x0042,0x3043,0x0000 }, - { 0x3041,0x0061,0x3043,0x0000 }, }, /* #5 */ - /*expect*/ { 0,0,0, -1, }, - }, - { /*input.*/ { { 0x3041,0x0061,0x3043,0x0000 }, - { 0x3041,0x0042,0x3043,0x0000 }, }, /* #6 */ - /*expect*/ { 0,0,0, +1, }, - }, - { /*input.*/ { { 0x3041,0x3042,0xFF71,0x0000 }, - { 0x3041,0x3042,0x30A2,0x0000 }, }, /* #7 */ - /*expect*/ { 0,0,0, -1, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x30A2,0x0000 }, - { 0x3041,0x3042,0xFF71,0x0000 }, }, /* #8 */ - /*expect*/ { 0,0,0, +1, }, - }, - { /*input.*/ { { 0x30FF,0x3092,0x3049,0x0000 }, - { 0x3041,0x308E,0x3049,0x0000 }, }, /* #9 */ - /*expect*/ { 0,0,0, -1, }, - }, - { /*input.*/ { { 0x3041,0x308E,0x3049,0x0000 }, - { 0x30FF,0x3092,0x3049,0x0000 }, }, /* #10 */ - /*expect*/ { 0,0,0, +1, }, - }, - { .is_last = 1 } - } - }, - { { Twcscoll, TST_LOC_end } } -}; diff --git a/test/locale-mbwc/dat_wcscpy.c b/test/locale-mbwc/dat_wcscpy.c deleted file mode 100644 index b376bfc5c..000000000 --- a/test/locale-mbwc/dat_wcscpy.c +++ /dev/null @@ -1,44 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wcscpy.c - * - * WCSCPY: wchar_t *wcscpy (wchar_t *ws1, const wchar_t *ws2); - */ - -TST_WCSCPY tst_wcscpy_loc [] = { - - { { Twcscpy, TST_LOC_de }, - { - { { { 0x00F1,0x00F2,0x00F3,0x0000 }, }, /* 1 */ - { 0,0,0, { 0x00F1,0x00F2,0x00F3,0x0000, } }, }, - { { { 0x0000,0x00F2,0x00F3,0x0000 }, }, /* 2 */ - { 0,0,0, { 0x0000, } }, }, - { .is_last = 1 } - } - }, - { { Twcscpy, TST_LOC_enUS }, - { - { { { 0x0041,0x0082,0x0043,0x0000 }, }, /* 1 */ - { 0,0,0, { 0x0041,0x0082,0x0043,0x0000, } }, }, - { { { 0x0000,0x0082,0x0043,0x0000 }, }, /* 2 */ - { 0,0,0, { 0x0000, } }, }, - { .is_last = 1 } - } - }, -#if 0 - { { Twcscpy, TST_LOC_eucJP }, -#else - { { Twcscpy, TST_LOC_ja_UTF8 }, -#endif - { - { { { 0x3041,0x0092,0x3043,0x0000 }, }, /* 1 */ - { 0,0,0, { 0x3041,0x0092,0x3043,0x0000, } }, }, - { { { 0x0000,0x0092,0x3043,0x0000 }, }, /* 2 */ - { 0,0,0, { 0x0000, } }, }, - { .is_last = 1 } - } - }, - { { Twcscpy, TST_LOC_end }} - -}; diff --git a/test/locale-mbwc/dat_wcscspn.c b/test/locale-mbwc/dat_wcscspn.c deleted file mode 100644 index f6eb0c3bb..000000000 --- a/test/locale-mbwc/dat_wcscspn.c +++ /dev/null @@ -1,164 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wcscspn.c - * - * WCSCSPN: size_t wcscspn (const wchar_t *ws1, const wchar_t *ws2); - */ - - -TST_WCSCSPN tst_wcscspn_loc [] = { - - { { Twcscspn, TST_LOC_de }, - { - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x0000 }, }, /* #1 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D2,0x0000 }, }, /* #2 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D3,0x0000 }, }, /* #3 */ - /*expect*/ { 0,1,2, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D2,0x00D3,0x0000 }, }, /* #4 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D2,0x00D3,0x00D4,0x0000 }, }, /* #5 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D3,0x00D4,0x00D5,0x0000 }, }, /* #6 */ - /*expect*/ { 0,1,2, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x00D2,0x00D3,0x0000 }, }, /* #7 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, - { 0x00D2,0x000 }, }, /* #8 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x0000,0x00D2,0x00D3,0x0000 }, }, /* #9 */ - /*expect*/ { 0,1,3, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x0000 }, - { 0x00D1,0x00D2,0x00D3,0x0000 }, }, /* #10 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x0000 }, - { 0x00D1,0x00D3,0x00D4,0x0000 }, }, /* #11 */ - /*expect*/ { 0,1,0, }, - }, - { .is_last = 1 } - } - }, - { { Twcscspn, TST_LOC_enUS }, - { - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0000 }, }, /* #1 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0042,0x0000 }, }, /* #2 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0043,0x0000 }, }, /* #3 */ - /*expect*/ { 0,1,2, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0042,0x0043,0x0000 }, }, /* #4 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0042,0x0043,0x0044,0x0000 }, }, /* #5 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0043,0x0044,0x0045,0x0000 }, }, /* #6 */ - /*expect*/ { 0,1,2, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0042,0x0043,0x0000 }, }, /* #7 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, - { 0x0042,0x000 }, }, /* #8 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0000,0x0042,0x0043,0x0000 }, }, /* #9 */ - /*expect*/ { 0,1,3, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0000 }, - { 0x0041,0x0042,0x0043,0x0000 }, }, /* #10 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0000 }, - { 0x0041,0x0043,0x0044,0x0000 }, }, /* #11 */ - /*expect*/ { 0,1,0, }, - }, - { .is_last = 1 } - } - }, -#if 0 - { { Twcscspn, TST_LOC_eucJP }, -#else - { { Twcscspn, TST_LOC_ja_UTF8 }, -#endif - { - { /*input.*/ { { 0x3041,0x3042,0x0043,0x0000 }, - { 0x3041,0x0000 }, }, /* #1 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x0043,0x0000 }, - { 0x3042,0x0000 }, }, /* #2 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3043,0x0000 }, }, /* #3 */ - /*expect*/ { 0,1,2, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3042,0x3043,0x0000 }, }, /* #4 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3042,0x3043,0x3044,0x0000 }, }, /* #5 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3043,0x3044,0x3045,0x0000 }, }, /* #6 */ - /*expect*/ { 0,1,2, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3041,0x3042,0x3043,0x0000 }, }, /* #7 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, - { 0x3042,0x0000 }, }, /* #8 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x0000,0x3042,0x3043,0x0000 }, }, /* #9 */ - /*expect*/ { 0,1,3, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x0000 }, - { 0x3041,0x3042,0x3043,0x0000 }, }, /* #10 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x0000 }, - { 0x3041,0x3043,0x3044,0x0000 }, }, /* #11 */ - /*expect*/ { 0,1,0, }, - }, - { .is_last = 1 } - } - }, - { { Twcscspn, TST_LOC_end }} -}; diff --git a/test/locale-mbwc/dat_wcslen.c b/test/locale-mbwc/dat_wcslen.c deleted file mode 100644 index 7bb2c892b..000000000 --- a/test/locale-mbwc/dat_wcslen.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY - * - * FILE: dat_wcslen.c - * - * WCSLEN: size_t wcslen (const wchar_t *ws); - */ - - -/* - * NOTE: - * - * a header in each expected data: - * - * int err_val; ... expected value for errno - * ret_flg; ... set ret_flg=1 to compare an expected - * value with an actual value - * ret_val; ... expected value for return - */ - - -TST_WCSLEN tst_wcslen_loc [] = { - - { { Twcslen, TST_LOC_de }, - { - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 } }, /* #01 */ - /*expect*/ { 0,1,3, }, - }, - { /*input.*/ { { 0x0000 } }, /* #02 */ - /*expect*/ { 0,1,0, }, - }, - { .is_last = 1 } - } - }, - { { Twcslen, TST_LOC_enUS }, - { - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 } }, /* #01 */ - /*expect*/ { 0,1,3, }, - }, - { /*input.*/ { { 0x0000 } }, /* #02 */ - /*expect*/ { 0,1,0, }, - }, - { .is_last = 1 } - } - }, -#if 0 - { { Twcslen, TST_LOC_eucJP }, -#else - { { Twcslen, TST_LOC_ja_UTF8 }, -#endif - { - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 } }, /* #01 */ - /*expect*/ { 0,1,3, }, - }, - { /*input.*/ { { 0x0000 } }, /* #02 */ - /*expect*/ { 0,1,0, }, - }, - { .is_last = 1 } - } - }, - { { Twcslen, TST_LOC_end }} -}; diff --git a/test/locale-mbwc/dat_wcsncat.c b/test/locale-mbwc/dat_wcsncat.c deleted file mode 100644 index 9d1e46b99..000000000 --- a/test/locale-mbwc/dat_wcsncat.c +++ /dev/null @@ -1,158 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wcsncat.c - * - * WCSNCAT: wchar_t *wcsncat (wchar_t *ws1, wchar_t *ws2, size_t n); - */ - - -/* - * Note: - * A terminating null wide chararacter is always appended to - * the result: ws1. - * - */ - - -TST_WCSNCAT tst_wcsncat_loc [] = { - { - {Twcsncat, TST_LOC_de}, - { - /* 1 */ - { - /* Input: */ - {{ 0x00D1,0x00D2,0x0000 }, - { 0x00D3,0x00D4,0x0000 }, 3 }, - /* Expect: */ - { 0, 0, 0, - { 0x00D1,0x00D2,0x00D3,0x00D4,0x0000 } }, - }, - /* 2 */ - {{{ 0x00D1,0x00D2,0x0000 }, - { 0x00D3,0x00D4,0x0000 }, 2 }, - { 0, 0, 0, - { 0x00D1,0x00D2,0x00D3,0x00D4,0x0000 } }, - }, - /* 3 */ - {{{ 0x00E1,0x00E2,0x0000 }, - { 0x00E3,0x00E4,0x0000 }, 1 }, - { 0, 0, 0, - { 0x00E1,0x00E2,0x00E3,0x0000 } }, - }, - /* 4 */ - {{{ 0x00E1,0x00E2,0x0000 }, - { 0x00E3,0x00E4,0x0000 }, 0 }, - { 0, 0, 0, - { 0x00E1,0x00E2,0x0000 } }, - }, - /* 5 */ - {{{ 0x0000 }, - { 0x00D3,0x00D4,0x0000 }, 3 }, - { 0, 0, 0, - { 0x00D3,0x00D4,0x0000 } }, - }, - /* 6 */ - {{{ 0x00E1,0x00E2,0x0000 }, - { 0x0000 }, 3 }, - { 0, 0, 0, - { 0x00E1,0x00E2,0x0000 } }, - }, - {.is_last = 1} - } - }, - { - {Twcsncat, TST_LOC_enUS}, - { - /* 1 */ - { - /* Input: */ - {{ 0x0041,0x0042,0x0000 }, - { 0x0043,0x0044,0x0000 }, 3 }, - /* Expect: */ - { 0, 0, 0, - { 0x0041,0x0042,0x0043,0x0044,0x0000 } }, - }, - /* 2 */ - {{{ 0x0041,0x0042,0x0000 }, - { 0x0043,0x0044,0x0000 }, 2 }, - { 0, 0, 0, - { 0x0041,0x0042,0x0043,0x0044,0x0000 } }, - }, - /* 3 */ - {{{ 0x0051,0x0052,0x0000 }, - { 0x0053,0x0054,0x0000 }, 1 }, - { 0, 0, 0, - { 0x0051,0x0052,0x0053,0x0000 } }, - }, - /* 4 */ - {{{ 0x0051,0x0052,0x0000 }, - { 0x0053,0x0054,0x0000 }, 0 }, - { 0, 0, 0, - { 0x0051,0x0052,0x0000 } }, - }, - /* 5 */ - {{{ 0x0000 }, - { 0x0043,0x0044,0x0000 }, 3 }, - { 0, 0, 0, - { 0x0043,0x0044,0x0000 } }, - }, - /* 6 */ - {{{ 0x0051,0x0052,0x0000 }, - { 0x0000 }, 3 }, - { 0, 0, 0, - { 0x0051,0x0052,0x0000 } }, - }, - {.is_last = 1} - } - }, - { -#if 0 - {Twcsncat, TST_LOC_eucJP}, -#else - {Twcsncat, TST_LOC_ja_UTF8}, -#endif - { - /* 1 */ - {{{ 0x3041,0x3042,0x0000 }, - { 0x3043,0x3044,0x0000 }, 3 }, - { 0, 0, 0, - { 0x3041,0x3042,0x3043,0x3044,0x0000 } }, - }, - /* 2 */ - {{{ 0x30A2,0x30A3,0x0000 }, - { 0xFF71,0xFF72,0x0000 }, 2 }, - { 0, 0, 0, - { 0x30A2,0x30A3,0xFF71,0xFF72,0x0000 } }, - }, - /* 3 */ - {{{ 0x3051,0x3052,0x0000 }, - { 0x3053,0x3054,0x0000 }, 1 }, - { 0, 0, 0, - { 0x3051,0x3052,0x3053,0x0000 } }, - }, - /* 4 */ - {{{ 0x3051,0x3052,0x0000 }, - { 0x3053,0x3054,0x0000 }, 0 }, - { 0, 0, 0, - { 0x3051,0x3052,0x0000 } }, - }, - /* 5 */ - {{{ 0x0000 }, - { 0x3043,0x3044,0x0000 }, 3 }, - { 0, 0, 0, - { 0x3043,0x3044,0x0000 } }, - }, - /* 6 */ - {{{ 0x3051,0x3052,0x0000 }, - { 0x0000 }, 3 }, - { 0, 0, 0, - { 0x3051,0x3052,0x0000 } }, - }, - {.is_last = 1} - } - }, - { - {Twcsncat, TST_LOC_end} - } -}; diff --git a/test/locale-mbwc/dat_wcsncmp.c b/test/locale-mbwc/dat_wcsncmp.c deleted file mode 100644 index 5c5963167..000000000 --- a/test/locale-mbwc/dat_wcsncmp.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wcsncmp.c - * - * WCSNCMP: int wcsncmp (const wchar_t *ws1, const wchar_t *ws2, - * size_t n); - */ - -TST_WCSNCMP tst_wcsncmp_loc [] = { - { - { Twcsncmp, TST_LOC_de }, - { - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x00D2,0x00D3,0x0000 }, 4 }, /* #01 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x00D2,0x00D3,0x0000 }, 3 }, /* #02 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D1,0x0000 }, - { 0x00D1,0x00D2,0x00D3,0x0000 }, 2 }, /* #03 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D0,0x00D2,0x00D3,0x0000 }, 0 }, /* #04 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, - { 0x0000,0x00D2,0x00D1,0x0000 }, 3 }, /* #05 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x0000,0x00D2,0x00D3,0x0000 }, 3 }, /* #06 */ - /*expect*/ { 0,1,0x00D1, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x00D2,0x00D9,0x0000 }, 2 }, /* #07 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x00D2,0x00D9,0x0000 }, 3 }, /* #08 */ - /*expect*/ { 0,1,-0x0006, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x00D2,0x0000 }, 4 }, /* #09 */ - /*expect*/ { 0,1,0x00D3, }, - }, - { .is_last = 1 } - } - }, - { - { Twcsncmp, TST_LOC_enUS }, - { - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0042,0x0043,0x0000 }, 4 }, /* #01 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0042,0x0043,0x0000 }, 3 }, /* #02 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0041,0x0000 }, - { 0x0041,0x0042,0x0043,0x0000 }, 2 }, /* #03 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0040,0x0042,0x0043,0x0000 }, 0 }, /* #04 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, - { 0x0000,0x0042,0x0041,0x0000 }, 3 }, /* #05 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0000,0x0042,0x0043,0x0000 }, 3 }, /* #06 */ - /*expect*/ { 0,1,0x0041, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0042,0x0049,0x0000 }, 2 }, /* #07 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0042,0x0049,0x0000 }, 3 }, /* #08 */ - /*expect*/ { 0,1,-0x0006, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0042,0x0000 }, 4 }, /* #09 */ - /*expect*/ { 0,1,0x0043, }, - }, - { .is_last = 1 } - } - }, - { -#if 0 - { Twcsncmp, TST_LOC_eucJP }, -#else - { Twcsncmp, TST_LOC_ja_UTF8 }, -#endif - { - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3041,0x3042,0x3043,0x0000 }, 4 }, /* #01 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3041,0x3042,0x3043,0x0000 }, 3 }, /* #02 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3041,0x0000 }, - { 0x3041,0x3042,0x3043,0x0000 }, 2 }, /* #03 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3040,0x3042,0x3043,0x0000 }, 0 }, /* #04 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, - { 0x0000,0x3042,0x3041,0x0000 }, 3 }, /* #05 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x0000,0x3042,0x3043,0x0000 }, 3 }, /* #06 */ - /*expect*/ { 0,1,0x3041, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3041,0x3042,0x3049,0x0000 }, 2 }, /* #07 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3041,0x3042,0x3049,0x0000 }, 3 }, /* #08 */ - /*expect*/ { 0,1,-0x0006, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3041,0x3042,0x0000 }, 4 }, /* #09 */ - /*expect*/ { 0,1,0x3043, }, - }, - { .is_last = 1 } - } - }, - { - { Twcsncmp, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_wcsncpy.c b/test/locale-mbwc/dat_wcsncpy.c deleted file mode 100644 index 7a657838b..000000000 --- a/test/locale-mbwc/dat_wcsncpy.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wcsncpy.c - * - * WCSNCPY: wchar_t *wcsncpy (wchar_t *ws1, const wchar_t *ws2, - * size_t n); - */ - - -/* Note: - * - * An initial value of ws1 in the test program is defined as: - * - * #define WCSNUM_NCPY 7 - * wchar_t ws1 [WCSSIZE] = { 0x9999, 0x9999, 0x9999, 0x9999, - * 0x9999, 0x9999, 0x0000 }; - * */ - - -TST_WCSNCPY tst_wcsncpy_loc [] = { - { - {Twcsncpy, TST_LOC_de}, - { - /* 1 */ - {{ { 0x00D1,0x00D2,0x00D3,0x0000 }, 6 }, - { 0,0,0, { 0x00D1,0x00D2,0x00D3,0x0000,0x0000,0x0000,0x0000 } }, - }, - /* 2 */ - {{ { 0x00D1,0x00D2,0x00D3,0x0000 }, 5 }, - { 0,0,0, { 0x00D1,0x00D2,0x00D3,0x0000,0x0000,0x9999,0x0000 } }, - }, - /* 3 */ - {{ { 0x00D1,0x00D2,0x00D3,0x0000 }, 3 }, - { 0,0,0, { 0x00D1,0x00D2,0x00D3,0x9999,0x9999,0x9999,0x0000 } }, - }, - /* 4 */ - {{ { 0x00D1,0x00D2,0x00D3,0x0000 }, 2 }, - { 0,0,0, { 0x00D1,0x00D2,0x9999,0x9999,0x9999,0x9999,0x0000 } }, - }, - /* 5 */ - {{ { 0x00D1,0x00D2,0x00D3,0x0000 }, 0 }, - { 0,0,0, { 0x9999,0x9999,0x9999,0x9999,0x9999,0x9999,0x0000 } }, - }, - /* 6 */ - {{ { 0x0000,0x00D2,0x00D3,0x0000 }, 3 }, - { 0,0,0, { 0x0000,0x0000,0x0000,0x9999,0x9999,0x9999,0x0000 } }, - }, - {.is_last = 1} - } - }, - { - {Twcsncpy, TST_LOC_enUS}, - { - /* 1 */ - {{ { 0x0041,0x0042,0x0043,0x0000 }, 6 }, - { 0,0,0, { 0x0041,0x0042,0x0043,0x0000,0x0000,0x0000,0x0000 } }, - }, - /* 2 */ - {{ { 0x0041,0x0042,0x0043,0x0000 }, 5 }, - { 0,0,0, { 0x0041,0x0042,0x0043,0x0000,0x0000,0x9999,0x0000 } }, - }, - /* 3 */ - {{ { 0x0041,0x0042,0x0043,0x0000 }, 3 }, - { 0,0,0, { 0x0041,0x0042,0x0043,0x9999,0x9999,0x9999,0x0000 } }, - }, - /* 4 */ - {{ { 0x0041,0x0042,0x0043,0x0000 }, 2 }, - { 0,0,0, { 0x0041,0x0042,0x9999,0x9999,0x9999,0x9999,0x0000 } }, - }, - /* 5 */ - {{ { 0x0041,0x0042,0x0043,0x0000 }, 0 }, - { 0,0,0, { 0x9999,0x9999,0x9999,0x9999,0x9999,0x9999,0x0000 } }, - }, - /* 6 */ - {{ { 0x0000,0x0042,0x0043,0x0000 }, 3 }, - { 0,0,0, { 0x0000,0x0000,0x0000,0x9999,0x9999,0x9999,0x0000 } }, - }, - {.is_last = 1} - } - }, - { -#if 0 - {Twcsncpy, TST_LOC_eucJP}, -#else - {Twcsncpy, TST_LOC_ja_UTF8}, -#endif - { - /* 1 */ - {{ { 0x3041,0x3042,0x3043,0x0000 }, 6 }, - { 0,0,0, { 0x3041,0x3042,0x3043,0x0000,0x0000,0x0000,0x0000 } }, - }, - /* 2 */ - {{ { 0x3041,0x3042,0x3043,0x0000 }, 5 }, - { 0,0,0, { 0x3041,0x3042,0x3043,0x0000,0x0000,0x9999,0x0000 } }, - }, - /* 3 */ - {{ { 0x3041,0x3042,0x3043,0x0000 }, 3 }, - { 0,0,0, { 0x3041,0x3042,0x3043,0x9999,0x9999,0x9999,0x0000 } }, - }, - /* 4 */ - {{ { 0x3041,0x3042,0x3043,0x0000 }, 2 }, - { 0,0,0, { 0x3041,0x3042,0x9999,0x9999,0x9999,0x9999,0x0000 } }, - }, - /* 5 */ - {{ { 0x3041,0x3042,0x3043,0x0000 }, 0 }, - { 0,0,0, { 0x9999,0x9999,0x9999,0x9999,0x9999,0x9999,0x0000 } }, - }, - /* 6 */ - {{ { 0x0000,0x3042,0x3043,0x0000 }, 3 }, - { 0,0,0, { 0x0000,0x0000,0x0000,0x9999,0x9999,0x9999,0x0000 } }, - }, - {.is_last = 1} - } - }, - { - {Twcsncpy, TST_LOC_end} - } -}; diff --git a/test/locale-mbwc/dat_wcspbrk.c b/test/locale-mbwc/dat_wcspbrk.c deleted file mode 100644 index 471515eb7..000000000 --- a/test/locale-mbwc/dat_wcspbrk.c +++ /dev/null @@ -1,176 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wcspbrk.c - * - * WCSSTR: wchar_t *wcspbrk (const wchar_t *ws1, const wchar_t *ws2); - */ - - -/* - * NOTE: - * This is not a locale sensitive function. - * So those data in each locale doesn't make sense - * ... (redundant test cases) - */ - - -TST_WCSPBRK tst_wcspbrk_loc [] = { - { - { Twcspbrk, TST_LOC_de }, - { - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x0000 }, }, /* #01 */ - /*expect*/ { 0,0,0, 0x00D1 }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D2,0x0000 }, }, /* #02 */ - /*expect*/ { 0,0,0, 0x00D2 }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D3,0x0000 }, }, /* #03 */ - /*expect*/ { 0,0,0, 0x00D3 }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x00D2,0x0000 }, }, /* #04 */ - /*expect*/ { 0,0,0, 0x00D1 }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D2,0x00D3,0x0000 }, }, /* #05 */ - /*expect*/ { 0,0,0, 0x00D2 }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x00D2,0x00D3,0x0000 }, }, /* #06 */ - /*expect*/ { 0,0,0, 0x00D1 }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D0,0x00D4,0x00D5,0x0000 }, }, /* #07 */ - /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D5,0x00D0,0x00D4,0x0000 }, }, /* #08 */ - /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x0000 }, }, /* #09 */ - /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, - }, - { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x0000 }, }, /* #10 */ - /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, - }, - { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, - { 0x0000 }, }, /* #11 */ - /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, - }, - { .is_last = 1 } - } - }, - { - { Twcspbrk, TST_LOC_enUS }, - { - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0000 }, }, /* #01 */ - /*expect*/ { 0,0,0, 0x0041 }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0042,0x0000 }, }, /* #02 */ - /*expect*/ { 0,0,0, 0x0042 }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0043,0x0000 }, }, /* #03 */ - /*expect*/ { 0,0,0, 0x0043 }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0042,0x0000 }, }, /* #04 */ - /*expect*/ { 0,0,0, 0x0041 }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0042,0x0043,0x0000 }, }, /* #05 */ - /*expect*/ { 0,0,0, 0x0042 }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0042,0x0043,0x0000 }, }, /* #06 */ - /*expect*/ { 0,0,0, 0x0041 }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0040,0x0044,0x0045,0x0000 }, }, /* #07 */ - /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0045,0x0040,0x0044,0x0000 }, }, /* #08 */ - /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0000 }, }, /* #09 */ - /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, - }, - { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, - { 0x0041,0x0000 }, }, /* #10 */ - /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, - }, - { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, - { 0x0000 }, }, /* #11 */ - /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, - }, - { .is_last = 1 } - } - }, - { -#if 0 - { Twcspbrk, TST_LOC_eucJP }, -#else - { Twcspbrk, TST_LOC_ja_UTF8 }, -#endif - { - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3041,0x0000 }, }, /* #01 */ - /*expect*/ { 0,0,0, 0x3041 }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3042,0x0000 }, }, /* #02 */ - /*expect*/ { 0,0,0, 0x3042 }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3043,0x0000 }, }, /* #03 */ - /*expect*/ { 0,0,0, 0x3043 }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3041,0x3042,0x0000 }, }, /* #04 */ - /*expect*/ { 0,0,0, 0x3041 }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3042,0x3043,0x0000 }, }, /* #05 */ - /*expect*/ { 0,0,0, 0x3042 }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3041,0x3042,0x3043,0x0000 }, }, /* #06 */ - /*expect*/ { 0,0,0, 0x3041 }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3042,0x3043,0x3044,0x0000 }, }, /* #07 */ - /*expect*/ { 0,0,0, 0x3042 }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3040,0x3041,0x3042,0x0000 }, }, /* #08 */ - /*expect*/ { 0,0,0, 0x3041 }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x0000 }, }, /* #09 */ - /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, - }, - { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, - { 0x3041,0x0000 }, }, /* #10 */ - /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, - }, - { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, - { 0x0000 }, }, /* #11 */ - /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, - }, - { .is_last = 1 } - } - }, - { - { Twcspbrk, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_wcsrtombs.c b/test/locale-mbwc/dat_wcsrtombs.c deleted file mode 100644 index f8adc6cfd..000000000 --- a/test/locale-mbwc/dat_wcsrtombs.c +++ /dev/null @@ -1,272 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wcsrtombs.c - * - * WCSTOMBS: size_t wcsrtombs (char *s, const wchar_t **ws, - * size_t n, mbstate *ps) - */ - - -/* - * CAUTION: - * Do not use a value 0x01 for string data. The test program - * uses it. - * - */ - - -TST_WCSRTOMBS tst_wcsrtombs_loc [] = { - { - { Twcsrtombs, TST_LOC_de }, - { - /* #01 : Any chars including a null char should not be stored in s. */ - { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 0, 0, 0}, - /*expect*/ { 0,1,0, "" }, - }, - /* #02 : Only one chars should be stored in s. No null termination. */ - { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 1, 0, 0 }, - /*expect*/ { 0,1,1, "Ä" }, - }, - /* #03 : Only two chars should be stored in s. No null termination. */ - { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 2, 0, 0 }, - /*expect*/ { 0,1,2, "ÄÖ" }, - }, - /* #04 : Only three chars should be stored in s. No null - termination. */ - { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 3, 0, 0 }, - /*expect*/ { 0,1,3, "ÄÖÜ" }, - }, - /* #05 : Only three chars should be stored in s with a null - termination. */ - { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 4, 0, 0 }, - /*expect*/ { 0,1,3, "ÄÖÜ" }, - }, - /* #06 : Only three chars should be stored in s with a null - termination. */ - { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 5, 0, 0 }, - /*expect*/ { 0,1,3, "ÄÖÜ" }, - }, - /* #07 : Invalid mb sequence. No chars should be stored in s. */ - { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2, 0, 0 }, - /*expect*/ { EILSEQ,1,(size_t)-1, "" }, - }, - /* #08 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 0, 0, 0 }, - /*expect*/ { 0,1,3, "" }, - }, - /* #09 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 1, 0, 0 }, - /*expect*/ { 0,1,3, "" }, - }, - /* #10 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 5, 0, 0 }, - /*expect*/ { 0,1,3, "" }, - }, - /* #11 : s is a null pointer. No chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5, 0, 0 }, - /*expect*/ { EILSEQ,1,(size_t)-1, "" }, - }, - /* #12 : ws is a null wc string, no chars should be stored in s. */ - { /*input.*/ { 1,1, { 0x0000 }, 5, 0, 0 }, - /*expect*/ { 0,1,0, "" }, - }, - /* #13 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0000 }, 5, 0, 0 }, - /*expect*/ { 0,1,0, "" }, - }, - { .is_last = 1 } - } - }, - { - { Twcsrtombs, TST_LOC_enUS }, - { - /* #01 : Any chars including a null char should not be stored in s. */ - { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 0, 0, 0 }, - /*expect*/ { 0,1,0, "" }, - }, - /* #02 : Only one chars should be stored in s. No null termination. */ - { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 1, 0, 0 }, - /*expect*/ { 0,1,1, "A" }, - }, - /* #03 : Only two chars should be stored in s. No null termination. */ - { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 2, 0, 0 }, - /*expect*/ { 0,1,2, "AB" }, - }, - /* #04 : Only three chars should be stored in s. No null - termination. */ - { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 3, 0, 0 }, - /*expect*/ { 0,1,3, "ABC" }, - }, - /* #05 : Only three chars should be stored in s with a null - termination. */ - { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 4, 0, 0 }, - /*expect*/ { 0,1,3, "ABC" }, - }, - /* #06 : Only three chars should be stored in s with a null - termination. */ - { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 5, 0, 0 }, - /*expect*/ { 0,1,3, "ABC" }, - }, - /* #07 : Invalid mb sequence. No chars should be stored in s. */ - { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2, 0, 0 }, - /*expect*/ { EILSEQ,1,(size_t)-1, "" }, - }, - /* #08 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 0, 0, 0 }, - /*expect*/ { 0,1,3, "" }, - }, - /* #09 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 1, 0, 0 }, - /*expect*/ { 0,1,3, "" }, - }, - /* #10 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 5, 0, 0 }, - /*expect*/ { 0,1,3, "" }, - }, - /* #11 : s is a null pointer. No chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5, 0, 0 }, - /*expect*/ { EILSEQ,1,(size_t)-1, "" }, - }, - /* #12 : ws is a null wc string, no chars should be stored in s. */ - { /*input.*/ { 1,1, { 0x0000 }, 5, 0, 0 }, - /*expect*/ { 0,1,0, "" }, - }, - /* #13 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0000 }, 5, 0, 0 }, - /*expect*/ { 0,1,0, "" }, - }, - { .is_last = 1 } - } - }, -#if 0 - { - { Twcsrtombs, TST_LOC_eucJP }, - { - - /* #01 : Any chars including a null char should not be stored in s. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0, 0, 0 }, - /*expect*/ { 0,1,0, "" }, - }, - /* #02 : Only one chars should be stored in s. No null termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 2, 0, 0 }, - /*expect*/ { 0,1,2, "\244\242" }, - }, - /* #03 : Only two chars should be stored in s. No null termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 4, 0, 0 }, - /*expect*/ { 0,1,4, "\244\242\244\244" }, - }, - /* #04 : Only three chars should be stored in s. No null - termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 6, 0, 0 }, - /*expect*/ { 0,1,6, "\244\242\244\244\216\263" }, - }, - /* #05 : Only three chars should be stored in s with a null - termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 7, 0, 0 }, - /*expect*/ { 0,1,6, "\244\242\244\244\216\263" }, - }, - /* #06 : Only three chars should be stored in s with a null - termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8, 0, 0 }, - /*expect*/ { 0,1,6, "\244\242\244\244\216\263" }, - }, - /* #07 : Invalid mb sequence. No chars should be stored in s. */ - { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2, 0, 0 }, - /*expect*/ { EILSEQ,1,-1, "" }, - }, - /* #08 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0, 0, 0 }, - /*expect*/ { 0,1,6, "" }, - }, - /* #09 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 1, 0, 0 }, - /*expect*/ { 0,1,6, "" }, - }, - /* #10 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8, 0, 0 }, - /*expect*/ { 0,1,6, "" }, - }, - /* #11 : s is a null pointer. No chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5, 0, 0 }, - /*expect*/ { EILSEQ,1,(size_t)-1, "" }, - }, - /* #12 : ws is a null wc string, no chars should be stored in s. */ - { /*input.*/ { 1,1, { 0x0000 }, 5, 0, 0 }, - /*expect*/ { 0,1,0, "" }, - }, - /* #13 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0000 }, 5, 0, 0 }, - /*expect*/ { 0,1,0, "" }, - }, - { .is_last = 1 } - } - }, -#else - { - { Twcsrtombs, TST_LOC_ja_UTF8 }, - { - - /* #01 : Any chars including a null char should not be stored in s. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0, 0, 0 }, - /*expect*/ { 0,1,0, "" }, - }, - /* #02 : Only one chars should be stored in s. No null termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 3, 0, 0 }, - /*expect*/ { 0,1,3, "\343\201\202" }, - }, - /* #03 : Only two chars should be stored in s. No null termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 6, 0, 0 }, - /*expect*/ { 0,1,6, "\343\201\202\343\201\204" }, - }, - /* #04 : Only three chars should be stored in s. No null - termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 9, 0, 0 }, - /*expect*/ { 0,1,9, "\343\201\202\343\201\204\357\275\263" }, - }, - /* #05 : Only three chars should be stored in s with a null - termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 10, 0, 0 }, - /*expect*/ { 0,1,9, "\343\201\202\343\201\204\357\275\263" }, - }, - /* #06 : Only three chars should be stored in s with a null - termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 11, 0, 0 }, - /*expect*/ { 0,1,9, "\343\201\202\343\201\204\357\275\263" }, - }, - /* #07 : Invalid mb sequence. No chars should be stored in s. */ - { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2, 0, 0 }, - /*expect*/ { EILSEQ,1,-1, "" }, - }, - /* #08 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0, 0, 0 }, - /*expect*/ { 0,1,9, "" }, - }, - /* #09 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 1, 0, 0 }, - /*expect*/ { 0,1,9, "" }, - }, - /* #10 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8, 0, 0 }, - /*expect*/ { 0,1,9, "" }, - }, - /* #11 : s is a null pointer. No chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5, 0, 0 }, - /*expect*/ { EILSEQ,1,(size_t)-1, "" }, - }, - /* #12 : ws is a null wc string, no chars should be stored in s. */ - { /*input.*/ { 1,1, { 0x0000 }, 5, 0, 0 }, - /*expect*/ { 0,1,0, "" }, - }, - /* #13 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0000 }, 5, 0, 0 }, - /*expect*/ { 0,1,0, "" }, - }, - { .is_last = 1 } - } - }, -#endif - { - { Twcsrtombs, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_wcsspn.c b/test/locale-mbwc/dat_wcsspn.c deleted file mode 100644 index 06af2d6a9..000000000 --- a/test/locale-mbwc/dat_wcsspn.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wcsspn.c - * - * WCSSPN: size_t wcsspn (const wchar_t *ws1, const wchar_t *ws2); - */ - -TST_WCSSPN tst_wcsspn_loc [] = { - { - { Twcsspn, TST_LOC_de }, - { - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x0000 }, }, /* #01 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D2,0x0000 }, }, /* #02 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D3,0x0000 }, }, /* #03 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D4,0x0000 }, }, /* #04 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D2,0x00D3,0x0000 }, }, /* #05 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D3,0x00D4,0x0000 }, }, /* #06 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x00D2,0x00D3,0x0000 }, }, /* #07 */ - /*expect*/ { 0,1,3, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x0000 }, - { 0x00D1,0x00D2,0x00D3,0x0000 }, }, /* #08 */ - /*expect*/ { 0,1,2, }, - }, - { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, - { 0x00D2,0x0000 }, }, /* #09 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x0000,0x00D2,0x0000 }, }, /* #10 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, - { 0x0000,0x00D2,0x0000 }, }, /* #11 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D2,0x00D1,0x0000 }, }, /* #12 */ - /*expect*/ { 0,1,2, }, - }, - { .is_last = 1 } - } - }, - { - { Twcsspn, TST_LOC_enUS }, - { - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0000 }, }, /* #01 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0042,0x0000 }, }, /* #02 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0043,0x0000 }, }, /* #03 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0044,0x0000 }, }, /* #04 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0042,0x0043,0x0000 }, }, /* #05 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0043,0x0044,0x0000 }, }, /* #06 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0042,0x0043,0x0000 }, }, /* #07 */ - /*expect*/ { 0,1,3, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0000 }, - { 0x0041,0x0042,0x0043,0x0000 }, }, /* #08 */ - /*expect*/ { 0,1,2, }, - }, - { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, - { 0x0042,0x0000 }, }, /* #09 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0000,0x0042,0x0000 }, }, /* #10 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, - { 0x0000,0x0042,0x0000 }, }, /* #11 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0042,0x0041,0x0000 }, }, /* #12 */ - /*expect*/ { 0,1,2, }, - }, - { .is_last = 1 } - } - }, - { -#if 0 - { Twcsspn, TST_LOC_eucJP }, -#else - { Twcsspn, TST_LOC_ja_UTF8 }, -#endif - { - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3041,0x0000 }, }, /* #1 */ - /*expect*/ { 0,1,1, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3042,0x0000 }, }, /* #2 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3043,0x0000 }, }, /* #3 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3044,0x0000 }, }, /* #4 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3042,0x3043,0x0000 }, }, /* #5 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3043,0x3044,0x0000 }, }, /* #6 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3041,0x3042,0x3043,0x0000 }, }, /* #7 */ - /*expect*/ { 0,1,3, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x0000 }, - { 0x3041,0x3042,0x3043,0x0000 }, }, /* #8 */ - /*expect*/ { 0,1,2, }, - }, - { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, - { 0x3042,0x0000 }, }, /* #9 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x0000,0x3042,0x0000 }, }, /* #10 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, - { 0x0000,0x3042,0x0000 }, }, /* #11 */ - /*expect*/ { 0,1,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3042,0x3041,0x0000 }, }, /* #12 */ - /*expect*/ { 0,1,2, }, - }, - { .is_last = 1 } - } - }, - { - { Twcsspn, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_wcsstr.c b/test/locale-mbwc/dat_wcsstr.c deleted file mode 100644 index f999dc5c6..000000000 --- a/test/locale-mbwc/dat_wcsstr.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wcsstr.c - * - * WCSSTR: wchar_t *wcsstr (const wchar_t *ws1, const wchar_t *ws2); - */ - -/* - * NOTE: - * This is not a locale sensitive function. - * So those data in each locale doesn't make sense ... - * (redundant test cases) - */ - - -TST_WCSSTR tst_wcsstr_loc [] = { - { - { Twcsstr, TST_LOC_de }, - { - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x0000 }, }, /* #01 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D2,0x0000 }, }, /* #02 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D3,0x0000 }, }, /* #03 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x00D2,0x0000 }, }, /* #04 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D2,0x00D3,0x0000 }, }, /* #05 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x00D2,0x00D3,0x0000 }, }, /* #06 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D2,0x00D3,0x00D4,0x0000 }, }, /* #07 */ - /*expect*/ { 0,1,(wchar_t *)NULL, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x00D0,0x00D1,0x00D2,0x0000 }, }, /* #08 */ - /*expect*/ { 0,1,(wchar_t *)NULL, }, - }, - { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, - { 0x0000 }, }, /* #09 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, - { 0x00D1,0x0000 }, }, /* #10 */ - /*expect*/ { 0,1,(wchar_t *)NULL, }, - }, - { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, - { 0x0000 }, }, /* #11 */ - /*expect*/ { 0,0,0, }, - }, - { .is_last = 1 } - } - }, - { - { Twcsstr, TST_LOC_enUS }, - { - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0000 }, }, /* #01 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0042,0x0000 }, }, /* #02 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0043,0x0000 }, }, /* #03 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0042,0x0000 }, }, /* #04 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0042,0x0043,0x0000 }, }, /* #05 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0041,0x0042,0x0043,0x0000 }, }, /* #06 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0042,0x0043,0x0044,0x0000 }, }, /* #07 */ - /*expect*/ { 0,1,(wchar_t *)NULL, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0040,0x0041,0x0042,0x0000 }, }, /* #08 */ - /*expect*/ { 0,1,(wchar_t *)NULL, }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, - { 0x0000 }, }, /* #09 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, - { 0x0041,0x0000 }, }, /* #10 */ - /*expect*/ { 0,1,(wchar_t *)NULL, }, - }, - { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, - { 0x0000 }, }, /* #11 */ - /*expect*/ { 0,0,0, }, - }, - { .is_last = 1 } - } - }, - { -#if 0 - { Twcsstr, TST_LOC_eucJP }, -#else - { Twcsstr, TST_LOC_ja_UTF8 }, -#endif - { - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3041,0x0000 }, }, /* #01 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3042,0x0000 }, }, /* #02 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3043,0x0000 }, }, /* #03 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3041,0x3042,0x0000 }, }, /* #04 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3042,0x3043,0x0000 }, }, /* #05 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3041,0x3042,0x3043,0x0000 }, }, /* #06 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3042,0x3043,0x3044,0x0000 }, }, /* #07 */ - /*expect*/ { 0,1,(wchar_t *)NULL, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x3040,0x3041,0x3042,0x0000 }, }, /* #08 */ - /*expect*/ { 0,1,(wchar_t *)NULL, }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, - { 0x0000 }, }, /* #09 */ - /*expect*/ { 0,0,0, }, - }, - { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, - { 0x3041,0x0000 }, }, /* #10 */ - /*expect*/ { 0,1,(wchar_t *)NULL, }, - }, - { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, - { 0x0000 }, }, /* #11 */ - /*expect*/ { 0,0,0, }, - }, - { .is_last = 1 } - } - }, - { - { Twcsstr, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_wcstod.c b/test/locale-mbwc/dat_wcstod.c deleted file mode 100644 index c7b401847..000000000 --- a/test/locale-mbwc/dat_wcstod.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY - * - * FILE: dat_wcstod.c - * - * WCSTOD: double wcstod (const wchar_t *np, wchar_t **endp); - */ - - -/* - * NOTE: - * need more test data! - * - */ - - -TST_WCSTOD tst_wcstod_loc [] = { - { - { Twcstod, TST_LOC_de }, - { - { - /*01*/ - /*I*/ - {{ 0x0030,0x0030,0x0030,0x002C,0x0030,0x0030,0x0030,0x0030,0x0000 }}, - /*E*/ - { 0,1,0.0, 0.0, 0x0000 } - }, - { - /*02*/ - /*I*/ - {{ 0x0031,0x0032,0x0033,0x002C,0x0034,0x0035,0x0036,0x0040,0x0000 }}, - /*E*/ - { 0,1,123.456, 123.456, 0x0040 } - }, - { .is_last = 1 } - } - }, - { - { Twcstod, TST_LOC_enUS }, - { - { - /*01*/ - /*I*/ - {{ 0x0030,0x0030,0x0030,0x002E,0x0030,0x0030,0x0030,0x0030,0x0000 }}, - /*E*/ - { 0,1,0.0, 0.0, 0x0000 } - }, - { - /*02*/ - /*I*/ - {{ 0x0031,0x0032,0x0033,0x002E,0x0034,0x0035,0x0036,0x0040,0x0000 }}, - /*E*/ - { 0,1,123.456, 123.456, 0x0040 } - }, - { .is_last = 1 } - } - }, - { -#if 0 - { Twcstod, TST_LOC_eucJP }, -#else - { Twcstod, TST_LOC_ja_UTF8 }, -#endif - { - { - /*01*/ - /*I*/ - {{ 0x0031,0x0032,0x0033,0x002E,0x0034,0x0035,0x0036,0x0040,0x0000 }}, - /*E*/ - { 0,1,123.456, 123.456, 0x0040 } - }, - { .is_last = 1 } - } - }, - { - { Twcstod, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_wcstok.c b/test/locale-mbwc/dat_wcstok.c deleted file mode 100644 index 559b40187..000000000 --- a/test/locale-mbwc/dat_wcstok.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY - * - * FILE: dat_wcstok.c - * - * WCSTOK: wchar_t *wcstok (wchar_t *ws, const wchar_t *dlm, - * wchar_t **pt); - */ - -/* - * NOTE: - * need more test data! - * locale insensitive function... - */ - - - - -TST_WCSTOK tst_wcstok_loc [] = { - { - { Twcstok, TST_LOC_de }, - { - { - { - { - { 1, { 0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,0x00D8, - 0x00D9,0x0000 }, - { 0x00D3,0x00D2, 0x00D5 } - }, - { 0, { 0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,0x00D8, - 0x00D9,0x0000 }, - { 0x00D3,0x00D2, 0x00D5 } - }, - { 0, { 0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,0x00D8, - 0x00D9,0x0000 }, - { 0x00D3,0x00D2, 0x00D5 } - }, - } - }, - { - { - { 0, 0,0, - { 0x00D1,0x0000 } - }, - { 0, 0,0, - { 0x00D4,0x0000 } - }, - { 0, 0,0, - { 0x00D6,0x00D7,0x00D8,0x00D9,0x0000 } - }, - } - } - }, - { .is_last = 1 } - } - }, - { - { Twcstok, TST_LOC_enUS }, - { - { - { - { - { 1, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048, - 0x0049,0x0000 }, - { 0x0043,0x0042, 0x0045 } - }, - { 0, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048, - 0x0049,0x0000 }, - { 0x0043,0x0042, 0x0045 } - }, - { 0, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048, - 0x0049,0x0000 }, - { 0x0043,0x0042, 0x0045 } - }, - } - }, - { - { - { 0, 0,0, - { 0x0041,0x0000 } - }, - { 0, 0,0, - { 0x0044,0x0000 } - }, - { 0, 0,0, - { 0x0046,0x0047,0x0048,0x0049,0x0000 } - }, - } - } - }, - { .is_last = 1 } - } - }, - { -#if 0 - { Twcstok, TST_LOC_eucJP }, -#else - { Twcstok, TST_LOC_ja_UTF8 }, -#endif - { - { - { - { - { 1, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048, - 0x0049,0x0000 }, - { 0x0043,0x0042, 0x0045 } - }, - { 0, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048, - 0x0049,0x0000 }, - { 0x0043,0x0042, 0x0045 } - }, - { 0, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048, - 0x0049,0x0000 }, - { 0x0043,0x0042, 0x0045 } - }, - } - }, - { - { - { 0, 0,0, - { 0x0041,0x0000 } - }, - { 0, 0,0, - { 0x0044,0x0000 } - }, - { 0, 0,0, - { 0x0046,0x0047,0x0048,0x0049,0x0000 } - }, - } - } - }, - { .is_last = 1 } - } - }, - { - { Twcstok, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_wcstombs.c b/test/locale-mbwc/dat_wcstombs.c deleted file mode 100644 index ffeb0ef80..000000000 --- a/test/locale-mbwc/dat_wcstombs.c +++ /dev/null @@ -1,271 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wcstombs.c - * - * WCSTOMBS: size_t wcstombs (char *s, const wchar_t *ws, size_t n) - */ - - -/* - * CAUTION: - * Do not use a value 0x01 for string data. The test program - * uses it. - * - */ - - -TST_WCSTOMBS tst_wcstombs_loc [] = { - { - { Twcstombs, TST_LOC_de }, - { - /* #01 : Any chars including a null char should not be stored in s. */ - { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 0 }, - /*expect*/ { 0,1,0, "" }, - }, - /* #02 : Only one chars should be stored in s. No null termination. */ - { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 1 }, - /*expect*/ { 0,1,1, "Ä" }, - }, - /* #03 : Only two chars should be stored in s. No null termination. */ - { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 2 }, - /*expect*/ { 0,1,2, "ÄÖ" }, - }, - /* #04 : Only three chars should be stored in s. No null - termination. */ - { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 3 }, - /*expect*/ { 0,1,3, "ÄÖÜ" }, - }, - /* #05 : Only three chars should be stored in s with a null - termination. */ - { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 4 }, - /*expect*/ { 0,1,3, "ÄÖÜ" }, - }, - /* #06 : Only three chars should be stored in s with a null - termination. */ - { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 5 }, - /*expect*/ { 0,1,3, "ÄÖÜ" }, - }, - /* #07 : Invalid mb sequence. No chars should be stored in s. */ - { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2 }, - /*expect*/ { EILSEQ,1,(size_t)-1, "" }, - }, - /* #08 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 0 }, - /*expect*/ { 0,1,3, "" }, - }, - /* #09 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 1 }, - /*expect*/ { 0,1,3, "" }, - }, - /* #10 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 5 }, - /*expect*/ { 0,1,3, "" }, - }, - /* #11 : s is a null pointer. No chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5 }, - /*expect*/ { EILSEQ,1,(size_t)-1, "" }, - }, - /* #12 : ws is a null wc string, no chars should be stored in s. */ - { /*input.*/ { 1,1, { 0x0000 }, 5 }, - /*expect*/ { 0,1,0, "" }, - }, - /* #13 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0000 }, 5 }, - /*expect*/ { 0,1,0, "" }, - }, - { .is_last = 1 } - } - }, - { - { Twcstombs, TST_LOC_enUS }, - { - /* #01 : Any chars including a null char should not be stored in s. */ - { /*input.*/ { 1,1, { 0x00C4,0x0042,0x0043,0x0000 }, 0 }, - /*expect*/ { 0,1,0, "" }, - }, - /* #02 : Only one chars should be stored in s. No null termination. */ - { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 1 }, - /*expect*/ { 0,1,1, "A" }, - }, - /* #03 : Only two chars should be stored in s. No null termination. */ - { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 2 }, - /*expect*/ { 0,1,2, "AB" }, - }, - /* #04 : Only three chars should be stored in s. No null - termination. */ - { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 3 }, - /*expect*/ { 0,1,3, "ABC" }, - }, - /* #05 : Only three chars should be stored in s with a null - termination. */ - { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 4 }, - /*expect*/ { 0,1,3, "ABC" }, - }, - /* #06 : Only three chars should be stored in s with a null - termination. */ - { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 5 }, - /*expect*/ { 0,1,3, "ABC" }, - }, - /* #07 : Invalid mb sequence. No chars should be stored in s. */ - { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2 }, - /*expect*/ { EILSEQ,1,(size_t)-1, "" }, - }, - /* #08 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 0 }, - /*expect*/ { 0,1,3, "" }, - }, - /* #09 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 1 }, - /*expect*/ { 0,1,3, "" }, - }, - /* #10 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 5 }, - /*expect*/ { 0,1,3, "" }, - }, - /* #11 : s is a null pointer. No chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5 }, - /*expect*/ { EILSEQ,1,(size_t)-1, "" }, - }, - /* #12 : ws is a null wc string, no chars should be stored in s. */ - { /*input.*/ { 1,1, { 0x0000 }, 5, }, - /*expect*/ { 0,1,0, "" }, - }, - /* #13 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0000 }, 5 }, - /*expect*/ { 0,1,0, "" }, - }, - { .is_last = 1 } - } - }, -#if 0 - { - { Twcstombs, TST_LOC_eucJP }, - { - - /* #01 : Any chars including a null char should not be stored in s. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0 }, - /*expect*/ { 0,1,0, "" }, - }, - /* #02 : Only one chars should be stored in s. No null termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 2 }, - /*expect*/ { 0,1,2, "\244\242" }, - }, - /* #03 : Only two chars should be stored in s. No null termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 4 }, - /*expect*/ { 0,1,4, "\244\242\244\244" }, - }, - /* #04 : Only three chars should be stored in s. No null - termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 6 }, - /*expect*/ { 0,1,6, "\244\242\244\244\216\263" }, - }, - /* #05 : Only three chars should be stored in s with a null - termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 7 }, - /*expect*/ { 0,1,6, "\244\242\244\244\216\263" }, - }, - /* #06 : Only three chars should be stored in s with a null - termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8 }, - /*expect*/ { 0,1,6, "\244\242\244\244\216\263" }, - }, - /* #07 : Invalid mb sequence. No chars should be stored in s. */ - { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2 }, - /*expect*/ { EILSEQ,1,-1, "" }, - }, - /* #08 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0 }, - /*expect*/ { 0,1,6, "" }, - }, - /* #09 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 1 }, - /*expect*/ { 0,1,6, "" }, - }, - /* #10 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8 }, - /*expect*/ { 0,1,6, "" }, - }, - /* #11 : s is a null pointer. No chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5 }, - /*expect*/ { EILSEQ,1,(size_t)-1, "" }, - }, - /* #12 : ws is a null wc string, no chars should be stored in s. */ - { /*input.*/ { 1,1, { 0x0000 }, 5 }, - /*expect*/ { 0,1,0, "" }, - }, - /* #13 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0000 }, 5 }, - /*expect*/ { 0,1,0, "" }, - }, - { .is_last = 1 } - } - }, -#else - { - { Twcstombs, TST_LOC_ja_UTF8 }, - { - - /* #01 : Any chars including a null char should not be stored in s. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0 }, - /*expect*/ { 0,1,0, "" }, - }, - /* #02 : Only one chars should be stored in s. No null termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 3 }, - /*expect*/ { 0,1,3, "\343\201\202" }, - }, - /* #03 : Only two chars should be stored in s. No null termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 6 }, - /*expect*/ { 0,1,6, "\343\201\202\343\201\204" }, - }, - /* #04 : Only three chars should be stored in s. No null - termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 9 }, - /*expect*/ { 0,1,9, "\343\201\202\343\201\204\357\275\263" }, - }, - /* #05 : Only three chars should be stored in s with a null - termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 10 }, - /*expect*/ { 0,1,9, "\343\201\202\343\201\204\357\275\263" }, - }, - /* #06 : Only three chars should be stored in s with a null - termination. */ - { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 11 }, - /*expect*/ { 0,1,9, "\343\201\202\343\201\204\357\275\263" }, - }, - /* #07 : Invalid mb sequence. No chars should be stored in s. */ - { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2 }, - /*expect*/ { EILSEQ,1,-1, "" }, - }, - /* #08 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0 }, - /*expect*/ { 0,1,9, "" }, - }, - /* #09 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 1 }, - /*expect*/ { 0,1,9, "" }, - }, - /* #10 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8 }, - /*expect*/ { 0,1,9, "" }, - }, - /* #11 : s is a null pointer. No chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5 }, - /*expect*/ { EILSEQ,1,(size_t)-1, "" }, - }, - /* #12 : ws is a null wc string, no chars should be stored in s. */ - { /*input.*/ { 1,1, { 0x0000 }, 5 }, - /*expect*/ { 0,1,0, "" }, - }, - /* #13 : s is a null pointer, no chars should be stored in s. */ - { /*input.*/ { 0,1, { 0x0000 }, 5 }, - /*expect*/ { 0,1,0, "" }, - }, - { .is_last = 1 } - } - }, -#endif - { - { Twcstombs, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_wcswidth.c b/test/locale-mbwc/dat_wcswidth.c deleted file mode 100644 index 6d2f98e17..000000000 --- a/test/locale-mbwc/dat_wcswidth.c +++ /dev/null @@ -1,263 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wcswidth.c - * - * WCSWIDTH: int wcswidth (const wchar_t *ws, size_t n); - */ - -TST_WCSWIDTH tst_wcswidth_loc [] = { - { - { Twcswidth, TST_LOC_de }, - { - { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0 }, /* 01 */ - /*expect*/ { 0,1,0 }, - }, - { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 1 }, /* 02 */ - /*expect*/ { 0,1,1 }, - }, - { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 2 }, /* 03 */ - /*expect*/ { 0,1,2 }, - }, - { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 3 }, /* 04 */ - /*expect*/ { 0,1,3 }, - }, - { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 4 }, /* 05 */ - /*expect*/ { 0,1,3 }, - }, - { /*input.*/ { { 0x0000 }, 1 }, /* 06 */ - /*expect*/ { 0,1,0 }, - }, - { /*input.*/ { { 0x00C1,0x0001,0x0000 }, 2 }, /* 07 */ - /*expect*/ { 0,1,-1 }, - }, - { /*input.*/ { { 0x00C1,0x0001,0x0000 }, 1 }, /* 08 */ - /*expect*/ { 0,1,1 }, - }, - { /*input.*/ { { 0x00C1,0x0001,0x0000 }, 2 }, /* 09 */ - /*expect*/ { 0,1,-1 }, - }, - { /*input.*/ { { 0x00C1,0x0092,0x0000 }, 2 }, /* 10 */ - /*expect*/ { 0,1,-1 }, - }, - { /*input.*/ { { 0x00C1,0x0020,0x0000 }, 2 }, /* 11 */ - /*expect*/ { 0,1,2 }, - }, - { /*input.*/ { { 0x00C1,0x0021,0x0000 }, 2 }, /* 12 */ - /*expect*/ { 0,1,2 }, - }, - { /*input.*/ { { 0x00C1,0x007E,0x0000 }, 2 }, /* 13 */ - /*expect*/ { 0,1,2 }, - }, - { /*input.*/ { { 0x00C1,0x007F,0x0000 }, 2 }, /* 14 */ - /*expect*/ { 0,1,-1 }, - }, - { /*input.*/ { { 0x00C1,0x0080,0x0000 }, 2 }, /* 15 */ - /*expect*/ { 0,1,-1 }, - }, - { /*input.*/ { { 0x00C1,0x00A0,0x0000 }, 2 }, /* 16 */ -#ifdef SHOJI_IS_RIGHT - /*expect*/ { 0,1,-1 }, -#else - /*expect*/ { 0,1,2 }, -#endif - }, - { /*input.*/ { { 0x00C1,0x00A1,0x0000 }, 2 }, /* 17 */ - /*expect*/ { 0,1,2 }, - }, - { /*input.*/ { { 0x00C1,0x00FF,0x0000 }, 2 }, /* 18 */ - /*expect*/ { 0,1,2 }, - }, - { /*input.*/ { { 0x00C1,0x3042,0x0000 }, 2 }, /* 19 */ - /*expect*/ { 0,1,-1 }, - }, - { /*input.*/ { { 0x00C1,0x3044,0x0000 }, 2 }, /* 20 */ - /*expect*/ { 0,1,-1 }, - }, - { .is_last = 1 } - } - }, - { - { Twcswidth, TST_LOC_enUS }, - { - { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 0 }, /* 01 */ - /*expect*/ { 0,1,0 }, - }, - { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 1 }, /* 02 */ - /*expect*/ { 0,1,1 }, - }, - { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 2 }, /* 03 */ - /*expect*/ { 0,1,2 }, - }, -#ifdef SHOJI_IS_RIGHT - { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 3 }, /* 04 */ - /*expect*/ { 0,1,3 }, - }, - { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 4 }, /* 05 */ - /*expect*/ { 0,1,3 }, - }, -#else - { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 3 }, /* 04 */ - /*expect*/ { 0,1,-1 }, - }, - { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 4 }, /* 05 */ - /*expect*/ { 0,1,3 }, - }, -#endif - { /*input.*/ { { 0x0000 }, 1 }, /* 06 */ - /*expect*/ { 0,1,0 }, - }, - { /*input.*/ { { 0x0041,0x0001,0x0000 }, 2 }, /* 07 */ - /*expect*/ { 0,1,-1 }, - }, - { /*input.*/ { { 0x0041,0x0001,0x0000 }, 1 }, /* 08 */ - /*expect*/ { 0,1,1 }, - }, - { /*input.*/ { { 0x0041,0x0001,0x0000 }, 2 }, /* 09 */ - /*expect*/ { 0,1,-1 }, - }, - { /*input.*/ { { 0x0041,0x0092,0x0000 }, 2 }, /* 10 */ - /*expect*/ { 0,1,-1 }, - }, - { /*input.*/ { { 0x0041,0x0020,0x0000 }, 2 }, /* 11 */ - /*expect*/ { 0,1,2 }, - }, - { /*input.*/ { { 0x0041,0x0021,0x0000 }, 2 }, /* 12 */ - /*expect*/ { 0,1,2 }, - }, - { /*input.*/ { { 0x0041,0x007E,0x0000 }, 2 }, /* 13 */ - /*expect*/ { 0,1,2 }, - }, - { /*input.*/ { { 0x0041,0x007F,0x0000 }, 2 }, /* 14 */ - /*expect*/ { 0,1,-1 }, - }, - { /*input.*/ { { 0x0041,0x0080,0x0000 }, 2 }, /* 15 */ - /*expect*/ { 0,1,-1 }, - }, - { /*input.*/ { { 0x0041,0x00A0,0x0000 }, 2 }, /* 16 */ - /*expect*/ { 0,1,-1 }, - }, -#ifdef SHOJI_IS_RIGHT - { /*input.*/ { { 0x0041,0x00A1,0x0000 }, 2 }, /* 17 */ - /*expect*/ { 0,1,2 }, - }, - { /*input.*/ { { 0x0041,0x00FF,0x0000 }, 2 }, /* 18 */ - /*expect*/ { 0,1,2 }, - }, -#else - { /*input.*/ { { 0x0041,0x007E,0x0000 }, 2 }, /* 17 */ - /*expect*/ { 0,1,2 }, - }, - { /*input.*/ { { 0x0041,0x0020,0x0000 }, 2 }, /* 18 */ - /*expect*/ { 0,1,2 }, - }, -#endif - { /*input.*/ { { 0x0041,0x3042,0x0000 }, 2 }, /* 19 */ - /*expect*/ { 0,1,-1 }, - }, - { /*input.*/ { { 0x0041,0x3044,0x0000 }, 2 }, /* 20 */ - /*expect*/ { 0,1,-1 }, - }, - { .is_last = 1 } - } - }, - { -#if 0 - { Twcswidth, TST_LOC_eucJP }, -#else - { Twcswidth, TST_LOC_ja_UTF8 }, -#endif - { - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0 }, /* 01 */ - /*expect*/ { 0,1,0 }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 1 }, /* 02 */ - /*expect*/ { 0,1,2 }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 2 }, /* 03 */ - /*expect*/ { 0,1,4 }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 3 }, /* 04 */ - /*expect*/ { 0,1,6 }, - }, - { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 4 }, /* 05 */ - /*expect*/ { 0,1,6 }, - }, - { /*input.*/ { { 0x0000 }, 1 }, /* 06 */ - /*expect*/ { 0,1,0 }, - }, - { /*input.*/ { { 0x008E,0x0001,0x0000 }, 2 }, /* 07 */ - /*expect*/ { 0,1,-1 }, - }, - { /*input.*/ { { 0x3041,0x008E,0x0000 }, 1 }, /* 08 */ - /*expect*/ { 0,1,2 }, - }, - { /*input.*/ { { 0x3041,0x008E,0x0000 }, 2 }, /* 09 */ - /*expect*/ { 0,1,-1 }, - }, - { /*input.*/ { { 0x3041,0x0001,0x0000 }, 2 }, /* 10 */ - /*expect*/ { 0,1,-1 }, - }, - { /*input.*/ { { 0x3041,0x3000,0x0000 }, 2 }, /* 11 */ - /*expect*/ { 0,1,4 }, - }, - { /*input.*/ { { 0x0041,0x0021,0x0000 }, 2 }, /* 12 */ - /*expect*/ { 0,1,2 }, - }, - { /*input.*/ { { 0x0041,0x007E,0x0000 }, 2 }, /* 13 */ - /*expect*/ { 0,1,2 }, - }, - { /*input.*/ { { 0x0041,0x007F,0x0000 }, 2 }, /* 14 */ - /*expect*/ { 0,1,-1 }, - }, - { /*input.*/ { { 0x0041,0x0080,0x0000 }, 2 }, /* 15 */ - /*expect*/ { 0,1,-1 }, - }, -#if 0 - { /*input.*/ { { 0x0041,0x00A0,0x0000 }, 2 }, /* 16 */ - /*expect*/ { 0,1,-1 }, - }, -#ifdef NO_WAIVER - /* */ /* returns 3 */ - { /*input.*/ { { 0x0041,0x00A1,0x0000 }, 2 }, /* 17 */ - /*expect*/ { 0,1,-1 }, - }, -#else - /* XXX U00A1 is valid -> /x8f/xa2/xc4 in JIS X 0212 */ - { /*input.*/ { { 0x0041,0x00A1,0x0000 }, 2 }, /* 17 */ - /*expect*/ { 0,1,3 }, - }, -#endif -#else - /* XXX U00A0 i UTF8 is valid -> /xc2/xa0 */ - { /*input.*/ { { 0x0041,0x00A0,0x0000 }, 2 }, /* 16 */ - /*expect*/ { 0,1,2 }, - }, -#ifdef NO_WAIVER - /* */ /* returns 3 */ - { /*input.*/ { { 0x0041,0x00A1,0x0000 }, 2 }, /* 17 */ - /*expect*/ { 0,1,-1 }, - }, -#else - /* XXX U00A1 in UTF-8 is valid -> /xc2/xa1 */ - { /*input.*/ { { 0x0041,0x00A1,0x0000 }, 2 }, /* 17 */ - /*expect*/ { 0,1,2 }, - }, -#endif -#endif - { /*input.*/ { { 0x0041,0xFF71,0x0000 }, 2 }, /* 18 */ - /*expect*/ { 0,1,2 }, - }, - { /*input.*/ { { 0x0041,0x3042,0x0000 }, 2 }, /* 19 */ - /*expect*/ { 0,1,3 }, - }, - { /*input.*/ { { 0x0041,0x3044,0x0000 }, 2 }, /* 20 */ - /*expect*/ { 0,1,3 }, - }, - { .is_last = 1 } - } - }, - { - { Twcswidth, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_wcsxfrm.c b/test/locale-mbwc/dat_wcsxfrm.c deleted file mode 100644 index acb6727a8..000000000 --- a/test/locale-mbwc/dat_wcsxfrm.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY - * - * FILE: dat_wcsxfrm.c - * - * WCSXFRM: size_t wcsxfrm (char *s1, const char s2, size_t n); - */ - -/* - * NOTE: - * - * Return value and errno value are checked only for 2nd string: - * org2[]; n1 and n2 don't mean bytes to be translated. - * It means a buffer size including a null character. - * Results of this test depens on results of wcscoll(). - * If you got errors, check both test results. - */ - - -TST_WCSXFRM tst_wcsxfrm_loc [] = { - - { - { Twcsxfrm, TST_LOC_de }, - { - { /*inp*/ { { 0x00C1,0x0000 }, { 0x00C1,0x0000 }, 7, 7 }, /* #01 */ - /*exp*/ { 0, 0,0, }, - }, - { /*inp*/ { { 0x0042,0x0000 }, { 0x0061,0x0000 }, 7, 7 }, /* #02 */ - /*exp*/ { 0, 0,0, }, - }, - { /*inp*/ { { 0x0061,0x0000 }, { 0x0042,0x0000 }, 7, 7 }, /* #03 */ - /*exp*/ { 0, 0,0, }, - }, - { /*inp*/ { { 0x00E4,0x0000 }, { 0x00DC,0x0000 }, 7, 7 }, /* #04 */ - /*exp*/ { 0, 0,0, }, - }, - { /*inp*/ { { 0x00DC,0x0000 }, { 0x00E4,0x0000 }, 7, 7 }, /* #05 */ - /*exp*/ { 0, 0,0, }, - }, - { .is_last = 1 } - } - }, - { - { Twcsxfrm, TST_LOC_enUS }, - { - { /*inp*/ { { 0x0041,0x0000 }, { 0x0041,0x0000 }, 7, 7 }, /* #01 */ - /*exp*/ { 0, 0,0, }, - }, - { /*inp*/ { { 0x0042,0x0000 }, { 0x0061,0x0000 }, 7, 7 }, /* #02 */ - /*exp*/ { 0, 0,0, }, - }, - { /*inp*/ { { 0x0061,0x0000 }, { 0x0042,0x0000 }, 7, 7 }, /* #03 */ - /*exp*/ { 0, 0,0, }, - }, - { /*inp*/ { { 0x0000,0x0000 }, { 0x0000,0x0000 }, 7, 7 }, /* #04 */ - /*exp*/ { 0, 0,0, }, - }, -#ifdef NO_WAIVER - { /* x 2 */ - /*inp*/ { { 0x3061,0x0000 }, { 0xFF42,0x0000 }, 7, 7 }, /* #05 */ - /* */ - /*exp*/ { EINVAL, 1,(size_t)-1, }, - }, -#endif - { .is_last = 1 } - } - }, - { -#if 0 - { Twcsxfrm, TST_LOC_eucJP }, /* need more test data ! */ -#else - { Twcsxfrm, TST_LOC_ja_UTF8 }, /* need more test data ! */ -#endif - { - { /*inp*/ { { 0x3041,0x0000 }, { 0x3041,0x0000 }, 7, 7 }, /* #01 */ - /*exp*/ { 0, 0,0, }, - }, - { /*inp*/ { { 0x0042,0x0000 }, { 0x0061,0x0000 }, 7, 7 }, /* #02 */ - /*exp*/ { 0, 0,0, }, - }, - { /*inp*/ { { 0x0061,0x0000 }, { 0x0042,0x0000 }, 7, 7 }, /* #03 */ - /*exp*/ { 0, 0,0, }, - }, - { /*inp*/ { { 0x30A2,0x0000 }, { 0xFF71,0x0000 }, 7, 7 }, /* #04 */ - /*exp*/ { 0, 0,0, }, - }, - { /*inp*/ { { 0xFF71,0x0000 }, { 0x30A2,0x0000 }, 7, 7 }, /* #05 */ - /*exp*/ { 0, 0,0, }, - }, -#ifdef NO_WAIVER - /* x 2 */ - { /*inp*/ { { 0x008E,0x0000 }, { 0x008F,0x0000 }, 7, 7 }, /* #06 */ - /*exp*/ { EINVAL, 1,(size_t)-1, }, - }, -#endif - { .is_last = 1 } - } - }, - { - { Twcsxfrm, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_wctob.c b/test/locale-mbwc/dat_wctob.c deleted file mode 100644 index dfd344eb8..000000000 --- a/test/locale-mbwc/dat_wctob.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wctob.c - * - * ISW*: int wctob( wint_t wc ); - */ - - -TST_WCTOB tst_wctob_loc [] = { - - { { Twctob, TST_LOC_de }, - { - { { WEOF }, { 0, 1, EOF } }, - { { 0x0020 }, { 0, 1, 0x20 } }, - { { 0x0061 }, { 0, 1, 0x61 } }, - { { 0x0080 }, { 0, 1, 0x80 } }, - { { 0x00C4 }, { 0, 1, 0xC4 } }, - { { 0x30C4 }, { 0, 1, EOF } }, - { .is_last = 1 } /* Last element. */ - } - }, - { { Twctob, TST_LOC_enUS }, - { - { { WEOF }, { 0, 1, EOF } }, - { { 0x0020 }, { 0, 1, 0x20 } }, - { { 0x0061 }, { 0, 1, 0x61 } }, -#ifdef SHOJI_IS_RIGHT - { { 0x0080 }, { 0, 1, 0x80 } }, - { { 0x00C4 }, { 0, 1, 0xC4 } }, -#else - /* XXX These are no valid characters. */ - { { 0x0080 }, { 0, 1, EOF } }, - { { 0x00C4 }, { 0, 1, EOF } }, -#endif - { { 0x30C4 }, { 0, 1, EOF } }, - { .is_last = 1 } /* Last element. */ - } - }, -#if 0 - { { Twctob, TST_LOC_eucJP }, -#else - { { Twctob, TST_LOC_ja_UTF8 }, -#endif - { - { { WEOF }, { 0, 1, EOF } }, - { { 0x0020 }, { 0, 1, 0x20 } }, - { { 0x0061 }, { 0, 1, 0x61 } }, -#if 0 - { { 0x0080 }, { 0, 1, 0x80 } }, -#else - { { 0x0080 }, { 0, 1, EOF } }, -#endif - { { 0x00FF }, { 0, 1, EOF } }, - { { 0x00C4 }, { 0, 1, EOF } }, - { { 0x30C4 }, { 0, 1, EOF } }, - { .is_last = 1 } /* Last element. */ - } - }, - { { Twctob, TST_LOC_end } } -}; diff --git a/test/locale-mbwc/dat_wctomb.c b/test/locale-mbwc/dat_wctomb.c deleted file mode 100644 index 0ec3a9c0d..000000000 --- a/test/locale-mbwc/dat_wctomb.c +++ /dev/null @@ -1,168 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wctomb.c - * - * WCTOMB: int wctomb (char *s, wchar_t wc) - */ - - -/* - * FUNCTION: - * - * int wctomb (char *s, wchar_t wc); - * - * return: the number of bytes - * - * NOTE: - * - * o When you feed a null pointer for a string (s) to the function, - * set s_flg=0 instead of putting just a 'NULL' there. - * Even if you put a 'NULL', it means a null string as well as "". - * - * o When s is a null pointer, the function checks state dependency. - * - * state-dependent encoding - return NON-zero - * state-independent encoding - return 0 - * - * If state-dependent encoding is expected, set - * - * s_flg = 0, ret_flg = 0, ret_val = +1 - * - * If state-independent encoding is expected, set - * - * s_flg = 0, ret_flg = 0, ret_val = 0 - * - * - * When you set ret_flg=1, the test program simply compares an - * actual return value with an expected value. You can check - * state-independent case (return value is 0) in that way, but - * you can not check state-dependent case. So when you check - * state- dependency in this test function: tst_wctomb(), set - * ret_flg=0 always. It's a special case, and the test - * function takes care of it. - * - * Input Expect - * - * s_flg=0 ret_flg=0 - * | | - * { 0, 0 }, { 0, 0, 0, x, "" } - * | | - * not used ret_val: 0/+1 - * (expected val) - */ - - -TST_WCTOMB tst_wctomb_loc [] = { - { - { Twctomb, TST_LOC_de }, - { - /* #01 : normal case */ - { /*input.*/ { 1, 0x00C4 }, - /*expect*/ { 0,1,1, "Ä" }, - }, - /* #02 : normal case */ - { /*input.*/ { 1, 0x00DC }, - /*expect*/ { 0,1,1, "Ü" }, - }, - /* #03 : normal case */ - { /*input.*/ { 1, 0x0092 }, - /*expect*/ { 0,1,1, "\222" }, - }, - /* #04 : error case */ - { /*input.*/ { 1, 0x3041 }, - /*expect*/ { 0,1,-1, "" }, - }, - /* #05 : state dependency */ - { /*input.*/ { 0, 0x0000 }, - /*expect*/ { 0,0,0, "" }, - }, - { .is_last = 1 } - } - }, - { - { Twctomb, TST_LOC_enUS }, - { - /* #01 : normal case */ - { /*input.*/ { 1, 0x0041 }, - /*expect*/ { 0,1,1, "A" }, - }, - /* #02 : normal case */ - { /*input.*/ { 1, 0x0042 }, - /*expect*/ { 0,1,1, "B" }, - }, - /* #03 : error case */ - /* */ - { /*input.*/ { 1, 0x00C4 }, - /*expect*/ { 0,1,-1, "" }, - }, - /* #04 : error case */ - { /*input.*/ { 1, 0x30A4 }, - /*expect*/ { 0,1,-1, "" }, - }, - /* #05 : state dependency */ - { /*input.*/ { 0, 0x0000 }, - /*expect*/ { 0,0,0, "" }, - }, - { .is_last = 1 } - } - }, -#if 0 - { - { Twctomb, TST_LOC_eucJP }, - { - /* #01 : normal case */ - { /*input.*/ { 1, 0x3042 }, - /*expect*/ { 0,1,2, "\244\242" }, - }, - /* #02 : normal case */ - { /*input.*/ { 1, 0x3044 }, - /*expect*/ { 0,1,2, "\244\244" }, - }, - /* #03 : normal case */ - { /*input.*/ { 1, 0x008E }, - /*expect*/ { 0,1,-1, "" }, - }, - /* #04 : jisX0212 */ - { /*input.*/ { 1, 0x00C4 }, - /*expect*/ { 0,1,3, "\217\252\243" }, /* jisx0210 returns 3 */ - }, - /* #05 : state dependency */ - { /*input.*/ { 0, 0x008E }, - /*expect*/ { 0,0,0, "" }, - }, - { .is_last = 1 } - } - }, -#else - { - { Twctomb, TST_LOC_ja_UTF8 }, - { - /* #01 : normal case */ - { /*input.*/ { 1, 0x3042 }, - /*expect*/ { 0,1,3, "\343\201\202" }, - }, - /* #02 : normal case */ - { /*input.*/ { 1, 0x3044 }, - /*expect*/ { 0,1,3, "\343\201\204" }, - }, - /* #03 : normal case */ - { /*input.*/ { 1, 0x008E }, - /*expect*/ { 0,1,2, "\302\216" }, - }, - /* #04 : jisX0212 */ - { /*input.*/ { 1, 0x00C4 }, - /*expect*/ { 0,1,2, "\303\204" }, /* jisx0210 returns 3 */ - }, - /* #05 : state dependency */ - { /*input.*/ { 0, 0x008E }, - /*expect*/ { 0,0,0, "" }, - }, - { .is_last = 1 } - } - }, -#endif - { - { Twctomb, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/dat_wctrans.c b/test/locale-mbwc/dat_wctrans.c deleted file mode 100644 index df4d3ad61..000000000 --- a/test/locale-mbwc/dat_wctrans.c +++ /dev/null @@ -1,99 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY - * - * FILE: dat_wctrans.c - * - * WCTRANS: wctrans_t wctrans( const char *charclass ); - */ - -/* - * NOTE: - * When a return value is expected to be 0 (false), - * set ret_flg=1 and set ret_val=0. - * Otherwise just set ret_flg=0. - */ - - -TST_WCTRANS tst_wctrans_loc [] = { - - { { Twctrans, TST_LOC_de }, - { - { /*inp*/ { "" }, /* #1 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "upper" }, /* #2 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "lower" }, /* #3 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "toupper" }, /* #4 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "tolower" }, /* #5 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "xxxxx" }, /* #6 */ - /*exp*/ { 0,1,0, }, - }, - { .is_last = 1 } - } - }, - { { Twctrans, TST_LOC_enUS }, - { - { /*inp*/ { "" }, /* #1 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "upper" }, /* #2 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "lower" }, /* #3 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "toupper" }, /* #4 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "tolower" }, /* #5 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "xxxxx" }, /* #6 */ - /*exp*/ { 0,1,0, }, - }, - { .is_last = 1 } - } - }, -#if 0 - { { Twctrans, TST_LOC_eucJP }, -#else - { { Twctrans, TST_LOC_ja_UTF8 }, -#endif - { - { /*inp*/ { "" }, /* #1 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "upper" }, /* #2 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "lower" }, /* #3 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "toupper" }, /* #4 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "tolower" }, /* #5 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "xxxxx" }, /* #6 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "tojhira" }, /* #7 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "tojkata" }, /* #8 */ - /*exp*/ { 0,0,0, }, - }, - { .is_last = 1 } - } - }, - { { Twctrans, TST_LOC_end }} -}; diff --git a/test/locale-mbwc/dat_wctype.c b/test/locale-mbwc/dat_wctype.c deleted file mode 100644 index db3bf33e9..000000000 --- a/test/locale-mbwc/dat_wctype.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY - * - * FILE: dat_wctype.c - * - * WCTYPE: wctype_t wctype( const char *class ); - */ - -/* - * NOTE: - * When a return value is expected to be 0 (false), - * set ret_flg=1 and set ret_val=0. - * Otherwise just set ret_flg=0. - */ - - -TST_WCTYPE tst_wctype_loc [] = { - - { { Twctype, TST_LOC_de }, - { - { /*inp*/ { "alnum" }, /* #01 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "alpha" }, /* #02 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "cntrl" }, /* #03 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "digit" }, /* #04 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "graph" }, /* #05 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "lower" }, /* #06 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "print" }, /* #07 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "punct" }, /* #08 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "space" }, /* #09 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "upper" }, /* #10 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "xdigit" }, /* #11 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "" }, /* #12 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "ideograph" }, /* #13 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "english" }, /* #14 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "ascii" }, /* #15 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "special" }, /* #16 */ - /*exp*/ { 0,1,0, }, - }, - { .is_last = 1 } - } - }, - { { Twctype, TST_LOC_enUS }, - { - { /*inp*/ { "alnum" }, /* #01 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "alpha" }, /* #02 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "cntrl" }, /* #03 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "digit" }, /* #04 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "graph" }, /* #05 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "lower" }, /* #06 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "print" }, /* #07 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "punct" }, /* #08 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "space" }, /* #09 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "upper" }, /* #10 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "xdigit" }, /* #11 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "" }, /* #12 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "ideograph" }, /* #13 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "english" }, /* #14 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "ascii" }, /* #15 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "special" }, /* #16 */ - /*exp*/ { 0,1,0, }, - }, - { .is_last = 1 } - } - }, -#if 0 - { { Twctype, TST_LOC_eucJP }, -#else - { { Twctype, TST_LOC_ja_UTF8 }, -#endif - { - { /*inp*/ { "alnum" }, /* #01 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "alpha" }, /* #02 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "cntrl" }, /* #03 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "digit" }, /* #04 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "graph" }, /* #05 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "lower" }, /* #06 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "print" }, /* #07 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "punct" }, /* #08 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "space" }, /* #09 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "upper" }, /* #10 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "xdigit" }, /* #11 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "ideogram" }, /* #12 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "phonogram" }, /* #13 */ - /*exp*/ { 0,1,0, }, - }, - { /*inp*/ { "jspace" }, /* #14 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "jhira" }, /* #15 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "jkata" }, /* #16 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "jkanji" }, /* #17 */ - /*exp*/ { 0,0,0, }, - }, - { /*inp*/ { "jdigit" }, /* #18 */ - /*exp*/ { 0,0,0, }, - }, - { .is_last = 1 } - } - }, - { { Twctype, TST_LOC_end }} -}; diff --git a/test/locale-mbwc/dat_wcwidth.c b/test/locale-mbwc/dat_wcwidth.c deleted file mode 100644 index b6b7c2974..000000000 --- a/test/locale-mbwc/dat_wcwidth.c +++ /dev/null @@ -1,149 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: dat_wcwidth.c - * - * WCWIDTH: int wcwidth (wchar_t wc); - */ - -TST_WCWIDTH tst_wcwidth_loc [] = { - { - { Twcwidth, TST_LOC_de }, - { - { /*inp*/ { 0x0000 }, /* #01 */ - /*exp*/ { 0, 1,0, }, - }, - { /*inp*/ { 0x0020 }, /* #02 */ - /*exp*/ { 0, 1,1, }, - }, - { /*inp*/ { 0x007F }, /* #03 */ - /*exp*/ { 0, 1,-1, }, - }, - { /*inp*/ { 0x0080 }, /* #04 */ - /*exp*/ { 0, 1,-1, }, - }, - { /*inp*/ { 0x00A1 }, /* #05 */ - /*exp*/ { 0, 1,1, }, - }, - { /*inp*/ { 0x00C1 }, /* #06 */ - /*exp*/ { 0, 1,1, }, - }, -#ifdef SHOJI_IS_RIGHT - /* */ /* CHECK : wint_t */ - { /*inp*/ { 0x3041 }, /* #07 */ - /*exp*/ { 0, 1,0, }, - }, -#else - { /*inp*/ { 0x3041 }, /* #07 */ - /*exp*/ { 0, 1,EOF, }, - }, -#endif - { .is_last = 1 } - } - }, - { - { Twcwidth, TST_LOC_enUS }, - { - { /*inp*/ { 0x0000 }, /* #01 */ - /*exp*/ { 0, 1,0, }, - }, - { /*inp*/ { 0x0020 }, /* #02 */ - /*exp*/ { 0, 1,1, }, - }, - { /*inp*/ { 0x007F }, /* #03 */ - /*exp*/ { 0, 1,-1, }, - }, - { /*inp*/ { 0x0080 }, /* #04 */ - /*exp*/ { 0, 1,-1, }, - }, - { /*inp*/ { 0x00A1 }, /* #05 */ - /*exp*/ { 0, 1,-1, }, - }, - { /*inp*/ { 0x00C1 }, /* #06 */ - /*exp*/ { 0, 1,-1, }, - }, - { /*inp*/ { 0x3041 }, /* #07 */ - /*exp*/ { 0, 1,-1, }, - }, - { .is_last = 1 } - } - }, -#if 0 - { - { Twcwidth, TST_LOC_eucJP }, - { - { /*inp*/ { 0x0000 }, /* #01 */ - /*exp*/ { 0, 1,0, }, - }, - { /*inp*/ { 0x0020 }, /* #02 */ - /*exp*/ { 0, 1,1, }, - }, - { /*inp*/ { 0x007F }, /* #03 */ - /*exp*/ { 0, 1,-1, }, - }, - { /*inp*/ { 0x0080 }, /* #04 */ - /*exp*/ { 0, 1,-1, }, - }, -#ifdef SHOJI_IS_RIGHT - /* */ - { /*inp*/ { 0x00A1 }, /* #05 */ - /*exp*/ { 0, 1,0, }, - }, -#else - /* XXX U00A1 is a valid character in EUC-JP. */ - { /*inp*/ { 0x00A1 }, /* #05 */ - /*exp*/ { 0, 1,2, }, - }, -#endif - /* jisx0212 */ - { /*inp*/ { 0x00C1 }, /* #06 */ - /*exp*/ { 0, 1,2, }, - }, - { /*inp*/ { 0x3041 }, /* #07 */ - /*exp*/ { 0, 1,2, }, - }, - { .is_last = 1 } - } - }, -#else - { - { Twcwidth, TST_LOC_ja_UTF8 }, - { - { /*inp*/ { 0x0000 }, /* #01 */ - /*exp*/ { 0, 1,0, }, - }, - { /*inp*/ { 0x0020 }, /* #02 */ - /*exp*/ { 0, 1,1, }, - }, - { /*inp*/ { 0x007F }, /* #03 */ - /*exp*/ { 0, 1,-1, }, - }, - { /*inp*/ { 0x0080 }, /* #04 */ - /*exp*/ { 0, 1,-1, }, - }, -#ifdef SHOJI_IS_RIGHT - /* */ - { /*inp*/ { 0x00A1 }, /* #05 */ - /*exp*/ { 0, 1,0, }, - }, -#else - /* XXX U00A1 is a valid character in EUC-JP.UTF-8. */ - { /*inp*/ { 0x00A1 }, /* #05 */ - /*exp*/ { 0, 1,1, }, - }, -#endif - /* jisx0212 */ - { /*inp*/ { 0x00C1 }, /* #06 */ - /*exp*/ { 0, 1,1, }, - }, - { /*inp*/ { 0x3041 }, /* #07 */ - /*exp*/ { 0, 1,2, }, - }, - { .is_last = 1 } - } - }, -#endif - { - { Twcwidth, TST_LOC_end } - } -}; diff --git a/test/locale-mbwc/tgn_funcdef.h b/test/locale-mbwc/tgn_funcdef.h deleted file mode 100644 index ec247926f..000000000 --- a/test/locale-mbwc/tgn_funcdef.h +++ /dev/null @@ -1,160 +0,0 @@ -#ifndef TGN_FUNCDEF_H -#define TGN_FUNCDEF_H - -/* Unique number for each test. */ -#define Tiswalnum 1 -#define Tiswalpha 2 -#define Tiswcntrl 3 -#define Tiswctype 4 -#define Tiswdigit 5 -#define Tiswgraph 6 -#define Tiswlower 7 -#define Tiswprint 8 -#define Tiswpunct 9 -#define Tiswspace 10 -#define Tiswupper 11 -#define Tiswxdigit 12 -#define Tmblen 13 -#define Tmbrlen 14 -#define Tmbrtowc 15 -#define Tmbsrtowcs 16 -#define Tmbstowcs 17 -#define Tmbtowc 18 -#define Tstrcoll 19 -#define Tstrfmon 20 -#define Tstrxfrm 21 -#define Tswscanf 22 -#define Ttowctrans 23 -#define Ttowlower 24 -#define Ttowupper 25 -#define Twcrtomb 26 -#define Twcscat 27 -#define Twcschr 28 -#define Twcscmp 29 -#define Twcscoll 30 -#define Twcscpy 31 -#define Twcscspn 32 -#define Twcslen 33 -#define Twcsncat 34 -#define Twcsncmp 35 -#define Twcsncpy 36 -#define Twcspbrk 37 -#define Twcsrtombs 38 -#define Twcsspn 39 -#define Twcsstr 40 -#define Twcstod 41 -#define Twcstok 42 -#define Twcstombs 43 -#define Twcswidth 44 -#define Twcsxfrm 45 -#define Twctob 46 -#define Twctomb 47 -#define Twctrans 48 -#define Twctype 49 -#define Twcwidth 50 - -/* Name of each test. */ -#define S_ISWALNUM "iswalnum" -#define S_ISWALPHA "iswalpha" -#define S_ISWCNTRL "iswcntrl" -#define S_ISWCTYPE "iswctype" -#define S_ISWDIGIT "iswdigit" -#define S_ISWGRAPH "iswgraph" -#define S_ISWLOWER "iswlower" -#define S_ISWPRINT "iswprint" -#define S_ISWPUNCT "iswpunct" -#define S_ISWSPACE "iswspace" -#define S_ISWUPPER "iswupper" -#define S_ISWXDIGIT "iswxdigit" -#define S_MBLEN "mblen" -#define S_MBRLEN "mbrlen" -#define S_MBRTOWC "mbrtowc" -#define S_MBSRTOWCS "mbsrtowcs" -#define S_MBSTOWCS "mbstowcs" -#define S_MBTOWC "mbtowc" -#define S_STRCOLL "strcoll" -#define S_STRFMON "strfmon" -#define S_STRXFRM "strxfrm" -#define S_SWSCANF "swscanf" -#define S_TOWCTRANS "towctrans" -#define S_TOWLOWER "towlower" -#define S_TOWUPPER "towupper" -#define S_WCRTOMB "wcrtomb" -#define S_WCSCAT "wcscat" -#define S_WCSCHR "wcschr" -#define S_WCSCMP "wcscmp" -#define S_WCSCOLL "wcscoll" -#define S_WCSCPY "wcscpy" -#define S_WCSCSPN "wcscspn" -#define S_WCSLEN "wcslen" -#define S_WCSNCAT "wcsncat" -#define S_WCSNCMP "wcsncmp" -#define S_WCSNCPY "wcsncpy" -#define S_WCSPBRK "wcspbrk" -#define S_WCSRTOMBS "wcsrtombs" -#define S_WCSSPN "wcsspn" -#define S_WCSSTR "wcsstr" -#define S_WCSTOD "wcstod" -#define S_WCSTOK "wcstok" -#define S_WCSTOMBS "wcstombs" -#define S_WCSWIDTH "wcswidth" -#define S_WCSXFRM "wcsxfrm" -#define S_WCTOB "wctob" -#define S_WCTOMB "wctomb" -#define S_WCTRANS "wctrans" -#define S_WCTYPE "wctype" -#define S_WCWIDTH "wcwidth" - -/* Prototypes for test functions. */ -extern int tst_iswalnum (FILE *, int); -extern int tst_iswalpha (FILE *, int); -extern int tst_iswcntrl (FILE *, int); -extern int tst_iswctype (FILE *, int); -extern int tst_iswdigit (FILE *, int); -extern int tst_iswgraph (FILE *, int); -extern int tst_iswlower (FILE *, int); -extern int tst_iswprint (FILE *, int); -extern int tst_iswpunct (FILE *, int); -extern int tst_iswspace (FILE *, int); -extern int tst_iswupper (FILE *, int); -extern int tst_iswxdigit (FILE *, int); -extern int tst_mblen (FILE *, int); -extern int tst_mbrlen (FILE *, int); -extern int tst_mbrtowc (FILE *, int); -extern int tst_mbsrtowcs (FILE *, int); -extern int tst_mbstowcs (FILE *, int); -extern int tst_mbtowc (FILE *, int); -extern int tst_strcoll (FILE *, int); -extern int tst_strfmon (FILE *, int); -extern int tst_strxfrm (FILE *, int); -extern int tst_swscanf (FILE *, int); -extern int tst_towctrans (FILE *, int); -extern int tst_towlower (FILE *, int); -extern int tst_towupper (FILE *, int); -extern int tst_wcrtomb (FILE *, int); -extern int tst_wcscat (FILE *, int); -extern int tst_wcschr (FILE *, int); -extern int tst_wcscmp (FILE *, int); -extern int tst_wcscoll (FILE *, int); -extern int tst_wcscpy (FILE *, int); -extern int tst_wcscspn (FILE *, int); -extern int tst_wcslen (FILE *, int); -extern int tst_wcsncat (FILE *, int); -extern int tst_wcsncmp (FILE *, int); -extern int tst_wcsncpy (FILE *, int); -extern int tst_wcspbrk (FILE *, int); -extern int tst_wcsrtombs (FILE *, int); -extern int tst_wcsspn (FILE *, int); -extern int tst_wcsstr (FILE *, int); -extern int tst_wcstod (FILE *, int); -extern int tst_wcstok (FILE *, int); -extern int tst_wcstombs (FILE *, int); -extern int tst_wcswidth (FILE *, int); -extern int tst_wcsxfrm (FILE *, int); -extern int tst_wctob (FILE *, int); -extern int tst_wctomb (FILE *, int); -extern int tst_wctrans (FILE *, int); -extern int tst_wctype (FILE *, int); -extern int tst_wcwidth (FILE *, int); - -#endif /* TGN_FUNCDEF_H */ diff --git a/test/locale-mbwc/tgn_locdef.h b/test/locale-mbwc/tgn_locdef.h deleted file mode 100644 index 89146a714..000000000 --- a/test/locale-mbwc/tgn_locdef.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef TGN_LOCDEF_H -#define TGN_LOCDEF_H - -/* Defines for all locales used in the suite. */ - -/* POSIX C locale. */ -#define TST_LOC_C "C" - -/* German locale with ISO-8859-1. */ -#define TST_LOC_de "de_DE.ISO-8859-1" - -/* For US we use ANSI_X3.4-1968 (ASCII). Changed in en_US.ISO-8859-1 */ -#define TST_LOC_en "en_US.ISO-8859-1" -#define TST_LOC_enUS TST_LOC_C - -/* NOTE: ja_JP.EUC-JP locale isn't supported into the uClibc! - UTF-8 is the only multibyte codeset supported. */ -/* Japanese locale with EUC-JP. */ -#if 0 -#define TST_LOC_eucJP "ja_JP.EUC-JP" -#endif - -/* Japanese locale with UTF-8. */ -#define TST_LOC_ja_UTF8 "ja_JP.UTF-8" - -/* German locale with UTF-8. */ -#define TST_LOC_de_UTF8 "de_DE.UTF-8" - -/* End marker - must appear in each table as last entry. */ -#define TST_LOC_end "lastEntry" - -#endif /* TGN_LOCDEF_H */ diff --git a/test/locale-mbwc/tsp_common.c b/test/locale-mbwc/tsp_common.c deleted file mode 100644 index cd88274c5..000000000 --- a/test/locale-mbwc/tsp_common.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * Main driver - */ - - -#define TST_FUNCTION_CALL(func) _TST_FUNCTION_CALL(func) -#define _TST_FUNCTION_CALL(func) tst ##_## func - -#include -#include -#include -#include -#include -#include - -#include "tst_types.h" -#include "tgn_locdef.h" - - -int -main (int argc, char *argv[]) -{ - int ret; - int debug; - - debug = argc > 1 ? atoi (argv[1]) : 0; - - if (debug) - { - fprintf (stdout, "\nTST_MBWC ===> %s ...\n", argv[0]); - } - ret = TST_FUNCTION_CALL (TST_FUNCTION) (stdout, debug); - - return (ret != 0); -} - -#define MAX_RESULT_REC 132 -char result_rec[MAX_RESULT_REC]; - - -int -result (FILE * fp, char res, const char *func, const char *loc, int rec_no, - int seq_no, int case_no, const char *msg) -{ - if (fp == NULL - || strlen (func) + strlen (loc) + strlen (msg) + 32 > MAX_RESULT_REC) - { - fprintf (stderr, - "Warning: result(): can't write the result: %s:%s:%d:%d:%s\n", - func, loc, rec_no, case_no, msg); - return 0; - } - - sprintf (result_rec, "%s:%s:%d:%d:%d:%c:%s\n", func, loc, rec_no, seq_no, - case_no, res, msg); - - if (fputs (result_rec, fp) == EOF) - { - return 0; - } - - return 1; -} diff --git a/test/locale-mbwc/tst2_mbrtowc.c b/test/locale-mbwc/tst2_mbrtowc.c deleted file mode 100644 index 92e12838c..000000000 --- a/test/locale-mbwc/tst2_mbrtowc.c +++ /dev/null @@ -1,21 +0,0 @@ -#include -#include -#include - -/* bugs.uclibc.org/1471 : make sure output is 0 */ -static int -do_test(void) -{ - wchar_t output; - int result; - - output = L'A'; /* anything other than 0 will do... */ - result = mbrtowc (&output, "", 1, 0); - - assert (result == 0); - assert (output == 0); - - return EXIT_SUCCESS; -} -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/locale-mbwc/tst_funcs.h b/test/locale-mbwc/tst_funcs.h deleted file mode 100644 index 02d5d341a..000000000 --- a/test/locale-mbwc/tst_funcs.h +++ /dev/null @@ -1,294 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: tst_funcs.h - * - * Definitions of macros - */ - - -#ifndef TST_FUNCS_H -#define TST_FUNCS_H - -#define C_SUCCESS 'S' /* test case test passed */ -#define C_FAILURE 'F' /* test case failed */ -#define C_IGNORED 'I' /* test case/result ignored (not tested) */ -#define C_INVALID 'D' /* test data may be wrong */ -#define C_LOCALES 'L' /* can't set locale (skip) */ - - -extern int result (FILE * fp, char res, const char *func, const char *loc, - int rec_no, int seq_num, int case_no, const char *msg); - -#define Result(C, S, E, M) \ - result (fp, (C), (S), locale, rec+1, seq_num+1, (E), (M)) - -#define CASE_0 0 -#define CASE_1 1 -#define CASE_2 2 -#define CASE_3 3 -#define CASE_4 4 -#define CASE_5 5 -#define CASE_6 6 -#define CASE_7 7 -#define CASE_8 8 -#define CASE_9 9 - -#define MS_PASSED "PASSED" -#define MS_SPACE " " -#define MS_FAILED " " -#define MS_NOTEST "NOTEST" -#define MS_ABORTU "ABEND0" -#define MS_ABORT "ABEND1" - -#define MK_PASSED 0x00 -#define MK_SPACE 0x01 -#define MK_NOTEST 0x02 -#define MK_ABORTU 0x04 -#define MK_ABORT 0x08 - - - -/* ------------------ COMMON MACROS ------------------ */ - -#define TST_ABS(x) (((x) > 0) ? (x) : -(x)) - -#define TMD_ERRET(_type_) int err_val; \ - int ret_flg; \ - _type_ ret_val - -#define TMD_RECHEAD(_FUNC_) \ - \ - typedef struct { \ - TIN_##_FUNC_##_REC input; \ - TEX_##_FUNC_##_REC expect; \ - int is_last; \ - } TST_##_FUNC_##_REC; \ - typedef struct { \ - TST_HEAD hd; \ - TST_##_FUNC_##_REC rec[ MAX_LOC_TEST ]; \ - } TST_##_FUNC_ - -#define TST_FTYP(func) tst_##func##_loc -#define TST_HEAD(func) tst_##func##_loc[ loc ].hd -#define TST_INPUT(func) tst_##func##_loc[ loc ].rec[ rec ].input -#define TST_EXPECT(func) tst_##func##_loc[ loc ].rec[ rec ].expect -#define TST_INPUT_SEQ(func) \ - tst_##func##_loc[ loc ].rec[ rec ].input.seq[ seq_num ] -#define TST_EXPECT_SEQ(func) \ - tst_##func##_loc[ loc ].rec[ rec ].expect.seq[ seq_num ] -#define TST_IS_LAST(func) \ - tst_##func##_loc[ loc ].rec[ rec ].is_last - - -#define TST_DECL_VARS(_type_) \ - int loc, rec, err_count = 0; \ - int warn_count __attribute__ ((unused)); \ - int seq_num = 0; \ - const char *locale; \ - int err_exp, ret_flg; \ - int errno_save = 0; \ - _type_ ret_exp; \ - _type_ ret - -#define TST_DO_TEST(o_func) \ - for (loc = 0; strcmp (TST_HEAD (o_func).locale, TST_LOC_end); ++loc) - - -#ifdef __UCLIBC_HAS_LOCALE__ -#define TST_HEAD_LOCALE(ofunc, s_func) \ - locale = TST_HEAD (ofunc).locale; \ - if (setlocale (LC_ALL, locale) == NULL) \ - { \ - fprintf (stderr, "Warning : can't set locale: %s\nskipping ...\n", \ - locale); \ - result (fp, C_LOCALES, s_func, locale, 0, 0, 0, "can't set locale"); \ - ++err_count; \ - continue; \ - } -#else -#define TST_HEAD_LOCALE(ofunc, s_func) \ - locale = TST_HEAD (ofunc).locale; \ - if (strcmp(locale, "C") == 0) \ - { \ - if (setlocale (LC_ALL, locale) == NULL) \ - { \ - fprintf (stderr, "Warning : can't set locale: %s\nskipping ...\n", \ - locale); \ - result (fp, C_LOCALES, s_func, locale, 0, 0, 0, "can't set locale"); \ - ++err_count; \ - continue; \ - } \ - } \ - else \ - { \ - fprintf (stderr, "Warning : locale %s unsupported\n\n", \ - locale); \ - result (fp, C_LOCALES, s_func, locale, 0, 0, 0, "unsupported"); \ - continue; \ - } -#endif - -#define TST_DO_REC(ofunc) \ - for (rec=0; !TST_IS_LAST (ofunc); ++rec) - -#define TST_DO_SEQ(_count_) \ - for (seq_num=0; seq_num < _count_; seq_num++) - -#define TST_GET_ERRET(_ofunc_) \ - err_exp = TST_EXPECT (_ofunc_).err_val; \ - ret_flg = TST_EXPECT (_ofunc_).ret_flg; \ - ret_exp = TST_EXPECT (_ofunc_).ret_val - -#define TST_GET_ERRET_SEQ(_ofunc_) \ - err_exp = TST_EXPECT_SEQ (_ofunc_).err_val; \ - ret_flg = TST_EXPECT_SEQ (_ofunc_).ret_flg; \ - ret_exp = TST_EXPECT_SEQ (_ofunc_).ret_val - -#define TST_CLEAR_ERRNO \ - errno = 0 - -#define TST_SAVE_ERRNO \ - errno_save = errno - -/* Test value of ret and of errno if it should have a value. */ -#define TST_IF_RETURN(_s_func_) \ - if (err_exp != 0) \ - { \ - if (errno_save == err_exp) \ - { \ - result (fp, C_SUCCESS, _s_func_, locale, rec+1, seq_num+1, 1, \ - MS_PASSED); \ - } \ - else \ - { \ - err_count++; \ - result (fp, C_FAILURE, _s_func_, locale, rec+1, seq_num+1, 1, \ - "the value of errno is different from an expected value"); \ - } \ - } \ - \ - if (ret_flg == 1) \ - { \ - if (ret == ret_exp) \ - { \ - result (fp, C_SUCCESS, _s_func_, locale, rec+1, seq_num+1, 2, \ - MS_PASSED); \ - } \ - else \ - { \ - err_count++; \ - result (fp, C_FAILURE, _s_func_, locale, rec+1, seq_num+1, 2, \ - "the return value is different from an expected value"); \ - } \ - } \ - else - -#define TEX_ERRET_REC(_type_) \ - struct { \ - TMD_ERRET (_type_); \ - } - -#define TEX_ERRET_REC_SEQ(_type_, _count_) \ - struct { \ - struct { \ - TMD_ERRET (_type_); \ - } seq[ _count_ ]; \ - } - - - -/* ------------------ FUNCTION: ISW*() ------------------- */ - -#define TST_ISW_STRUCT(_FUNC_, _func_) \ - typedef \ - struct { \ - wint_t wc; \ - } TIN_ISW##_FUNC_##_REC; \ - typedef \ - TEX_ERRET_REC (int) TEX_ISW##_FUNC_##_REC; \ - TMD_RECHEAD (ISW##_FUNC_) - -#define TST_FUNC_ISW(_FUNC_, _func_) \ -int \ -tst_isw##_func_ (FILE *fp, int debug_flg) \ -{ \ - TST_DECL_VARS(int); \ - wint_t wc; \ - TST_DO_TEST (isw##_func_) \ - { \ - TST_HEAD_LOCALE (isw##_func_, S_ISW##_FUNC_); \ - TST_DO_REC(isw##_func_) \ - { \ - TST_GET_ERRET (isw##_func_); \ - wc = TST_INPUT (isw##_func_).wc; \ - ret = isw##_func_ (wc); \ - if (debug_flg) \ - { \ - fprintf (stdout, "isw*() [ %s : %d ] ret = %d\n", locale, \ - rec+1, ret); \ - } \ - \ - TST_IF_RETURN (S_ISW##_FUNC_) \ - { \ - if (ret != 0) \ - { \ - result (fp, C_SUCCESS, S_ISW##_FUNC_, locale, rec+1, \ - seq_num+1, 3, MS_PASSED); \ - } \ - else \ - { \ - err_count++; \ - result (fp, C_FAILURE, S_ISW##_FUNC_, locale, rec+1, \ - seq_num+1, 3, \ - "the function returned 0, but should be non-zero"); \ - } \ - } \ - } \ - } \ - \ - return err_count; \ -} - - - -/* ------------------ FUNCTION: TOW*() ------------------ */ - -#define TST_TOW_STRUCT(_FUNC_, _func_) \ - typedef \ - struct { \ - wint_t wc; \ - } TIN_TOW##_FUNC_##_REC; \ - typedef \ - TEX_ERRET_REC (wint_t) TEX_TOW##_FUNC_##_REC; \ - TMD_RECHEAD (TOW##_FUNC_) - -#define TST_FUNC_TOW(_FUNC_, _func_) \ -int \ -tst_tow##_func_ (FILE *fp, int debug_flg) \ -{ \ - TST_DECL_VARS (wint_t); \ - wint_t wc; \ - TST_DO_TEST (tow##_func_) \ - { \ - TST_HEAD_LOCALE (tow##_func_, S_TOW##_FUNC_); \ - TST_DO_REC (tow##_func_) \ - { \ - TST_GET_ERRET (tow##_func_); \ - wc = TST_INPUT (tow##_func_).wc; \ - ret = tow##_func_ (wc); \ - if (debug_flg) \ - { \ - fprintf (stdout, "tow*() [ %s : %d ] ret = 0x%x\n", \ - locale, rec+1, ret); \ - } \ - \ - TST_IF_RETURN (S_TOW##_FUNC_) { }; \ - } \ - } \ - \ - return err_count; \ -} - - -#endif /* TST_FUNCS_H */ diff --git a/test/locale-mbwc/tst_iswalnum.c b/test/locale-mbwc/tst_iswalnum.c deleted file mode 100644 index 95ba863f9..000000000 --- a/test/locale-mbwc/tst_iswalnum.c +++ /dev/null @@ -1,10 +0,0 @@ -/* - ISWALNUM: int iswalnum (wint_t wc) -*/ - -#define TST_FUNCTION iswalnum - -#include "tsp_common.c" -#include "dat_iswalnum.c" - -TST_FUNC_ISW (ALNUM, alnum); diff --git a/test/locale-mbwc/tst_iswalpha.c b/test/locale-mbwc/tst_iswalpha.c deleted file mode 100644 index 8eff2cc11..000000000 --- a/test/locale-mbwc/tst_iswalpha.c +++ /dev/null @@ -1,10 +0,0 @@ -/* - ISWALPHA: int iswalpha (wint_t wc); -*/ - -#define TST_FUNCTION iswalpha - -#include "tsp_common.c" -#include "dat_iswalpha.c" - -TST_FUNC_ISW (ALPHA, alpha); diff --git a/test/locale-mbwc/tst_iswcntrl.c b/test/locale-mbwc/tst_iswcntrl.c deleted file mode 100644 index 4e1baa8dc..000000000 --- a/test/locale-mbwc/tst_iswcntrl.c +++ /dev/null @@ -1,10 +0,0 @@ -/* - ISWCNTRL: int iswcntrl (wint_t wc); -*/ - -#define TST_FUNCTION iswcntrl - -#include "tsp_common.c" -#include "dat_iswcntrl.c" - -TST_FUNC_ISW (CNTRL, cntrl); diff --git a/test/locale-mbwc/tst_iswctype.c b/test/locale-mbwc/tst_iswctype.c deleted file mode 100644 index 3e79e092d..000000000 --- a/test/locale-mbwc/tst_iswctype.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - ISWCTYPE: int iswctype (wint_t wc, wctype_t desc); -*/ - -#define TST_FUNCTION iswctype - -#include "tsp_common.c" -#include "dat_iswctype.c" - - -int -tst_iswctype (FILE *fp, int debug_flg) -{ - TST_DECL_VARS (int); - wint_t wc; - const char *ts; - - TST_DO_TEST (iswctype) - { - TST_HEAD_LOCALE (iswctype, S_ISWCTYPE); - TST_DO_REC (iswctype) - { - TST_GET_ERRET (iswctype); - wc = TST_INPUT (iswctype).wc; - ts = TST_INPUT (iswctype).ts; - ret = iswctype (wc, wctype (ts)); - TST_SAVE_ERRNO; - if (debug_flg) - { - fprintf (stdout, "iswctype() [ %s : %d ] ret = %d\n", - locale, rec+1, ret); - } - - TST_IF_RETURN (S_ISWCTYPE) - { - if (ret != 0) - { - result (fp, C_SUCCESS, S_ISWCTYPE, locale, rec+1, - seq_num+1, 3, MS_PASSED); - } - else - { - err_count++; - result (fp, C_FAILURE, S_ISWCTYPE, locale, rec+1, - seq_num+1, 3, - "the function returned 0, but should be non-zero"); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_iswdigit.c b/test/locale-mbwc/tst_iswdigit.c deleted file mode 100644 index 5429ed07d..000000000 --- a/test/locale-mbwc/tst_iswdigit.c +++ /dev/null @@ -1,11 +0,0 @@ -/* - ISWDIGIT: int iswdigit (wint_t wc); -*/ - - -#define TST_FUNCTION iswdigit - -#include "tsp_common.c" -#include "dat_iswdigit.c" - -TST_FUNC_ISW (DIGIT, digit); diff --git a/test/locale-mbwc/tst_iswgraph.c b/test/locale-mbwc/tst_iswgraph.c deleted file mode 100644 index 91a70e2d3..000000000 --- a/test/locale-mbwc/tst_iswgraph.c +++ /dev/null @@ -1,10 +0,0 @@ -/* - ISWGRAPH: int iswgraph (wint_t wc); -*/ - -#define TST_FUNCTION iswgraph - -#include "tsp_common.c" -#include "dat_iswgraph.c" - -TST_FUNC_ISW (GRAPH, graph); diff --git a/test/locale-mbwc/tst_iswlower.c b/test/locale-mbwc/tst_iswlower.c deleted file mode 100644 index e0911001d..000000000 --- a/test/locale-mbwc/tst_iswlower.c +++ /dev/null @@ -1,10 +0,0 @@ -/* - ISWLOWER: int iswlower (wint_t wc); -*/ - -#define TST_FUNCTION iswlower - -#include "tsp_common.c" -#include "dat_iswlower.c" - -TST_FUNC_ISW (LOWER, lower); diff --git a/test/locale-mbwc/tst_iswprint.c b/test/locale-mbwc/tst_iswprint.c deleted file mode 100644 index 8d5bde51f..000000000 --- a/test/locale-mbwc/tst_iswprint.c +++ /dev/null @@ -1,10 +0,0 @@ -/* - ISWPRINT: int iswprint (wint_t wc); -*/ - -#define TST_FUNCTION iswprint - -#include "tsp_common.c" -#include "dat_iswprint.c" - -TST_FUNC_ISW (PRINT, print); diff --git a/test/locale-mbwc/tst_iswpunct.c b/test/locale-mbwc/tst_iswpunct.c deleted file mode 100644 index 4749d61e3..000000000 --- a/test/locale-mbwc/tst_iswpunct.c +++ /dev/null @@ -1,10 +0,0 @@ -/* - ISWPUNCT: int iswpunct (wint_t wc); -*/ - -#define TST_FUNCTION iswpunct - -#include "tsp_common.c" -#include "dat_iswpunct.c" - -TST_FUNC_ISW (PUNCT, punct); diff --git a/test/locale-mbwc/tst_iswspace.c b/test/locale-mbwc/tst_iswspace.c deleted file mode 100644 index 6c26d5ff6..000000000 --- a/test/locale-mbwc/tst_iswspace.c +++ /dev/null @@ -1,10 +0,0 @@ -/* - ISWSPACE: int iswspace (wint_t wc); -*/ - -#define TST_FUNCTION iswspace - -#include "tsp_common.c" -#include "dat_iswspace.c" - -TST_FUNC_ISW (SPACE, space); diff --git a/test/locale-mbwc/tst_iswupper.c b/test/locale-mbwc/tst_iswupper.c deleted file mode 100644 index dfe5a5b35..000000000 --- a/test/locale-mbwc/tst_iswupper.c +++ /dev/null @@ -1,10 +0,0 @@ -/* - ISWUPPER: int iswupper (wint_t wc); -*/ - -#define TST_FUNCTION iswupper - -#include "tsp_common.c" -#include "dat_iswupper.c" - -TST_FUNC_ISW (UPPER, upper); diff --git a/test/locale-mbwc/tst_iswxdigit.c b/test/locale-mbwc/tst_iswxdigit.c deleted file mode 100644 index 5f9c0c5d5..000000000 --- a/test/locale-mbwc/tst_iswxdigit.c +++ /dev/null @@ -1,10 +0,0 @@ -/* - ISWXDIGIT: int iswxdigit (wint_t wc); -*/ - -#define TST_FUNCTION iswxdigit - -#include "tsp_common.c" -#include "dat_iswxdigit.c" - -TST_FUNC_ISW (XDIGIT, xdigit); diff --git a/test/locale-mbwc/tst_mblen.c b/test/locale-mbwc/tst_mblen.c deleted file mode 100644 index 35ccf6c1a..000000000 --- a/test/locale-mbwc/tst_mblen.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - MBLEN: int mblen (char *s, size_t n) -*/ - -#define TST_FUNCTION mblen - -#include "tsp_common.c" -#include "dat_mblen.c" - -int -tst_mblen (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (int); - char s_flg; - const char *s_in; - size_t n; - - TST_DO_TEST (mblen) - { - TST_HEAD_LOCALE (mblen, S_MBLEN); - TST_DO_REC (mblen) - { - TST_GET_ERRET (mblen); - s_flg = TST_INPUT (mblen).s_flg; - s_in = TST_INPUT (mblen).s; - n = TST_INPUT (mblen).n; - - if (s_flg == 0) - { - s_in = NULL; - } - - if (n == USE_MBCURMAX) - { - n = MB_CUR_MAX; - } - - TST_CLEAR_ERRNO; - ret = mblen (s_in, n); - TST_SAVE_ERRNO; - - TST_IF_RETURN (S_MBLEN) - { - if (s_in == NULL) - { /* state dependency */ - if (ret_exp == +1) - { /* state-dependent */ - if (ret != 0) - { - /* non-zero: state-dependent encoding */ - Result (C_SUCCESS, S_MBLEN, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_MBLEN, CASE_3, - "should be state-dependent encoding, " - "but the return value shows it is" - " state-independent"); - } - } - - if (ret_exp == 0) - { /* state-independent */ - if (ret == 0) - { - /* non-zero: state-dependent encoding */ - Result (C_SUCCESS, S_MBLEN, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_MBLEN, CASE_3, - "should be state-independent encoding, " - "but the return value shows it is" - " state-dependent"); - } - } - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_mbrlen.c b/test/locale-mbwc/tst_mbrlen.c deleted file mode 100644 index b8681b721..000000000 --- a/test/locale-mbwc/tst_mbrlen.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - MBRLEN: size_t mbrlen (char *s, size_t n, mbstate_t *ps) -*/ - -#define TST_FUNCTION mbrlen - -#include "tsp_common.c" -#include "dat_mbrlen.c" - - -int -tst_mbrlen (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (size_t); - char s_flg; - const char *s_in; - size_t n; - char t_flg; - char t_ini; - static mbstate_t s = { 0 }; - mbstate_t *ps; - - TST_DO_TEST (mbrlen) - { - TST_HEAD_LOCALE (mbrlen, S_MBRLEN); - TST_DO_REC (mbrlen) - { - if (mbrlen (NULL, 0, &s) != 0) - { - err_count++; - Result (C_FAILURE, S_MBRLEN, CASE_3, - "Initialization (external mbstate object) failed " - "- skipped this test case."); - continue; - } - - TST_DO_SEQ (MBRLEN_SEQNUM) - { - TST_GET_ERRET_SEQ (mbrlen); - s_flg = TST_INPUT_SEQ (mbrlen).s_flg; - s_in = TST_INPUT_SEQ (mbrlen).s; - n = TST_INPUT_SEQ (mbrlen).n; - t_flg = TST_INPUT_SEQ (mbrlen).t_flg; - t_ini = TST_INPUT_SEQ (mbrlen).t_init; - if (s_flg == 0) - { - s_in = NULL; - } - - if (n == USE_MBCURMAX) /* rewrite tst_mblen() like this */ - { - n = MB_CUR_MAX; - } - - ps = (t_flg == 0) ? NULL : &s; - - if (t_ini != 0) - { - memset (&s, 0, sizeof (s)); - mbrlen (NULL, 0, NULL); - } - - TST_CLEAR_ERRNO; - ret = mbrlen (s_in, n, ps); - TST_SAVE_ERRNO; - - if (debug_flg) - { - fprintf (stdout, "mbrlen() [ %s : %d : %d ] ret = %zd\n", - locale, rec + 1, seq_num + 1, ret); - fprintf (stdout, " errno = %d\n", errno_save); - } - - TST_IF_RETURN (S_MBRLEN) - { - }; - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_mbrtowc.c b/test/locale-mbwc/tst_mbrtowc.c deleted file mode 100644 index b6247ce8c..000000000 --- a/test/locale-mbwc/tst_mbrtowc.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - MBRTOWC: size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, - mbstate_t *ps) -*/ - -#define TST_FUNCTION mbrtowc - -#include "tsp_common.c" -#include "dat_mbrtowc.c" - - -int -tst_mbrtowc (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (size_t); - char w_flg, s_flg; - char *s; - size_t n; - char t_flg; - static mbstate_t t = { 0 }; - mbstate_t *pt; - wchar_t wc, *pwc, wc_ex; - - TST_DO_TEST (mbrtowc) - { - TST_HEAD_LOCALE (mbrtowc, S_MBRTOWC); - TST_DO_REC (mbrtowc) - { - if (mbrtowc (NULL, "", 0, &t) != 0) - { - err_count++; - Result (C_FAILURE, S_MBRTOWC, CASE_3, - "Initialization failed - skipping this test case."); - continue; - } - - TST_DO_SEQ (MBRTOWC_SEQNUM) - { - TST_GET_ERRET_SEQ (mbrtowc); - w_flg = TST_INPUT_SEQ (mbrtowc).w_flg; - s_flg = TST_INPUT_SEQ (mbrtowc).s_flg; - s = TST_INPUT_SEQ (mbrtowc).s; - n = TST_INPUT_SEQ (mbrtowc).n; - t_flg = TST_INPUT_SEQ (mbrtowc).t_flg; - pwc = (w_flg == 0) ? NULL : &wc; - - if (s_flg == 0) - { - s = NULL; - } - - if (n == USE_MBCURMAX) - { - n = MB_CUR_MAX; - } - - pt = (t_flg == 0) ? NULL : &t; - TST_CLEAR_ERRNO; - ret = mbrtowc (pwc, s, n, pt); - TST_SAVE_ERRNO; - - if (debug_flg) - { - fprintf (stdout, "mbrtowc() [ %s : %d : %d ] ret = %zd\n", - locale, rec + 1, seq_num + 1, ret); - fprintf (stdout, " errno = %hd\n", - errno_save); - } - - TST_IF_RETURN (S_MBRTOWC) - { - }; - - if (pwc == NULL || s == NULL || ret == (size_t) - 1 - || ret == (size_t) - 2) - { - continue; - } - - wc_ex = TST_EXPECT_SEQ (mbrtowc).wc; - if (wc_ex == wc) - { - Result (C_SUCCESS, S_MBRTOWC, CASE_4, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_MBRTOWC, CASE_4, - "converted wc is different from an expected wc"); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_mbsrtowcs.c b/test/locale-mbwc/tst_mbsrtowcs.c deleted file mode 100644 index 3f3ea716b..000000000 --- a/test/locale-mbwc/tst_mbsrtowcs.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - MBSRTOWCS: size_t mbsrtowcs (wchar_t *ws, const char **s, size_t n, - mbstate_t *ps) -*/ - -#define TST_FUNCTION mbsrtowcs - -#include "tsp_common.c" -#include "dat_mbsrtowcs.c" - -int -tst_mbsrtowcs (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (size_t); - char w_flg; - const char *s, *p; - size_t n; - char t_flg, t_ini; - static mbstate_t t = { 0 }; - mbstate_t *pt; - wchar_t ws[WCSSIZE], *ws_ex, *wp; - int err, i; - - TST_DO_TEST (mbsrtowcs) - { - TST_HEAD_LOCALE (mbsrtowcs, S_MBSRTOWCS); - TST_DO_REC (mbsrtowcs) - { - s = ""; - if (mbsrtowcs (NULL, &s, 0, &t) != 0) - { - err_count++; - Result (C_FAILURE, S_MBSRTOWCS, CASE_3, - "Initialization failed - skipping this test case."); - continue; - } - - TST_DO_SEQ (MBSRTOWCS_SEQNUM) - { - TST_GET_ERRET_SEQ (mbsrtowcs); - w_flg = TST_INPUT_SEQ (mbsrtowcs).w_flg; - p = s = TST_INPUT_SEQ (mbsrtowcs).s; - n = TST_INPUT_SEQ (mbsrtowcs).n; - t_flg = TST_INPUT_SEQ (mbsrtowcs).t_flg; - t_ini = TST_INPUT_SEQ (mbsrtowcs).t_init; - wp = (w_flg == 0) ? NULL : ws; - - if (n == USE_MBCURMAX) - { - n = MB_CUR_MAX; - } - - pt = (t_flg == 0) ? NULL : &t; - - if (t_ini != 0) - { - memset (&t, 0, sizeof (t)); - } - - TST_CLEAR_ERRNO; - ret = mbsrtowcs (wp, &p, n, pt); - TST_SAVE_ERRNO; - - if (debug_flg) - { - fprintf (stderr, "mbsrtowcs: [ %d ] : ret = %zd\n", rec + 1, ret); - } - - TST_IF_RETURN (S_MBSRTOWCS) - { - }; - - if (wp == NULL || ret == (size_t) - 1 || ret == (size_t) - 2) - { - continue; - } - - ws_ex = TST_EXPECT_SEQ (mbsrtowcs).ws; - for (err = 0, i = 0; i < ret; i++) - { - if (debug_flg) - { - fprintf (stderr, - "mbsrtowcs: ws[%d] => 0x%lx : 0x%lx <= ws_ex[%d]\n", - i, (unsigned long int) ws[i], - (unsigned long int) ws_ex[i], i); - } - - if (ws[i] != ws_ex[i]) - { - err++; - err_count++; - Result (C_FAILURE, S_MBSRTOWCS, CASE_4, - "the converted wc string has " - "different value from an expected string"); - break; - } - } - - if (!err) - { - Result (C_SUCCESS, S_MBSRTOWCS, CASE_4, MS_PASSED); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_mbstowcs.c b/test/locale-mbwc/tst_mbstowcs.c deleted file mode 100644 index 878df6a96..000000000 --- a/test/locale-mbwc/tst_mbstowcs.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - MBSTOWCS: size_t mbstowcs (wchar_t *ws, char *s, size_t n) -*/ - -#define TST_FUNCTION mbstowcs - -#include "tsp_common.c" -#include "dat_mbstowcs.c" - -int -tst_mbstowcs (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (size_t); - char w_flg, s_flg; - const char *s; - size_t n; - wchar_t ws[WCSSIZE], *ws_ex, *wp; - int err, i; - - TST_DO_TEST (mbstowcs) - { - TST_HEAD_LOCALE (mbstowcs, S_MBSTOWCS); - TST_DO_REC (mbstowcs) - { - if (mbstowcs (NULL, "", 0) != 0) - { - err_count++; - Result (C_FAILURE, S_MBSTOWCS, CASE_3, - "Initialization failed - skipping this test case."); - continue; - } - - TST_DO_SEQ (MBSTOWCS_SEQNUM) - { - TST_GET_ERRET_SEQ (mbstowcs); - w_flg = TST_INPUT_SEQ (mbstowcs).w_flg; - s_flg = TST_INPUT_SEQ (mbstowcs).s_flg; - n = TST_INPUT_SEQ (mbstowcs).n; - - if (s_flg == 0) - s = NULL; - else - s = TST_INPUT_SEQ (mbstowcs).s; - - - wp = (wchar_t *) ((w_flg == 0) ? NULL : ws); - - TST_CLEAR_ERRNO; - ret = mbstowcs (wp, s, n); - TST_SAVE_ERRNO; - - if (debug_flg) - { - fprintf (stderr, "mbstowcs: ret = %zd\n", ret); - } - - TST_IF_RETURN (S_MBSTOWCS) - { - }; - - if (s == NULL || wp == NULL || ret == (size_t) - 1) - { - continue; - } - - ws_ex = TST_EXPECT_SEQ (mbstowcs).ws; - - for (err = 0, i = 0; i < ret; i++) - { - if (debug_flg) - { - fprintf (stderr, - "mbstowcs: ws[%d] => 0x%lx : 0x%lx <= ws_ex[%d]\n", - i, (unsigned long int) ws[i], - (unsigned long int) ws_ex[i], i); - } - - if (ws[i] != ws_ex[i]) - { - err++; - err_count++; - Result (C_FAILURE, S_MBSTOWCS, CASE_4, - "the converted wc string has " - "different value from an expected string"); - break; - } - } - - if (!err) - { - Result (C_SUCCESS, S_MBSTOWCS, CASE_4, MS_PASSED); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_mbtowc.c b/test/locale-mbwc/tst_mbtowc.c deleted file mode 100644 index 7c274f66c..000000000 --- a/test/locale-mbwc/tst_mbtowc.c +++ /dev/null @@ -1,130 +0,0 @@ -/* - MBTOWC: int mbtowc (wchar_t *wc, char *s, size_t n) -*/ - -#define TST_FUNCTION mbtowc - -#include "tsp_common.c" -#include "dat_mbtowc.c" - - -int -tst_mbtowc (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (int); - char w_flg, s_flg; - const char *s_in; - size_t n; - wchar_t wc, wc_ex, *wp; - - TST_DO_TEST (mbtowc) - { - TST_HEAD_LOCALE (mbtowc, S_MBTOWC); - TST_DO_REC (mbtowc) - { - if (mbstowcs (NULL, "", 0) != 0) - { - err_count++; - Result (C_FAILURE, S_MBSTOWCS, CASE_3, - "Initialization failed - skipping this test case."); - continue; - } - - TST_DO_SEQ (MBTOWC_SEQNUM) - { - TST_GET_ERRET_SEQ (mbtowc); - w_flg = TST_INPUT_SEQ (mbtowc).w_flg; - s_flg = TST_INPUT_SEQ (mbtowc).s_flg; - n = TST_INPUT_SEQ (mbtowc).n; - - if (n == USE_MBCURMAX) - { - n = MB_CUR_MAX; - } - - if (s_flg == 0) - s_in = NULL; - else - s_in = TST_INPUT_SEQ (mbtowc).s; - - wp = (wchar_t *) ((w_flg == 0) ? NULL : &wc); - - /* XXX Clear the internal state. We should probably have - a flag for this. */ - mbtowc (NULL, NULL, 0); - - TST_CLEAR_ERRNO; - ret = mbtowc (wp, s_in, n); - TST_SAVE_ERRNO; - - if (debug_flg) - { - fprintf (stdout, "mbtowc() [ %s : %d ] ret = %d\n", locale, - rec + 1, ret); - fprintf (stdout, " errno = %d\n", - errno_save); - } - - TST_IF_RETURN (S_MBTOWC) - { - if (s_in == NULL) - { /* state dependency */ - if (ret_exp == +1) - { /* state-dependent */ - if (ret != 0) - { - /* Non-zero: state-dependent encoding. */ - Result (C_SUCCESS, S_MBTOWC, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_MBTOWC, CASE_3, - "should be state-dependent encoding, " - "but a return value shows it is " - "state-independent"); - } - } - - if (ret_exp == 0) - { /* state-independent */ - if (ret == 0) - { - /* Non-zero: state-dependent encoding. */ - Result (C_SUCCESS, S_MBTOWC, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_MBTOWC, CASE_3, - "should be state-independent encoding, " - "but a return value shows it is " - "state-dependent"); - } - } - } - } - - if ((wp == NULL || s_in == NULL || s_in[0] == 0) || ret <= 0) - { - continue; - } - - wc_ex = TST_EXPECT_SEQ (mbtowc).wc; - - if (wc_ex == wc) - { - Result (C_SUCCESS, S_MBTOWC, CASE_4, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_MBTOWC, CASE_4, - "converted wc is different from an expected wc"); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_strcoll.c b/test/locale-mbwc/tst_strcoll.c deleted file mode 100644 index 4c5a84f69..000000000 --- a/test/locale-mbwc/tst_strcoll.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - STRCOLL: int strcoll (const char *s1, const char *s2) -*/ - -#define TST_FUNCTION strcoll - -#include "tsp_common.c" -#include "dat_strcoll.c" - -int -tst_strcoll (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (int); - const char *s1, *s2; - - TST_DO_TEST (strcoll) - { - TST_HEAD_LOCALE (strcoll, S_STRCOLL); - TST_DO_REC (strcoll) - { - TST_GET_ERRET (strcoll); - s1 = TST_INPUT (strcoll).s1; - s2 = TST_INPUT (strcoll).s2; - - TST_CLEAR_ERRNO; - ret = strcoll (s1, s2); - TST_SAVE_ERRNO; - - if (debug_flg) - { - fprintf (stdout, "strcoll() [ %s : %d ] ret = %d\n", locale, - rec + 1, ret); - fprintf (stdout, " errno = %d\n", - errno_save); - fprintf (stdout, " LC_COLLATE = %s\n", - (setlocale (LC_COLLATE, NULL)) ? setlocale (LC_COLLATE, - NULL) : ""); - } - - TST_IF_RETURN (S_STRCOLL) - { - if (ret_exp == +1) - { - if (ret > 0) - { - Result (C_SUCCESS, S_STRCOLL, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_STRCOLL, CASE_3, - "the return value should be greater than 0," - " but is not ..."); - } - } - else if (ret_exp == -1) - { - if (ret < 0) - { - Result (C_SUCCESS, S_STRCOLL, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_STRCOLL, CASE_3, - "the return value should less than 0, but not ..."); - } - } - else if (ret_exp != 0) - { - if (debug_flg) - { - fprintf (stderr, "*** Warning *** : tst_strcoll : " - "(check the test data); should set ret_flg=1" - " to check a return value"); - } - - warn_count++; - Result (C_INVALID, S_WCSCHR, CASE_3, "(check the test data); " - "should set ret_flg=1 to check a return value"); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_strfmon.c b/test/locale-mbwc/tst_strfmon.c deleted file mode 100644 index 88e93167d..000000000 --- a/test/locale-mbwc/tst_strfmon.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - STRFMON: size_t strfmon (char *buf, size_t nbyte, const char *fmt, ...) -*/ - -#define TST_FUNCTION strfmon - -#include "tsp_common.c" -#include "dat_strfmon.c" -#include - -int -tst_strfmon (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (size_t); - char buf[MONSIZE], *mon; - size_t nbt; - char *fmt; - double val; - - TST_DO_TEST (strfmon) - { - TST_HEAD_LOCALE (strfmon, S_STRFMON); - TST_DO_REC (strfmon) - { - TST_GET_ERRET (strfmon); - nbt = TST_INPUT (strfmon).nbytes; - fmt = TST_INPUT (strfmon).fmt; - val = TST_INPUT (strfmon).val; - memset (buf, 0, MONSIZE); - if (nbt > MONSIZE) - { - err_count++; - Result (C_FAILURE, S_STRFMON, CASE_3, "buffer too small in test"); - continue; - } - - TST_CLEAR_ERRNO; - ret = strfmon (buf, nbt, fmt, val, val, val); - TST_SAVE_ERRNO; - - if (debug_flg) /* seems fprintf doesn't update the errno */ - { - fprintf (stdout, "strfmon() [ %s : %d ]\n", locale, rec + 1); - fprintf (stdout, " : err = %d | %s\n", errno_save, - strerror (errno)); - fprintf (stdout, " : ret = %zd; \t fmt = |%s|\n", ret, fmt); - fprintf (stdout, " : buf = |%s|\n\n", buf); - } - - TST_IF_RETURN (S_STRFMON) - { - }; - if (errno != 0 || ret == -1) - { - continue; - } - - mon = TST_EXPECT (strfmon).mon; - - if (!strcmp (buf, mon)) - { - Result (C_SUCCESS, S_STRFMON, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_STRFMON, CASE_3, "the formatted string is " - "different from an expected result"); - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_strxfrm.c b/test/locale-mbwc/tst_strxfrm.c deleted file mode 100644 index fdfeffc89..000000000 --- a/test/locale-mbwc/tst_strxfrm.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - STRXFRM: size_t strxfrm (char *s1, const char *s2, size_t n) -*/ - -#define TST_FUNCTION strxfrm - -#include "tsp_common.c" -#include "dat_strxfrm.c" - - -int -tst_strxfrm (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (size_t); - const char *org1, *org2; - char frm1[MBSSIZE], frm2[MBSSIZE]; - size_t n1, n2; - int ret_coll, ret_cmp; - - TST_DO_TEST (strxfrm) - { - TST_HEAD_LOCALE (strxfrm, S_STRXFRM); - TST_DO_REC (strxfrm) - { - TST_GET_ERRET (strxfrm); - org1 = TST_INPUT (strxfrm).org1; - org2 = TST_INPUT (strxfrm).org2; - n1 = TST_INPUT (strxfrm).n1; - n2 = TST_INPUT (strxfrm).n2; - - if (n1 < 0 || sizeof (frm1) < n1 || sizeof (frm2) < n2) - { - warn_count++; - Result (C_IGNORED, S_STRXFRM, CASE_9, - "input data n1 or n2 is invalid"); - continue; - } - - /* An errno and a return value are checked - only for 2nd strxfrm() call. - A result of 1st call is used for comparing - those 2 values by using strcmp(). - */ - - /*-- First call --*/ - - TST_CLEAR_ERRNO; - ret = strxfrm (frm1, org1, n1); - TST_SAVE_ERRNO; - - if (debug_flg) - { - fprintf (stdout, "strxfrm() [ %s : %d ] ( 1st call )\n", locale, - rec + 1); - fprintf (stdout, " : err = %d | %s\n", errno_save, - strerror (errno)); - fprintf (stdout, " : ret = %zu\n", ret); - fprintf (stdout, " : org = %s\n", org1); - } - - if (ret >= n1 || errno != 0) - { - warn_count++; - Result (C_INVALID, S_STRXFRM, CASE_8, - "got an error in fist strxfrm() call"); - continue; - } - - /*-- Second call --*/ - - TST_CLEAR_ERRNO; - ret = strxfrm (((n2 == 0) ? NULL : frm2), org2, n2); - TST_SAVE_ERRNO; - - if (debug_flg) - { - fprintf (stderr, " ..............( 2nd call )\n"); - fprintf (stdout, " : err = %d | %s\n", errno, - strerror (errno)); - fprintf (stdout, " : ret = %zu\n", ret); - fprintf (stdout, " : org = %s\n", org2); - } - - TST_IF_RETURN (S_STRXFRM) - { - }; - - if (n2 == 0 || ret >= n2 || errno != 0) - { -#if 0 - warn_count++; - Result (C_IGNORED, S_STRXFRM, CASE_7, "did not get a result"); -#endif - continue; - } - - /*-- strcoll & strcmp --*/ - - TST_CLEAR_ERRNO; - /* Depends on strcoll() ... not good though ... */ - ret_coll = strcoll (org1, org2); - - if (errno != 0) - { - /* bug * bug may get correct results ... */ - warn_count++; - Result (C_INVALID, S_STRXFRM, CASE_6, - "got an error in strcoll() call"); - continue; - } - - ret_cmp = strcmp (frm1, frm2); - - if ((ret_coll == 0 && ret_cmp == 0) - || (ret_coll < 0 && ret_cmp < 0) || (ret_coll > 0 && ret_cmp > 0)) - { - Result (C_SUCCESS, S_STRXFRM, CASE_3, - MS_PASSED "(depends on strcoll & strcmp)"); - } - else - { - err_count++; - Result (C_FAILURE, S_STRXFRM, CASE_3, - "results from strcoll & strcmp() do not match"); - } - - if (debug_flg) - { - fprintf (stdout, ".......... strcoll = %d <-> %d = strcmp\n", - ret_coll, ret_cmp); - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_swscanf.c b/test/locale-mbwc/tst_swscanf.c deleted file mode 100644 index 76445d75f..000000000 --- a/test/locale-mbwc/tst_swscanf.c +++ /dev/null @@ -1,137 +0,0 @@ -/* - SWSCANF: int swscanf (const wchar_t *ws, const wchar_t *fmt, ...); -*/ - -#define TST_FUNCTION swscanf - -#include "tsp_common.c" -#include "dat_swscanf.c" - -int -tst_swscanf (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (int); - wchar_t *ws; - wchar_t *fmt; - int val_int1; - unsigned val_int2; - float val_flt; - char val_c; - char val_s[MBSSIZE * 3]; - wchar_t val_S[WCSSIZE * 3], *exp_S; - int i; - - TST_DO_TEST (swscanf) - { - TST_HEAD_LOCALE (swscanf, S_SWSCANF); - TST_DO_REC (swscanf) - { - TST_GET_ERRET (swscanf); - ws = TST_INPUT (swscanf).ws; - fmt = TST_INPUT (swscanf).fmt; - val_int1 = val_int2 = val_flt = val_c = 0; - memset (val_s, 0, sizeof (val_s)); - memset (val_S, 0, sizeof (val_S)); - - TST_CLEAR_ERRNO; - - if (TST_INPUT (swscanf).wch) - { - ret = swscanf (ws, fmt, val_S); - } - else - { - ret = - swscanf (ws, fmt, &val_int1, &val_int2, &val_flt, &val_c, val_s); - } - - TST_SAVE_ERRNO; - - if (debug_flg) - { /* seems fprintf doesn't update errno */ - fprintf (stdout, "swscanf() [ %s : %d ] ret = %d\n", locale, - rec + 1, ret); - fprintf (stdout, " errno = %d\n", - errno_save); - fprintf (stdout, " collate = %s\n", - (setlocale (LC_COLLATE, NULL)) ? setlocale (LC_COLLATE, - NULL) : ""); - - if (TST_INPUT (swscanf).wch) - { - fprintf (stdout, " val_S[ 0 ] = 0x%lx\n", - (unsigned long int) val_S[0]); - } - else - { - fprintf (stdout, " val_int1 = %d\n", - val_int1); - fprintf (stdout, " val_int2 = %d\n", - val_int2); - fprintf (stdout, " val_flt = %f\n", - val_flt); - fprintf (stdout, " val_c = %c\n", - val_c); - fprintf (stdout, " val_s = %s\n", - val_s); - } - } - - TST_IF_RETURN (S_SWSCANF) - { - }; - - if (errno == 0 && TST_INPUT (swscanf).wch) - { - for (exp_S = TST_EXPECT (swscanf).val_S, i = 0; i < WCSSIZE * 3; - i++) - { - if (val_S[i] == L'\0' || exp_S[i] == L'\0') - { - if (val_S[i] != exp_S[i] && TST_INPUT (swscanf).wch == 'C') - { - err_count++; - Result (C_FAILURE, S_SWSCANF, CASE_4, - "the converted wide-char string is different" - " from an expected value."); - } - break; - } - - if (val_S[i] != exp_S[i]) - { - err_count++; - Result (C_FAILURE, S_SWSCANF, CASE_4, - "the converted wide-char string is different from" - " an expected value."); - break; - } - else - { - Result (C_SUCCESS, S_SWSCANF, CASE_4, MS_PASSED); - } - } - } - - if (errno == 0 && !TST_INPUT (swscanf).wch) - { - if (val_int1 != TST_EXPECT (swscanf).val_int || - val_int2 != TST_EXPECT (swscanf).val_uns || - val_flt != TST_EXPECT (swscanf).val_flt || - val_c != TST_EXPECT (swscanf).val_c || - strcmp (val_s, TST_EXPECT (swscanf).val_s)) - { - err_count++; - Result (C_FAILURE, S_SWSCANF, CASE_3, - "the converted values are different from expected values."); - } - else - { - Result (C_SUCCESS, S_SWSCANF, CASE_3, MS_PASSED); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_towctrans.c b/test/locale-mbwc/tst_towctrans.c deleted file mode 100644 index 1d874dc0f..000000000 --- a/test/locale-mbwc/tst_towctrans.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - TOWCTRANS: wint_t towctrans (wint_t wc, wctrans_t desc); -*/ - -#define TST_FUNCTION towctrans - -#include "tsp_common.c" -#include "dat_towctrans.c" - - -int -tst_towctrans (FILE *fp, int debug_flg) -{ - TST_DECL_VARS (wint_t); - wint_t wc; - const char *ts; -#if SHOJI_IS_RIGHT - int dummy=0; -#endif - wctrans_t wto; - - TST_DO_TEST (towctrans) - { - TST_HEAD_LOCALE (towctrans, S_TOWCTRANS); - TST_DO_REC (towctrans) - { - TST_GET_ERRET (towctrans); - wc = TST_INPUT (towctrans).wc; - ts = TST_INPUT (towctrans).ts; - -#if SHOJI_IS_RIGHT - if ((wto = wctrans (ts)) == (wctrans_t) 0) - { -#if 0 - result (fp, C_IGNORED, S_TOWCTRANS, locale, rec+1, seq_num+1, 3, - "Skip this data because the wctrans object is not invalid."); - warn_count++; - continue; -#else - wto = &dummy; /* not good ... */ -#endif - if (debug_flg) - { - fprintf (stdout, "towctrans() ------ wctrans() returnd 0.\n"); - } - } -#else - wto = wctrans (ts); -#endif - - TST_CLEAR_ERRNO; - ret = towctrans (wc, wto); - TST_SAVE_ERRNO; - - if (debug_flg) - { - fprintf (stdout, "towctrans() [ %s : %d ] ret = 0x%x\n", - locale, rec+1, ret); - fprintf (stdout, " errno = %d\n", - errno_save); - } - - TST_IF_RETURN (S_TOWCTRANS) - { - if (ret != 0) - { - result (fp, C_SUCCESS, S_TOWCTRANS, locale, rec+1, - seq_num+1, 3, MS_PASSED); - } - else - { - err_count++; - result (fp, C_FAILURE, S_TOWCTRANS, locale, rec+1, - seq_num+1, 3, - "the function returned 0, but should be non-zero"); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_towlower.c b/test/locale-mbwc/tst_towlower.c deleted file mode 100644 index 7719b0dae..000000000 --- a/test/locale-mbwc/tst_towlower.c +++ /dev/null @@ -1,11 +0,0 @@ -/* - TOWLOWER: int towlower (wint_t wc); -*/ - -#define TST_FUNCTION towlower - -#include "tsp_common.c" -#include "dat_towlower.c" - - -TST_FUNC_TOW (LOWER, lower); diff --git a/test/locale-mbwc/tst_towupper.c b/test/locale-mbwc/tst_towupper.c deleted file mode 100644 index a077d27d9..000000000 --- a/test/locale-mbwc/tst_towupper.c +++ /dev/null @@ -1,10 +0,0 @@ -/* - TOWUPPER: int towupper (wint_t wc); -*/ - -#define TST_FUNCTION towupper - -#include "tsp_common.c" -#include "dat_towupper.c" - -TST_FUNC_TOW (UPPER, upper); diff --git a/test/locale-mbwc/tst_types.h b/test/locale-mbwc/tst_types.h deleted file mode 100644 index 3d1827941..000000000 --- a/test/locale-mbwc/tst_types.h +++ /dev/null @@ -1,729 +0,0 @@ -/* - * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY - * - * FILE: tst_types.h - * - * Definitions of data types for each test function - */ - - -#ifndef TST_TYPES_H -#define TST_TYPES_H - -#include -#include -#include -#include "tst_funcs.h" -#include "tgn_funcdef.h" - -#define MBSSIZE 24 -#define WCSSIZE 12 -#define MONFMTSIZE 16 -#define MONSIZE 64 -#define USE_MBCURMAX 99 /* well, but ... */ -#define TST_DBL_EPS 2.22153e-16 -#define WCSTOK_SEQNUM 3 -#define MBLEN_SEQNUM 3 -#define MBTOWC_SEQNUM 3 -#define MBSTOWCS_SEQNUM 3 -#define WCTOMB_SEQNUM 3 -#define WCSTOMBS_SEQNUM 3 -#define MBRLEN_SEQNUM 3 -#define MBRTOWC_SEQNUM 3 -#define MBSRTOWCS_SEQNUM 3 -#define WCRTOMB_SEQNUM 3 -#define WCSRTOMBS_SEQNUM 3 - -/* Maximum numbers of test in one of the _loc arrays. */ -#define MAX_LOC_TEST 300 - - -/*----------------------------------------------------------------------*/ -/* FUNCTION */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - char *func_str; - int func_id; -} -TST_FID; - -typedef struct -{ - int func_id; - const char *locale; -} -TST_HEAD; - -typedef struct -{ - TST_HEAD *head; -} -TST_FUNCS; - - -/*----------------------------------------------------------------------*/ -/* ISW*: int isw* (wchar_t wc) */ -/*----------------------------------------------------------------------*/ - -TST_ISW_STRUCT (ALNUM, alnum); -TST_ISW_STRUCT (ALPHA, alpha); -TST_ISW_STRUCT (CNTRL, cntrl); -TST_ISW_STRUCT (DIGIT, digit); -TST_ISW_STRUCT (GRAPH, graph); -TST_ISW_STRUCT (LOWER, lower); -TST_ISW_STRUCT (PRINT, print); -TST_ISW_STRUCT (PUNCT, punct); -TST_ISW_STRUCT (SPACE, space); -TST_ISW_STRUCT (UPPER, upper); -TST_ISW_STRUCT (XDIGIT, xdigit); - -typedef struct -{ - wint_t wc; - const char *ts; -} -TIN_ISWCTYPE_REC; - -typedef -TEX_ERRET_REC (int) - TEX_ISWCTYPE_REC; -TMD_RECHEAD (ISWCTYPE); - - -/*----------------------------------------------------------------------*/ -/* MBLEN: int mblen (const char *s, size_t n) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - char s_flg; - char s[MBSSIZE]; - size_t n; -} -TIN_MBLEN_REC; - -typedef TEX_ERRET_REC (int) TEX_MBLEN_REC; -TMD_RECHEAD (MBLEN); - - -/*----------------------------------------------------------------------*/ -/* MBRLEN: size_t mbrlen (const char *s, size_t n, mbstate_t *ps) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - struct - { - int s_flg; - char s[MBSSIZE]; - size_t n; - int t_flg; - int t_init; - } - seq[WCSTOK_SEQNUM]; -} -TIN_MBRLEN_REC; - -typedef TEX_ERRET_REC_SEQ (size_t, MBRLEN_SEQNUM) TEX_MBRLEN_REC; -TMD_RECHEAD (MBRLEN); - - -/*----------------------------------------------------------------------*/ -/* MBRTOWC: size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, */ -/* mbstate_t *ps) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - struct - { - int w_flg; - int s_flg; - char s[MBSSIZE]; - size_t n; - int t_flg; - int t_init; - } - seq[MBRTOWC_SEQNUM]; -} -TIN_MBRTOWC_REC; - -typedef struct -{ - struct - { - TMD_ERRET (size_t); - wchar_t wc; - } - seq[MBRTOWC_SEQNUM]; -} -TEX_MBRTOWC_REC; - -TMD_RECHEAD (MBRTOWC); - - -/*----------------------------------------------------------------------*/ -/* MBSRTOWCS: size_t mbsrtowcs (wchar_t *ws, const char **s, size_t n, */ -/* mbstate_t *ps ) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - struct - { - int w_flg; - char s[MBSSIZE]; - size_t n; - int t_flg; - int t_init; - } - seq[MBSRTOWCS_SEQNUM]; -} -TIN_MBSRTOWCS_REC; - -typedef struct -{ - struct - { - TMD_ERRET (size_t); - wchar_t ws[WCSSIZE]; - } - seq[MBSRTOWCS_SEQNUM]; -} -TEX_MBSRTOWCS_REC; - -TMD_RECHEAD (MBSRTOWCS); - - -/*----------------------------------------------------------------------*/ -/* MBSTOWCS: size_t mbstowcs (wchar_t *ws, const char *s, size_t n) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - struct - { - int w_flg; - int s_flg; - const char *s; - size_t n; - } - seq[MBSTOWCS_SEQNUM]; -} -TIN_MBSTOWCS_REC; - -typedef TEX_MBSRTOWCS_REC TEX_MBSTOWCS_REC; -/* MBSRTOWCS_SEQNUM == MBSTOWCS_SEQNUM */ -TMD_RECHEAD (MBSTOWCS); - - -/*----------------------------------------------------------------------*/ -/* MBTOWC: int mbtowc (wchar_t *wc, const char *s, size_t n) */ -/*----------------------------------------------------------------------*/ - -typedef TIN_MBSTOWCS_REC TIN_MBTOWC_REC; -/* MBTOWC_SEQNUM == MBSTOWCS_SEQNUM */ - -typedef struct -{ - struct - { - TMD_ERRET (int); - wchar_t wc; - } - seq[MBTOWC_SEQNUM]; -} -TEX_MBTOWC_REC; - -TMD_RECHEAD (MBTOWC); - - -/*----------------------------------------------------------------------*/ -/* STRCOLL: int strcoll (const char *s1, const char *s2) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - char s1[MBSSIZE]; - char s2[MBSSIZE]; -} -TIN_STRCOLL_REC; - -typedef TEX_ERRET_REC (int) TEX_STRCOLL_REC; -TMD_RECHEAD (STRCOLL); - - -/*----------------------------------------------------------------------*/ -/* STRFMON: size_t strfmon (char *buf, size_t nbytes, */ -/* const char *fmt, ... ) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - int nbytes; - char fmt[MONFMTSIZE]; - double val; -} -TIN_STRFMON_REC; - -typedef struct -{ - TMD_ERRET (size_t); - char mon[MONSIZE]; -} -TEX_STRFMON_REC; - -TMD_RECHEAD (STRFMON); - - -/*----------------------------------------------------------------------*/ -/* STRXFRM: size_t strxfrm (char *s1, const char *s2, size_t n) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - char org1[MBSSIZE]; - char org2[MBSSIZE]; - size_t n1, n2; -} -TIN_STRXFRM_REC; - -typedef TEX_ERRET_REC (size_t) TEX_STRXFRM_REC; /* only for org2[] */ -TMD_RECHEAD (STRXFRM); - - -/*----------------------------------------------------------------------*/ -/* SWSCANF: int swscanf (const wchar_t *ws, const wchar_t *fmt, ...) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - wchar_t ws[WCSSIZE * 3]; - wchar_t fmt[WCSSIZE * 3]; - int wch; -} -TIN_SWSCANF_REC; - -typedef struct -{ - TMD_ERRET (int); - int val_int; /* %d */ - unsigned val_uns; /* %u */ - float val_flt; /* %f */ - int val_c; /* %c */ - char val_s[MBSSIZE * 2]; /* %s */ - wchar_t val_S[WCSSIZE * 2]; /* %lc, %ls, %C, %S */ -} -TEX_SWSCANF_REC; - -TMD_RECHEAD (SWSCANF); - - -/*----------------------------------------------------------------------*/ -/* TOWCTRANS: wint_t towctrans (wint_t wc, wctrans_t desc) */ -/*----------------------------------------------------------------------*/ - -typedef TIN_ISWCTYPE_REC TIN_TOWCTRANS_REC; -typedef TEX_ERRET_REC (wint_t) TEX_TOWCTRANS_REC; -TMD_RECHEAD (TOWCTRANS); - - -/*----------------------------------------------------------------------*/ -/* TOW*ER: wint_t tow*er (wint_t wc) */ -/*----------------------------------------------------------------------*/ - -TST_TOW_STRUCT (LOWER, lower); -TST_TOW_STRUCT (UPPER, upper); - - -/*----------------------------------------------------------------------*/ -/* WCRTOMB: wchar_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - int s_flg; - wchar_t wc; - int t_flg; - int t_init; -} -TIN_WCRTOMB_REC; - -typedef struct -{ - TMD_ERRET (wchar_t); - char s[MBSSIZE]; -} -TEX_WCRTOMB_REC; - -TMD_RECHEAD (WCRTOMB); - - -/*----------------------------------------------------------------------*/ -/* WCSCAT: wchar_t *wcscat (wchar_t *ws1, wchar_t *ws2) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - wchar_t ws1[WCSSIZE]; - wchar_t ws2[WCSSIZE]; -} -TIN_WCSCAT_REC; - -typedef struct -{ - TMD_ERRET (wchar_t *); - wchar_t ws[WCSSIZE]; -} -TEX_WCSCAT_REC; - -TMD_RECHEAD (WCSCAT); - - -/*----------------------------------------------------------------------*/ -/* WCSCHR: wchar_t *wcschr (wchar_t *ws, wchar_t wc); */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - wchar_t ws[WCSSIZE]; - wchar_t wc; -} -TIN_WCSCHR_REC; - -typedef TEX_ERRET_REC (wchar_t *) TEX_WCSCHR_REC; -TMD_RECHEAD (WCSCHR); - - -/*----------------------------------------------------------------------*/ -/* WCSCMP: int wcscmp (const wchar_t *ws1, const wchar_t *ws2) */ -/*----------------------------------------------------------------------*/ - -typedef TIN_WCSCAT_REC TIN_WCSCMP_REC; -typedef TEX_ERRET_REC (int) TEX_WCSCMP_REC; -TMD_RECHEAD (WCSCMP); - - -/*----------------------------------------------------------------------*/ -/* WCSCOLL: int wcscoll (const wchar_t *ws1, const wchar_t *ws2) */ -/*----------------------------------------------------------------------*/ - -typedef TIN_WCSCMP_REC TIN_WCSCOLL_REC; -typedef struct -{ - TMD_ERRET (int); - int cmp_flg; -} -TEX_WCSCOLL_REC; -TMD_RECHEAD (WCSCOLL); - - -/*----------------------------------------------------------------------*/ -/* WCSCPY: wchar_t *wcscpy (wchar_t *ws1, const wchar_t *ws2) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - wchar_t ws[WCSSIZE]; /* ws2: original string */ -} -TIN_WCSCPY_REC; - -typedef TEX_WCSCAT_REC TEX_WCSCPY_REC; -TMD_RECHEAD (WCSCPY); - - -/*----------------------------------------------------------------------*/ -/* WCSCSPN: size_t wcscspn (const wchar_t *ws1, const wchar_t *ws2) */ -/*----------------------------------------------------------------------*/ - -typedef TIN_WCSCAT_REC TIN_WCSCSPN_REC; -typedef TEX_ERRET_REC (size_t) TEX_WCSCSPN_REC; -TMD_RECHEAD (WCSCSPN); - - -/*----------------------------------------------------------------------*/ -/* WCSLEN: size_t wcslen (const wchar_t *ws) */ -/*----------------------------------------------------------------------*/ - -typedef TIN_WCSCPY_REC TIN_WCSLEN_REC; -typedef TEX_ERRET_REC (size_t) TEX_WCSLEN_REC; -TMD_RECHEAD (WCSLEN); - - -/*----------------------------------------------------------------------*/ -/* WCSNCAT: wchar_t *wcsncat (wchar_t *ws1, const wchar_t *ws2, */ -/* size_t n) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - wchar_t ws1[WCSSIZE]; - wchar_t ws2[WCSSIZE]; - size_t n; -} -TIN_WCSNCAT_REC; - -typedef TEX_WCSCAT_REC TEX_WCSNCAT_REC; -TMD_RECHEAD (WCSNCAT); - - -/*----------------------------------------------------------------------*/ -/* WCSNCMP: int *wcsncmp (const wchar_t *ws1, const wchar_t *ws2, */ -/* size_t n) */ -/*----------------------------------------------------------------------*/ - -typedef TIN_WCSNCAT_REC TIN_WCSNCMP_REC; -typedef TEX_ERRET_REC (int) TEX_WCSNCMP_REC; -TMD_RECHEAD (WCSNCMP); - - -/*----------------------------------------------------------------------*/ -/* WCSNCPY: wchar_t *wcsncpy (wchar_t *ws1, const wchar_t *ws2, */ -/* size_t n) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - wchar_t ws[WCSSIZE]; /* ws2: original string */ - size_t n; -} -TIN_WCSNCPY_REC; - -typedef TEX_WCSCPY_REC TEX_WCSNCPY_REC; -TMD_RECHEAD (WCSNCPY); - - -/*----------------------------------------------------------------------*/ -/* WCSPBRK: wchar_t *wcspbrk (const wchar_t *ws1, const wchar_t *ws2) */ -/*----------------------------------------------------------------------*/ - -typedef TIN_WCSCSPN_REC TIN_WCSPBRK_REC; - -typedef struct -{ - TMD_ERRET (wchar_t *); - wchar_t wc; -} -TEX_WCSPBRK_REC; - -TMD_RECHEAD (WCSPBRK); - - -/*----------------------------------------------------------------------*/ -/* WCSRTOMBS: size_t wcsrtombs (char *s, const wchar_t **ws, size_t n, */ -/* mbstate_t *ps) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - int s_flg; - int w_flg; /* don't need this */ - wchar_t ws[WCSSIZE]; - size_t n; - int t_flg; - int t_init; -} -TIN_WCSRTOMBS_REC; - -typedef struct -{ - TMD_ERRET (size_t); - char s[MBSSIZE]; -} -TEX_WCSRTOMBS_REC; - -TMD_RECHEAD (WCSRTOMBS); - - -/*----------------------------------------------------------------------*/ -/* WCSSPN: size_t wcsspn (const wchar_t *ws1, const wchar_t *ws2) */ -/*----------------------------------------------------------------------*/ - -typedef TIN_WCSCSPN_REC TIN_WCSSPN_REC; -typedef TEX_WCSCSPN_REC TEX_WCSSPN_REC; -TMD_RECHEAD (WCSSPN); - - -/*----------------------------------------------------------------------*/ -/* WCSSTR: wchar_t *wcsstr (const wchar_t *ws1, const wchar_t *ws2) */ -/*----------------------------------------------------------------------*/ - -typedef TIN_WCSCSPN_REC TIN_WCSSTR_REC; -typedef TEX_ERRET_REC (wchar_t *) TEX_WCSSTR_REC; -TMD_RECHEAD (WCSSTR); - - -/*----------------------------------------------------------------------*/ -/* WCSTOD: double wcstod (const wchar_t *np, wchar_t **endp) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - wchar_t np[WCSSIZE]; -} -TIN_WCSTOD_REC; - -typedef struct -{ - TMD_ERRET (double); - double val; - wchar_t fwc; -} -TEX_WCSTOD_REC; - -TMD_RECHEAD (WCSTOD); - - -/*----------------------------------------------------------------------*/ -/* WCSTOK: wchar_t *wcstok (wchar_t *ws, const wchar_t *dlm, */ -/* wchar_t **pt) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - struct - { - int w_flg; - wchar_t ws[WCSSIZE]; - wchar_t dt[WCSSIZE]; /* delimiter */ - } - seq[WCSTOK_SEQNUM]; -} -TIN_WCSTOK_REC; - -typedef struct -{ - struct - { - TMD_ERRET (wchar_t *); - wchar_t ws[WCSSIZE]; - } - seq[WCSTOK_SEQNUM]; -} -TEX_WCSTOK_REC; - -TMD_RECHEAD (WCSTOK); - - -/*----------------------------------------------------------------------*/ -/* WCSTOMBS: size_t wcstombs (char s, const wchar_t *ws, size_t n) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - int s_flg; - int w_flg; /* currently we don't need it. */ - wchar_t ws[WCSSIZE]; - size_t n; -} -TIN_WCSTOMBS_REC; - -typedef struct -{ - TMD_ERRET (size_t); - char s[MBSSIZE]; -} -TEX_WCSTOMBS_REC; - -TMD_RECHEAD (WCSTOMBS); - - -/*----------------------------------------------------------------------*/ -/* WCSWIDTH: int wcswidth (const wchar_t *ws, size_t n) */ -/*----------------------------------------------------------------------*/ - -typedef TIN_WCSNCPY_REC TIN_WCSWIDTH_REC; -typedef TEX_ERRET_REC (int) TEX_WCSWIDTH_REC; -TMD_RECHEAD (WCSWIDTH); - - -/*----------------------------------------------------------------------*/ -/* WCSXFRM: size_t wcsxfrm (wchar_t *ws1, const wchar_t *ws2, size_t n)*/ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - wchar_t org1[WCSSIZE]; - wchar_t org2[WCSSIZE]; - int n1, n2; -} -TIN_WCSXFRM_REC; - -typedef TEX_ERRET_REC (size_t) TEX_WCSXFRM_REC; /* only for org2[] */ -TMD_RECHEAD (WCSXFRM); - - -/*----------------------------------------------------------------------*/ -/* WCTOB: int wctob (wint_t wc) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - wint_t wc; -} -TIN_WCTOB_REC; - -typedef TEX_ERRET_REC (int) TEX_WCTOB_REC; -TMD_RECHEAD (WCTOB); - - -/*----------------------------------------------------------------------*/ -/* WCTOMB: int wctomb (char *s, wchar_t wc) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - int s_flg; - wchar_t wc; -} -TIN_WCTOMB_REC; - -typedef struct -{ - TMD_ERRET (int); - char s[MBSSIZE]; -} -TEX_WCTOMB_REC; - -TMD_RECHEAD (WCTOMB); - - -/*----------------------------------------------------------------------*/ -/* WCTRANS: wctrans_t wctrans (const char *charclass) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - char class[MBSSIZE]; -} -TIN_WCTRANS_REC; - -typedef TEX_ERRET_REC (wctrans_t) TEX_WCTRANS_REC; -TMD_RECHEAD (WCTRANS); - - -/*----------------------------------------------------------------------*/ -/* WCTYPE: wctype_t wctype (const char *class) */ -/*----------------------------------------------------------------------*/ - -typedef TIN_WCTRANS_REC TIN_WCTYPE_REC; -typedef TEX_ERRET_REC (wctype_t) TEX_WCTYPE_REC; -TMD_RECHEAD (WCTYPE); - - -/*----------------------------------------------------------------------*/ -/* WCWIDTH: int wcwidth (wchar_t wc) */ -/*----------------------------------------------------------------------*/ - -typedef struct -{ - wchar_t wc; -} -TIN_WCWIDTH_REC; - -typedef TEX_ERRET_REC (int) TEX_WCWIDTH_REC; -TMD_RECHEAD (WCWIDTH); - -#endif /* TST_TYPES_H */ diff --git a/test/locale-mbwc/tst_wcrtomb.c b/test/locale-mbwc/tst_wcrtomb.c deleted file mode 100644 index 0029a4940..000000000 --- a/test/locale-mbwc/tst_wcrtomb.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - WCRTOMB: wchar_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps) -*/ - -#define TST_FUNCTION wcrtomb - -#include "tsp_common.c" -#include "dat_wcrtomb.c" - - -int -tst_wcrtomb (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (wchar_t); - wchar_t wc; - char s[MBSSIZE], *s_in, *s_ex; - char t_flg, t_ini; - static mbstate_t t = { 0 }; - mbstate_t *pt; - int err, i; - - TST_DO_TEST (wcrtomb) - { - TST_HEAD_LOCALE (wcrtomb, S_WCRTOMB); - TST_DO_REC (wcrtomb) - { - TST_GET_ERRET (wcrtomb); - s_in = ((TST_INPUT (wcrtomb).s_flg) == 0) ? (char *) NULL : s; - wc = TST_INPUT (wcrtomb).wc; - t_flg = TST_INPUT (wcrtomb).t_flg; - t_ini = TST_INPUT (wcrtomb).t_init; - pt = (t_flg == 0) ? NULL : &t; - - if (t_ini != 0) - { - memset (&t, 0, sizeof (t)); - } - - TST_CLEAR_ERRNO; - ret = wcrtomb (s_in, wc, pt); - TST_SAVE_ERRNO; - - if (debug_flg) - { - fprintf (stdout, "wcrtomb() [ %s : %d ] ret = %lu\n", locale, - rec + 1, (unsigned long int) ret); - fprintf (stdout, " errno = %d\n", errno_save); - } - - TST_IF_RETURN (S_WCRTOMB) - { - }; - - s_ex = TST_EXPECT (wcrtomb).s; - - if (s_in) - { - for (i = 0, err = 0; *(s_ex + i) != 0 && i < MBSSIZE; i++) - { - if (s_in[i] != s_ex[i]) - { - err++; - err_count++; - Result (C_FAILURE, S_WCRTOMB, CASE_4, - "copied string is different from an " - "expected string"); - break; - } - } - if (!err) - { - Result (C_SUCCESS, S_WCRTOMB, CASE_4, MS_PASSED); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcscat.c b/test/locale-mbwc/tst_wcscat.c deleted file mode 100644 index 3dc98091c..000000000 --- a/test/locale-mbwc/tst_wcscat.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - WCSCAT: wchar_t *wcscat (wchar_t *ws1, const wchar_t *ws2); -*/ - -#define TST_FUNCTION wcscat - -#include "tsp_common.c" -#include "dat_wcscat.c" - -int -tst_wcscat (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (wchar_t *); - wchar_t *ws1, *ws2, *ws_ex; - int i, err; - - TST_DO_TEST (wcscat) - { - TST_HEAD_LOCALE (wcscat, S_WCSCAT); - TST_DO_REC (wcscat) - { - TST_GET_ERRET (wcscat); - ws1 = TST_INPUT (wcscat).ws1; /* external value: size WCSSIZE */ - ws2 = TST_INPUT (wcscat).ws2; - - TST_CLEAR_ERRNO; - ret = wcscat (ws1, ws2); - TST_SAVE_ERRNO; - - TST_IF_RETURN (S_WCSCAT) - { - if (ret == ws1) - { - Result (C_SUCCESS, S_WCSCAT, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_WCSCAT, CASE_3, - "the return address may not be correct"); - } - } - - /* function specific test cases here */ - - if (ret == ws1) - { - ws_ex = TST_EXPECT (wcscat).ws; - for (err = 0, i = 0; - (ws1[i] != 0L || ws_ex[i] != 0L) && i < WCSSIZE; i++) - { - if (debug_flg) - { - fprintf (stdout, "tst_wcscat() : ws1[%d] = 0x%lx\n", i, - (unsigned long int) ws1[i]); - } - - if (ws1[i] != ws_ex[i]) - { - err++; - err_count++; - Result (C_FAILURE, S_WCSCAT, CASE_4, - "concatinated string is different from an " - "expected string"); - break; - } - } - - if (!err) - { - Result (C_SUCCESS, S_WCSCAT, CASE_4, MS_PASSED); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcschr.c b/test/locale-mbwc/tst_wcschr.c deleted file mode 100644 index b57a05a8f..000000000 --- a/test/locale-mbwc/tst_wcschr.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - WCSCHR: wchar_t *wcschr (wchar_t *ws, wchar_t wc); -*/ - -#define TST_FUNCTION wcschr - -#include "tsp_common.c" -#include "dat_wcschr.c" - -int -tst_wcschr (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (wchar_t *); - wchar_t *ws, wc; - - TST_DO_TEST (wcschr) - { - TST_HEAD_LOCALE (wcschr, S_WCSCHR); - TST_DO_REC (wcschr) - { - TST_GET_ERRET (wcschr); - ws = TST_INPUT (wcschr).ws; /* external value: size WCSSIZE */ - wc = TST_INPUT (wcschr).wc; - ret = wcschr (ws, wc); - - if (debug_flg) - { - if (ret) - { - fprintf (stderr, "wcschr: ret = 0x%lx\n", - (unsigned long int) *ret); - } - else - { - fprintf (stderr, "wcschr: ret = NULL pointer\n"); - } - } - - TST_IF_RETURN (S_WCSCHR) - { - if (ret == NULL) - { - if (debug_flg) - { - fprintf (stderr, "*** Warning *** tst_wcschr: " - "set ret_flg=1 to check NULL return value\n"); - } - - warn_count++; - Result (C_INVALID, S_WCSCHR, CASE_3, "(check the test data) " - "set ret_flg=1 to check NULL return value"); - continue; - } - - if (*ret == wc) - { - Result (C_SUCCESS, S_WCSCHR, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_WCSCHR, CASE_3, - "the returned address of the string seems to be wrong"); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcscmp.c b/test/locale-mbwc/tst_wcscmp.c deleted file mode 100644 index 594682ce9..000000000 --- a/test/locale-mbwc/tst_wcscmp.c +++ /dev/null @@ -1,40 +0,0 @@ -/* - WCSCMP: int wcscmp (const wchar_t *ws1, const wchar_t *ws2); -*/ - -#define TST_FUNCTION wcscmp - -#include "tsp_common.c" -#include "dat_wcscmp.c" - - -int -tst_wcscmp (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (int); - wchar_t *ws1, *ws2; - - TST_DO_TEST (wcscmp) - { - TST_HEAD_LOCALE (wcscmp, S_WCSCMP); - TST_DO_REC (wcscmp) - { - TST_GET_ERRET (wcscmp); - ws1 = TST_INPUT (wcscmp).ws1; - ws2 = TST_INPUT (wcscmp).ws2; - ret = wcscmp (ws1, ws2); - ret = (ret > 0 ? 1 : ret < 0 ? -1 : 0); - - if (debug_flg) - { - fprintf (stderr, "tst_wcscmp: ret = %d\n", ret); - } - - TST_IF_RETURN (S_WCSCMP) - { - }; - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcscoll.c b/test/locale-mbwc/tst_wcscoll.c deleted file mode 100644 index 929f80d80..000000000 --- a/test/locale-mbwc/tst_wcscoll.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - WCSCOLL: int wcscoll (const wchar_t *ws1, const wchar_t *ws2); -*/ - -#define TST_FUNCTION wcscoll - -#include "tsp_common.c" -#include "dat_wcscoll.c" - -int -tst_wcscoll (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (int); - wchar_t *ws1, *ws2; - int cmp; - - TST_DO_TEST (wcscoll) - { - TST_HEAD_LOCALE (wcscoll, S_WCSCOLL); - TST_DO_REC (wcscoll) - { - TST_GET_ERRET (wcscoll); - ws1 = TST_INPUT (wcscoll).ws1; /* external value: size WCSSIZE */ - ws2 = TST_INPUT (wcscoll).ws2; - - TST_CLEAR_ERRNO; - ret = wcscoll (ws1, ws2); - TST_SAVE_ERRNO; - - if (debug_flg) - { - fprintf (stderr, "tst_wcscoll: ret = %d\n", ret); - } - - cmp = TST_EXPECT (wcscoll).cmp_flg; - TST_IF_RETURN (S_WCSCOLL) - { - if (cmp != 0) - { - if ((cmp == 1 && ret > 0) || (cmp == -1 && ret < 0)) - { - Result (C_SUCCESS, S_WCSCOLL, CASE_3, MS_PASSED); - } - else - { - err_count++; - if (cmp == 1) - { - if (ret == 0) - Result (C_FAILURE, S_WCSCOLL, CASE_3, - "the return value should be positive" - " but it's zero."); - else - Result (C_FAILURE, S_WCSCOLL, CASE_3, - "the return value should be positive" - " but it's negative."); - } - else - { - if (ret == 0) - Result (C_FAILURE, S_WCSCOLL, CASE_3, - "the return value should be negative" - " but it's zero."); - else - Result (C_FAILURE, S_WCSCOLL, CASE_3, - "the return value should be negative" - " but it's positive."); - } - } - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcscpy.c b/test/locale-mbwc/tst_wcscpy.c deleted file mode 100644 index d5705a55d..000000000 --- a/test/locale-mbwc/tst_wcscpy.c +++ /dev/null @@ -1,85 +0,0 @@ -/*-------------------------------------------------------------------------------------*/ -/* WCSCPY: wchar_t *wcscpy( wchar_t *ws1, const wchar_t *ws2 ) */ -/*-------------------------------------------------------------------------------------*/ -#define TST_FUNCTION wcscpy - -#include "tsp_common.c" -#include "dat_wcscpy.c" - -int -tst_wcscpy (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (wchar_t *); - wchar_t ws1[WCSSIZE], *ws2, *ws_ex; - int err, i; - - TST_DO_TEST (wcscpy) - { - TST_HEAD_LOCALE (wcscpy, S_WCSCPY); - TST_DO_REC (wcscpy) - { - TST_GET_ERRET (wcscpy); - ws2 = TST_INPUT (wcscpy).ws; /* external value: size WCSSIZE */ - ret = wcscpy (ws1, ws2); - - TST_IF_RETURN (S_WCSCPY) - { - if (ret == ws1) - { - Result (C_SUCCESS, S_WCSCPY, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_WCSCPY, CASE_3, - "the return address may not be correct"); - } - } - - if (ret == ws1) - { - ws_ex = TST_EXPECT (wcscpy).ws; - - for (err = 0, i = 0; - (ws1[i] != 0L || ws_ex[i] != 0L) && i < WCSSIZE; i++) - { - if (debug_flg) - { - fprintf (stderr, - "ws1[ %d ] = 0x%lx <-> wx_ex[ %d ] = 0x%lx\n", i, - (unsigned long int) ws1[i], i, - (unsigned long int) ws_ex[i]); - } - - if (ws1[i] != ws_ex[i]) - { - err++; - err_count++; - Result (C_FAILURE, S_WCSCPY, CASE_4, - "copied string is different from an" - " expected string"); - break; - } - } - - if (!err) - { - Result (C_SUCCESS, S_WCSCPY, CASE_4, MS_PASSED); - } - - if (ws1[i] == 0L) - { - Result (C_SUCCESS, S_WCSCPY, CASE_5, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_WCSCPY, CASE_5, - "copied string is not null-terminated"); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcscspn.c b/test/locale-mbwc/tst_wcscspn.c deleted file mode 100644 index e1c8892fe..000000000 --- a/test/locale-mbwc/tst_wcscspn.c +++ /dev/null @@ -1,38 +0,0 @@ -/* - WCSCSPN: size_t wcscspn (const wchar_t *ws1, const wchar_t *ws2); -*/ - -#define TST_FUNCTION wcscspn - -#include "tsp_common.c" -#include "dat_wcscspn.c" - -int -tst_wcscspn (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (size_t); - wchar_t *ws1, *ws2; - - TST_DO_TEST (wcscspn) - { - TST_HEAD_LOCALE (wcscspn, S_WCSCSPN); - TST_DO_REC (wcscspn) - { - TST_GET_ERRET (wcscspn); - ws1 = TST_INPUT (wcscspn).ws1; - ws2 = TST_INPUT (wcscspn).ws2; /* external value: size WCSSIZE */ - ret = wcscspn (ws1, ws2); - - if (debug_flg) - { - fprintf (stderr, "wcscspn: ret = %zu\n", ret); - } - - TST_IF_RETURN (S_WCSCSPN) - { - }; - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcslen.c b/test/locale-mbwc/tst_wcslen.c deleted file mode 100644 index d0ffa5a44..000000000 --- a/test/locale-mbwc/tst_wcslen.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - WCSLEN: size_t wcslen (const wchar_t *ws); -*/ - -#define TST_FUNCTION wcslen - -#include "tsp_common.c" -#include "dat_wcslen.c" - -int -tst_wcslen (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (size_t); - wchar_t *ws; - - TST_DO_TEST (wcslen) - { - TST_HEAD_LOCALE (wcslen, S_WCSLEN); - TST_DO_REC (wcslen) - { - TST_GET_ERRET (wcslen); - ws = TST_INPUT (wcslen).ws; - ret = wcslen (ws); - TST_IF_RETURN (S_WCSLEN) - { - }; - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcsncat.c b/test/locale-mbwc/tst_wcsncat.c deleted file mode 100644 index a2f6ba020..000000000 --- a/test/locale-mbwc/tst_wcsncat.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - WCSNCAT: wchar_t *wcsncat (wchar_t *ws1, const wchar_t *ws2, size_t n); -*/ - -#define TST_FUNCTION wcsncat - -#include "tsp_common.c" -#include "dat_wcsncat.c" - -int -tst_wcsncat (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (wchar_t *); - wchar_t *ws1, *ws2, *ws_ex; - int n, i, err; - - TST_DO_TEST (wcsncat) - { - TST_HEAD_LOCALE (wcsncat, S_WCSNCAT); - TST_DO_REC (wcsncat) - { - TST_GET_ERRET (wcsncat); - ws1 = TST_INPUT (wcsncat).ws1; /* external value: size WCSSIZE */ - ws2 = TST_INPUT (wcsncat).ws2; - n = TST_INPUT (wcsncat).n; - ret = wcsncat (ws1, ws2, n); - - TST_IF_RETURN (S_WCSNCAT) - { - if (ret == ws1) - { - Result (C_SUCCESS, S_WCSNCAT, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_WCSNCAT, CASE_3, - "the return address may not be correct"); - } - } - - if (ret == ws1) - { - ws_ex = TST_EXPECT (wcsncat).ws; - - for (err = 0, i = 0; - (ws1[i] != 0L || ws_ex[i] != 0L) && i < WCSSIZE; i++) - { - if (debug_flg) - { - fprintf (stderr, "ws1[%d] = 0x%lx\n", i, - (unsigned long int) ws1[i]); - } - - if (ws1[i] != ws_ex[i]) - { - err++; - err_count++; - Result (C_FAILURE, S_WCSNCAT, CASE_4, - "the concatinated string has " - "different value from an expected string"); - break; - } - } - - if (!err) - { - Result (C_SUCCESS, S_WCSNCAT, CASE_4, MS_PASSED); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcsncmp.c b/test/locale-mbwc/tst_wcsncmp.c deleted file mode 100644 index d046ecd13..000000000 --- a/test/locale-mbwc/tst_wcsncmp.c +++ /dev/null @@ -1,40 +0,0 @@ -/*-------------------------------------------------------------------------------------*/ -/* WCSNCMP: int wcsncmp( const wchar_t *ws1, const wchar_t *ws2, size_t n ) */ -/*-------------------------------------------------------------------------------------*/ - -#define TST_FUNCTION wcsncmp - -#include "tsp_common.c" -#include "dat_wcsncmp.c" - -int -tst_wcsncmp (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (int); - wchar_t *ws1, *ws2; - size_t n; - - TST_DO_TEST (wcsncmp) - { - TST_HEAD_LOCALE (wcsncmp, S_WCSNCMP); - TST_DO_REC (wcsncmp) - { - TST_GET_ERRET (wcsncmp); - ws1 = TST_INPUT (wcsncmp).ws1; /* external value: size WCSSIZE */ - ws2 = TST_INPUT (wcsncmp).ws2; - n = TST_INPUT (wcsncmp).n; - ret = wcsncmp (ws1, ws2, n); - - if (debug_flg) - { - fprintf (stderr, "tst_wcsncmp: ret = %d, 0x%x\n", ret, ret); - } - - TST_IF_RETURN (S_WCSNCMP) - { - }; - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcsncpy.c b/test/locale-mbwc/tst_wcsncpy.c deleted file mode 100644 index 814bbc0a8..000000000 --- a/test/locale-mbwc/tst_wcsncpy.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - WCSNCPY: wchar_t *wcsncpy (wchar_t *ws1, const wchar_t *ws2, size_t n); -*/ - -#define TST_FUNCTION wcsncpy - -#include "tsp_common.c" -#include "dat_wcsncpy.c" - -#define WCSNUM_NCPY 7 - -int -tst_wcsncpy (FILE *fp, int debug_flg) -{ - TST_DECL_VARS (wchar_t *); - wchar_t ws1[WCSSIZE] = - { 0x9999, 0x9999, 0x9999, 0x9999, 0x9999, 0x9999, 0x0000 }; - wchar_t *ws2, *ws_ex; - int err, i; - size_t n; - - TST_DO_TEST (wcsncpy) - { - TST_HEAD_LOCALE (wcsncpy, S_WCSNCPY); - TST_DO_REC (wcsncpy) - { - TST_GET_ERRET (wcsncpy); - - for (n = 0; n < WCSNUM_NCPY - 1; ++n) - { - ws1[n] = 0x9999; - } - - ws1[n] = 0; - ws2 = TST_INPUT (wcsncpy).ws; /* external value: size WCSSIZE */ - n = TST_INPUT (wcsncpy).n; - ret = wcsncpy (ws1, ws2, n); - - TST_IF_RETURN (S_WCSNCPY) - { - if (ret == ws1) - { - Result (C_SUCCESS, S_WCSNCPY, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_WCSNCPY, CASE_3, - "the return address may not be correct"); - } - } - - if (ret == ws1) - { - if (debug_flg) - { - fprintf (stderr, "\nwcsncpy: n = %zu\n\n", n); - } - - ws_ex = TST_EXPECT (wcsncpy).ws; - - for (err = 0, i = 0; i < WCSNUM_NCPY && i < WCSSIZE; i++) - { - if (debug_flg) - fprintf (stderr, - "wcsncpy: ws1[ %d ] = 0x%lx <-> wx_ex[ %d ] = 0x%lx\n", - i, (unsigned long int) ws1[i], i, - (unsigned long int) ws_ex[i]); - - if (ws1[i] != ws_ex[i]) - { - err++; - err_count++; - Result (C_FAILURE, S_WCSNCPY, CASE_4, - "copied string is different from an " - "expected string"); - break; - } - } - - if (!err) - { - Result (C_SUCCESS, S_WCSNCPY, CASE_4, MS_PASSED); - } - - /* A null terminate character is not supposed to be copied - unless (num chars of ws2) 0x%lx = wc_ex\n", - (unsigned long int) *ret, (unsigned long int) wc_ex); - - if (*ret != wc_ex) - { - err++; - err_count++; - Result (C_FAILURE, S_WCSPBRK, CASE_4, "the pointed wc is " - "different from an expected wc"); - } - else - { - Result (C_SUCCESS, S_WCSPBRK, CASE_4, MS_PASSED); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcsrtombs.c b/test/locale-mbwc/tst_wcsrtombs.c deleted file mode 100644 index 3a8edccad..000000000 --- a/test/locale-mbwc/tst_wcsrtombs.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - WCSRTOMBS: size_t wcsrtombs (char *s, const wchar_t **ws, size_t n, - mbstate_t *ps) -*/ - -#define TST_FUNCTION wcsrtombs - -#include "tsp_common.c" -#include "dat_wcsrtombs.c" - -#define MARK_VAL 0x01 - -int -tst_wcsrtombs (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (size_t); - char s_flg, n; - const wchar_t *ws, *wp; - char s[MBSSIZE], *s_in; - char t_flg, t_ini; - static mbstate_t t = { 0 }; - mbstate_t *pt; - int err, i; - char *s_ex; - - TST_DO_TEST (wcsrtombs) - { - TST_HEAD_LOCALE (wcsrtombs, S_WCSRTOMBS); - TST_DO_REC (wcsrtombs) - { - TST_GET_ERRET (wcsrtombs); - memset (s, MARK_VAL, MBSSIZE); - - s_flg = TST_INPUT (wcsrtombs).s_flg; - s_in = (s_flg == 1) ? s : (char *) NULL; - wp = ws = TST_INPUT (wcsrtombs).ws; - n = TST_INPUT (wcsrtombs).n; - t_flg = TST_INPUT (wcsrtombs).t_flg; - t_ini = TST_INPUT (wcsrtombs).t_init; - pt = (t_flg == 0) ? NULL : &t; - - if (t_ini != 0) - { - memset (&t, 0, sizeof (t)); - } - - TST_CLEAR_ERRNO; - ret = wcsrtombs (s_in, &wp, n, pt); - TST_SAVE_ERRNO; - - if (debug_flg) - { - fprintf (stderr, "wcsrtombs: ret = %zu\n", ret); - } - - TST_IF_RETURN (S_WCSRTOMBS) - { - }; - - if (s_in != NULL && ret != (size_t) - 1) - { - /* No definition for s, when error occurs. */ - s_ex = TST_EXPECT (wcsrtombs).s; - - for (err = 0, i = 0; i <= ret && i < MBSSIZE; i++) - { - if (debug_flg) - { - fprintf (stderr, - " : s[%d] = 0x%hx <-> 0x%hx = s_ex[%d]\n", i, - s[i], s_ex[i], i); - } - - if (i == ret && ret == n) /* no null termination */ - { - if (s[i] == MARK_VAL) - { - Result (C_SUCCESS, S_WCSRTOMBS, CASE_4, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_WCSRTOMBS, CASE_4, - "should not be null terminated " - "(it may be a null char), but it is"); - } - - break; - } - - if (i == ret && ret < n) /* null termination */ - { - if (s[i] == 0) - { - Result (C_SUCCESS, S_WCSRTOMBS, CASE_5, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_WCSRTOMBS, CASE_5, - "should be null terminated, but it is not"); - } - - break; - } - - if (s[i] != s_ex[i]) - { - err++; - err_count++; - Result (C_FAILURE, S_WCSRTOMBS, CASE_6, - "converted string is different from an" - " expected string"); - break; - } - } - - if (!err) - { - Result (C_SUCCESS, S_WCSRTOMBS, CASE_6, MS_PASSED); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcsspn.c b/test/locale-mbwc/tst_wcsspn.c deleted file mode 100644 index 02157eeca..000000000 --- a/test/locale-mbwc/tst_wcsspn.c +++ /dev/null @@ -1,38 +0,0 @@ -/* - WCSSPN: size_t wcsspn (const wchar_t *ws1, const wchar_t *ws2); -*/ - -#define TST_FUNCTION wcsspn - -#include "tsp_common.c" -#include "dat_wcsspn.c" - -int -tst_wcsspn (FILE *fp, int debug_flg) -{ - TST_DECL_VARS (size_t); - wchar_t *ws1, *ws2; - - TST_DO_TEST (wcsspn) - { - TST_HEAD_LOCALE (wcsspn, S_WCSSPN); - TST_DO_REC (wcsspn) - { - TST_GET_ERRET (wcsspn); - ws1 = TST_INPUT (wcsspn).ws1; - ws2 = TST_INPUT (wcsspn).ws2; /* external value: size WCSSIZE */ - ret = wcsspn (ws1, ws2); - - if (debug_flg) - { - fprintf (stderr, "wcsspn: ret = %zu\n", ret); - } - - TST_IF_RETURN (S_WCSSPN) - { - }; - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcsstr.c b/test/locale-mbwc/tst_wcsstr.c deleted file mode 100644 index f8b00c4b7..000000000 --- a/test/locale-mbwc/tst_wcsstr.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - WCSSTR: wchar_t *wcsstr (const wchar_t *ws1, const wchar_t *ws2); -*/ - -#define TST_FUNCTION wcsstr - -#include "tsp_common.c" -#include "dat_wcsstr.c" - -int -tst_wcsstr (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (wchar_t *); - wchar_t *ws1, *ws2; - int err, i; - - TST_DO_TEST (wcsstr) - { - TST_HEAD_LOCALE (wcsstr, S_WCSSTR); - TST_DO_REC (wcsstr) - { - TST_GET_ERRET (wcsstr); - ws1 = TST_INPUT (wcsstr).ws1; - ws2 = TST_INPUT (wcsstr).ws2; /* external value: size WCSSIZE */ - ret = wcsstr (ws1, ws2); - - if (debug_flg) - { - fprintf (stderr, "wcsstr: %d : ret = %s\n", rec + 1, - (ret == NULL) ? "null" : "not null"); - if (ret) - { - fprintf (stderr, - " ret[ 0 ] = 0x%lx <-> 0x%lx = ws2[ 0 ]\n", - (unsigned long int) ret[0], (unsigned long int) ws2[0]); - } - } - - TST_IF_RETURN (S_WCSSTR) - { - if (ws2[0] == 0) - { - if (ret == ws1) - { - Result (C_SUCCESS, S_WCSSTR, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_WCSSTR, CASE_3, - "return address is not same address as ws1"); - } - - continue; - } - - for (i = 0, err = 0; *(ws2 + i) != 0 && i < WCSSIZE; i++) - { - if (debug_flg) - { - fprintf (stderr, - " : ret[ %d ] = 0x%lx <-> 0x%lx = ws2[ %d ]\n", - i, (unsigned long int) ret[i], - (unsigned long int) ws2[i], i); - } - - if (ret[i] != ws2[i]) - { - err++; - err_count++; - Result (C_FAILURE, S_WCSSTR, CASE_4, "pointed sub-string is " - "different from an expected sub-string"); - break; - } - } - - if (!err) - { - Result (C_SUCCESS, S_WCSSTR, CASE_4, MS_PASSED); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcstod.c b/test/locale-mbwc/tst_wcstod.c deleted file mode 100644 index 1648d3539..000000000 --- a/test/locale-mbwc/tst_wcstod.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - WCSTOD: double wcstod (wchar_t *np, const wchar_t **endp); -*/ - -#define TST_FUNCTION wcstod - -#include "tsp_common.c" -#include "dat_wcstod.c" - -int -tst_wcstod (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (double); - wchar_t *np, *endp, fwc; - double val; - - TST_DO_TEST (wcstod) - { - TST_HEAD_LOCALE (wcstod, S_WCSTOD); - TST_DO_REC (wcstod) - { - TST_GET_ERRET (wcstod); - np = TST_INPUT (wcstod).np; - - TST_CLEAR_ERRNO; - ret = wcstod (np, &endp); - TST_SAVE_ERRNO; - - if (debug_flg) - { - fprintf (stdout, "wcstod() [ %s : %d ] ret = %f\n", locale, - rec + 1, ret); - fprintf (stdout, " *endp = 0x%lx\n", - (unsigned long int) *endp); - } - - TST_IF_RETURN (S_WCSTOD) - { - if (ret != 0) - { - val = ret - TST_EXPECT (wcstod).val; - if (TST_ABS (val) < TST_DBL_EPS) - { - Result (C_SUCCESS, S_WCSTOD, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_WCSTOD, CASE_3, "return value is wrong"); - } - } - } - - fwc = TST_EXPECT (wcstod).fwc; - - if (fwc == *endp) - { - Result (C_SUCCESS, S_WCSTOD, CASE_4, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_WCSTOD, CASE_4, "a final wc is wrong."); - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcstok.c b/test/locale-mbwc/tst_wcstok.c deleted file mode 100644 index 1222b9785..000000000 --- a/test/locale-mbwc/tst_wcstok.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - WCSTOK: wchar_t *wcstok (wchar_t *ws, const wchar_t *dlm, wchar_t **pt); -*/ - - -#define TST_FUNCTION wcstok - -#include "tsp_common.c" -#include "dat_wcstok.c" - -int -tst_wcstok (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (wchar_t *); - char w_flg; - wchar_t *ws; - wchar_t *dt, *pt; - wchar_t *ws_ex; - int err, i; - - TST_DO_TEST (wcstok) - { - TST_HEAD_LOCALE (wcstok, S_WCSTOK); - TST_DO_REC (wcstok) - { - TST_DO_SEQ (WCSTOK_SEQNUM) - { - TST_GET_ERRET_SEQ (wcstok); - w_flg = TST_INPUT_SEQ (wcstok).w_flg; - ws = (w_flg) ? TST_INPUT_SEQ (wcstok).ws : NULL; - dt = TST_INPUT_SEQ (wcstok).dt; - - ret = wcstok (ws, dt, &pt); - - if (debug_flg) - { - fprintf (stdout, "wcstok() [ %s : %d : %d ] *ret = 0x%lx\n", - locale, rec + 1, seq_num + 1, (unsigned long int) *ret); - if (pt && *pt) - { - fprintf (stdout, " *pt = 0x%lx\n", - (unsigned long int) *pt); - } - } - - TST_IF_RETURN (S_WCSTOK) - { - }; - - if (ret != NULL) - { - ws_ex = TST_EXPECT_SEQ (wcstok).ws; - - /* XXX: REVISIT : insufficient conditions */ - for (err = 0, i = 0; i < WCSSIZE; i++) - { - if (ret[i] == L'\0' && ws_ex[i] == L'\0') - { - break; - } - - if (debug_flg) - { - fprintf (stderr, - " ret[%d] = 0x%lx <-> " - "0x%lx = ws_ex[%d]\n", - i, (unsigned long int) ret[i], - (unsigned long int) ws_ex[i], i); - } - - if (ret[i] != ws_ex[i]) - { - err++; - err_count++; - Result (C_FAILURE, S_WCSTOK, CASE_3, - "the token is different from an expected string"); - break; - } - - if (ret[i] == L'\0' || ws_ex[i] == L'\0') - { - break; - } - } - - if (!err) - { - Result (C_SUCCESS, S_WCSTOK, CASE_3, MS_PASSED); - } - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcstombs.c b/test/locale-mbwc/tst_wcstombs.c deleted file mode 100644 index c0851a430..000000000 --- a/test/locale-mbwc/tst_wcstombs.c +++ /dev/null @@ -1,115 +0,0 @@ -/* - WCSTOMBS: size_t wcstombs (char *s, const wchar_t *ws, size_t n) -*/ - -#define TST_FUNCTION wcstombs - -#include "tsp_common.c" -#include "dat_wcstombs.c" - -#define MARK_VAL 0x01 - -int -tst_wcstombs (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (size_t); - char s_flg, n; - wchar_t *ws; - char s[MBSSIZE], *s_in; - int err, i; - char *s_ex; - - TST_DO_TEST (wcstombs) - { - TST_HEAD_LOCALE (wcstombs, S_WCSTOMBS); - TST_DO_REC (wcstombs) - { - TST_GET_ERRET (wcstombs); - memset (s, MARK_VAL, MBSSIZE); - - s_flg = TST_INPUT (wcstombs).s_flg; - s_in = (s_flg == 1) ? s : (char *) NULL; - ws = TST_INPUT (wcstombs).ws; - n = TST_INPUT (wcstombs).n; - - TST_CLEAR_ERRNO; - ret = wcstombs (s_in, ws, n); - TST_SAVE_ERRNO; - - if (debug_flg) - { - fprintf (stdout, "wcstombs: ret = %zu\n", ret); - } - - TST_IF_RETURN (S_WCSTOMBS) - { - }; - - if (s_in != NULL && ret != (size_t) - 1) - { - /* No definition for s, when error occurs. */ - s_ex = TST_EXPECT (wcstombs).s; - - for (err = 0, i = 0; i <= ret && i < MBSSIZE; i++) - { - if (debug_flg) - { - fprintf (stdout, - " : s[%d] = 0x%hx <-> 0x%hx = s_ex[%d]\n", i, - s[i], s_ex[i], i); - } - - if (i == ret && ret == n) /* no null termination */ - { - if (s[i] == MARK_VAL) - { - Result (C_SUCCESS, S_WCSTOMBS, CASE_4, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_WCSTOMBS, CASE_4, - "should not be null terminated " - "(it may be a null char), but it is"); - } - - break; - } - - if (i == ret && ret < n) /* null termination */ - { - if (s[i] == 0) - { - Result (C_SUCCESS, S_WCSTOMBS, CASE_5, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_WCSTOMBS, CASE_5, - "should be null terminated, but it is not"); - } - - break; - } - - if (s[i] != s_ex[i]) - { - err++; - err_count++; - Result (C_FAILURE, S_WCSTOMBS, CASE_6, - "converted string is different from an " - "expected string"); - break; - } - } - - if (!err) - { - Result (C_SUCCESS, S_WCSTOMBS, CASE_6, MS_PASSED); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcswidth.c b/test/locale-mbwc/tst_wcswidth.c deleted file mode 100644 index c8369753e..000000000 --- a/test/locale-mbwc/tst_wcswidth.c +++ /dev/null @@ -1,39 +0,0 @@ -/* - WCSWIDTH: int wcswidth (const wchar_t *ws, size_t n); -*/ - -#define TST_FUNCTION wcswidth - -#include "tsp_common.c" -#include "dat_wcswidth.c" - -int -tst_wcswidth (FILE *fp, int debug_flg) -{ - TST_DECL_VARS (int); - wchar_t *ws; - int n; - - TST_DO_TEST (wcswidth) - { - TST_HEAD_LOCALE (wcswidth, S_WCSWIDTH); - TST_DO_REC (wcswidth) - { - TST_GET_ERRET (wcswidth); - ws = TST_INPUT (wcswidth).ws; - n = TST_INPUT (wcswidth).n; - ret = wcswidth (ws, n); - - if (debug_flg) - { - fprintf (stderr, "wcswidth: [ %d ] : ret = %d\n", rec + 1, ret); - } - - TST_IF_RETURN (S_WCSWIDTH) - { - }; - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcsxfrm.c b/test/locale-mbwc/tst_wcsxfrm.c deleted file mode 100644 index 6fb8a1c28..000000000 --- a/test/locale-mbwc/tst_wcsxfrm.c +++ /dev/null @@ -1,122 +0,0 @@ -/* - WCSXFRM: size_t wcsxfrm (wchar_t *ws1, const wchar_t *ws2, size_t n); -*/ - -#define TST_FUNCTION wcsxfrm - -#include "tsp_common.c" -#include "dat_wcsxfrm.c" - -int -tst_wcsxfrm (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (size_t); - wchar_t *org1, *org2; - wchar_t frm1[MBSSIZE], frm2[MBSSIZE]; - size_t n1, n2; - int ret_coll, ret_cmp; - - TST_DO_TEST (wcsxfrm) - { - TST_HEAD_LOCALE (wcsxfrm, S_WCSXFRM); - TST_DO_REC (wcsxfrm) - { - TST_GET_ERRET (wcsxfrm); - org1 = TST_INPUT (wcsxfrm).org1; - org2 = TST_INPUT (wcsxfrm).org2; - n1 = TST_INPUT (wcsxfrm).n1; - n2 = TST_INPUT (wcsxfrm).n2; - if (n1 < 0 || sizeof (frm1) < n1 || sizeof (frm2) < n2) - { - warn_count++; - Result (C_IGNORED, S_WCSXFRM, CASE_9, - "input data n1 or n2 is invalid"); - continue; - } - - /* an errno and a return value are checked - only for 2nd wcsxfrm() call. - A result of 1st call is used to compare - those 2 values by using wcscmp(). - */ - - TST_CLEAR_ERRNO; - ret = wcsxfrm (frm1, org1, n1); /* First call */ - TST_SAVE_ERRNO; - - if (debug_flg) - { - fprintf (stdout, "tst_wcsxfrm() : REC = %d\n", rec + 1); - fprintf (stdout, "tst_wcsxfrm() : 1st ret = %zu\n", ret); - } - - if (ret == -1 || ret >= n1 || errno_save != 0) - { - warn_count++; - Result (C_INVALID, S_WCSXFRM, CASE_8, - "got an error in fist wcsxfrm() call"); - continue; - } - - TST_CLEAR_ERRNO; - /* Second call */ - ret = wcsxfrm (((n2 == 0) ? NULL : frm2), org2, n2); - TST_SAVE_ERRNO; - - TST_IF_RETURN (S_WCSXFRM) - { - }; - - if (n2 == 0 || ret >= n2 || errno != 0) - { -#if 0 - warn_count++; - Result (C_IGNORED, S_WCSXFRM, CASE_7, "did not get a result"); -#endif - continue; - } - - if (debug_flg) - { - fprintf (stdout, "tst_wcsxfrm() : 2nd ret = %zu\n", ret); - } - - /* wcscoll() */ - TST_CLEAR_ERRNO; - /* depends on wcscoll() ... not good though ... */ - ret_coll = wcscoll (org1, org2); - TST_SAVE_ERRNO; - - if (errno != 0) /* bugs * bugs may got correct results ... */ - { - warn_count++; - Result (C_INVALID, S_WCSXFRM, CASE_6, - "got an error in wcscoll() call"); - continue; - } - /* wcscmp() */ - ret_cmp = wcscmp (frm1, frm2); - - if ((ret_coll == ret_cmp) || (ret_coll > 0 && ret_cmp > 0) - || (ret_coll < 0 && ret_cmp < 0)) - { - Result (C_SUCCESS, S_WCSXFRM, CASE_3, - MS_PASSED " (depends on wcscoll & wcscmp)"); - } - else - { - err_count++; - Result (C_FAILURE, S_WCSXFRM, CASE_3, - "results from wcscoll & wcscmp() do not match"); - } - - if (debug_flg) - { - fprintf (stdout, "tst_wcsxfrm() : coll = %d <-> %d = cmp\n", - ret_coll, ret_cmp); - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wctob.c b/test/locale-mbwc/tst_wctob.c deleted file mode 100644 index 2377daf59..000000000 --- a/test/locale-mbwc/tst_wctob.c +++ /dev/null @@ -1,37 +0,0 @@ -/*-------------------------------------------------------------------------------------*/ -/* WCTOB: int wctob( wint_t wc ) */ -/*-------------------------------------------------------------------------------------*/ - -#define TST_FUNCTION wctob - -#include "tsp_common.c" -#include "dat_wctob.c" - -int -tst_wctob (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (int); - wchar_t wc; - - TST_DO_TEST (wctob) - { - TST_HEAD_LOCALE (wctob, S_WCTOB); - TST_DO_REC (wctob) - { - TST_GET_ERRET (wctob); - wc = TST_INPUT (wctob).wc; - ret = wctob (wc); - - if (debug_flg) - { - fprintf (stderr, "tst_wctob : [ %d ] ret = %d\n", rec + 1, ret); - } - - TST_IF_RETURN (S_WCTOB) - { - }; - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wctomb.c b/test/locale-mbwc/tst_wctomb.c deleted file mode 100644 index aea89fed8..000000000 --- a/test/locale-mbwc/tst_wctomb.c +++ /dev/null @@ -1,99 +0,0 @@ -/* - WCTOMB: int wctomb (char *s, wchar_t wc) -*/ - -#define TST_FUNCTION wctomb - -#include "tsp_common.c" -#include "dat_wctomb.c" - -int -tst_wctomb (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (int); - wchar_t wc; - char s[MBSSIZE], *s_in, *s_ex; - int err, i; - - TST_DO_TEST (wctomb) - { - TST_HEAD_LOCALE (wctomb, S_WCTOMB); - TST_DO_REC (wctomb) - { - TST_GET_ERRET (wctomb); - wc = TST_INPUT (wctomb).wc; - s_in = ((TST_INPUT (wctomb).s_flg) == 0) ? (char *) NULL : s; - ret = wctomb (s_in, wc); - - if (debug_flg) - { - fprintf (stdout, "wctomb() [ %s : %d ] ret = %d\n", locale, - rec + 1, ret); - } - - TST_IF_RETURN (S_WCTOMB) - { - if (s_in == NULL) /* state dependency */ - { - if (ret_exp == +1) /* state-dependent */ - { - if (ret != 0) - { - /* Non-zero means state-dependent encoding. */ - Result (C_SUCCESS, S_WCTOMB, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_WCTOMB, CASE_3, - "should be state-dependent encoding, " - "but a return value shows it is " - "state-independent"); - } - } - - if (ret_exp == 0) /* state-independent */ - { - if (ret == 0) - { - /* Non-zero means state-dependent encoding. */ - Result (C_SUCCESS, S_WCTOMB, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_WCTOMB, CASE_3, - "should be state-independent encoding, " - "but a return value shows it is state-dependent"); - } - } - } - } - - s_ex = TST_EXPECT (wctomb).s; - - if (s_in) - { - for (i = 0, err = 0; *(s_ex + i) != 0 && i < MBSSIZE; i++) - { - if (s_in[i] != s_ex[i]) - { - err++; - err_count++; - Result (C_FAILURE, S_WCTOMB, CASE_4, - "copied string is different from an" - " expected string"); - break; - } - } - - if (!err) - { - Result (C_SUCCESS, S_WCTOMB, CASE_4, MS_PASSED); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wctrans.c b/test/locale-mbwc/tst_wctrans.c deleted file mode 100644 index b422d6ff9..000000000 --- a/test/locale-mbwc/tst_wctrans.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - WCTRANS: wctrans_t wctrans (const char *charclass); -*/ - -#define TST_FUNCTION wctrans - -#include "tsp_common.c" -#include "dat_wctrans.c" - -int -tst_wctrans (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (wctrans_t); - char *class; - - TST_DO_TEST (wctrans) - { - TST_HEAD_LOCALE (wctrans, S_WCTRANS); - TST_DO_REC (wctrans) - { - TST_GET_ERRET (wctrans); - class = TST_INPUT (wctrans).class; - - TST_CLEAR_ERRNO; - ret = wctrans (class); - TST_SAVE_ERRNO; - - if (debug_flg) - { - fprintf (stderr, "tst_wctrans : [ %d ] ret = %ld\n", rec + 1, - (long int) ret); - fprintf (stderr, " errno = %d\n", errno_save); - } - - TST_IF_RETURN (S_WCTRANS) - { - if (ret != 0) - { - Result (C_SUCCESS, S_WCTYPE, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_WCTYPE, CASE_3, - "should return non-0, but returned 0"); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wctype.c b/test/locale-mbwc/tst_wctype.c deleted file mode 100644 index a203e4908..000000000 --- a/test/locale-mbwc/tst_wctype.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - WCTYPE: wctype_t wctype (const char *class); -*/ - - -#define TST_FUNCTION wctype - -#include "tsp_common.c" -#include "dat_wctype.c" - -int -tst_wctype (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (wctype_t); - char *class; - - TST_DO_TEST (wctype) - { - TST_HEAD_LOCALE (wctype, S_WCTYPE); - TST_DO_REC (wctype) - { - TST_GET_ERRET (wctype); - class = TST_INPUT (wctype).class; - ret = wctype (class); - - if (debug_flg) - { - fprintf (stderr, "tst_wctype : [ %d ] ret = %ld\n", rec + 1, ret); - } - - TST_IF_RETURN (S_WCTYPE) - { - if (ret != 0) - { - Result (C_SUCCESS, S_WCTYPE, CASE_3, MS_PASSED); - } - else - { - err_count++; - Result (C_FAILURE, S_WCTYPE, CASE_3, - "should return non-0, but returned 0"); - } - } - } - } - - return err_count; -} diff --git a/test/locale-mbwc/tst_wcwidth.c b/test/locale-mbwc/tst_wcwidth.c deleted file mode 100644 index 6a5af6fa3..000000000 --- a/test/locale-mbwc/tst_wcwidth.c +++ /dev/null @@ -1,38 +0,0 @@ -/* - WCWIDTH: int wcwidth (wchar_t wc); -*/ - -#define TST_FUNCTION wcwidth - -#include "tsp_common.c" -#include "dat_wcwidth.c" - -int -tst_wcwidth (FILE * fp, int debug_flg) -{ - TST_DECL_VARS (int); - wchar_t wc; - - TST_DO_TEST (wcwidth) - { - TST_HEAD_LOCALE (wcwidth, S_WCWIDTH); - TST_DO_REC (wcwidth) - { - TST_GET_ERRET (wcwidth); - wc = TST_INPUT (wcwidth).wc; - ret = wcwidth (wc); - - if (debug_flg) - { - fprintf (stdout, "wcwidth() [ %s : %d ] ret = %d\n", locale, - rec + 1, ret); - } - - TST_IF_RETURN (S_WCWIDTH) - { - } - } - } - - return err_count; -} diff --git a/test/locale/Makefile b/test/locale/Makefile deleted file mode 100644 index 263f325b9..000000000 --- a/test/locale/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc locale tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/locale/Makefile.in b/test/locale/Makefile.in deleted file mode 100644 index 5a57ca54d..000000000 --- a/test/locale/Makefile.in +++ /dev/null @@ -1,29 +0,0 @@ -# uClibc locale tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. -# tst_mbtowc tst_strcoll tst_strfmon tst_strxfrm \ - -TESTS := bug-iconv-trans bug-usesetlocale collate-test dump-ctype \ - gen-unicode-ctype show-ucs-data tst-ctype \ - tst-digits tst-fmon tst-langinfo tst-leaks tst-mbswcs1 \ - tst-mbswcs2 tst-mbswcs3 tst-mbswcs4 tst-mbswcs5 tst-mbswcs6 \ - tst_nl_langinfo tst-numeric tst-rpmatch tst-setlocale \ - tst-sscanf tst-strfmon1 tst-trans tst-wctype tst-xlocale1 \ - tst-xlocale2 xfrm-test - - -# NOTE: For now disabled some tests that are known not build -TESTS_DISABLED := tst-ctype tst-fmon tst-leaks tst-rpmatch tst-strfmon1 - -ifneq ($(UCLIBC_HAS_XLOCALE),y) -TESTS_DISABLED += bug-usesetlocale tst-xlocale1 tst-xlocale2 xfrm-test tst-C-locale -endif - -DODIFF_rint := 1 - -EXTRA_CFLAGS := -D__USE_GNU -fno-builtin - -OPTS_dump-ctype = C -OPTS_tst-ctype = < tst-ctype-de_DE.ISO-8859-1.in -OPTS_tst-langinfo = < tst-langinfo.input - -EXTRA_DIRS := C diff --git a/test/locale/bug-iconv-trans.c b/test/locale/bug-iconv-trans.c deleted file mode 100644 index 3886247c3..000000000 --- a/test/locale/bug-iconv-trans.c +++ /dev/null @@ -1,68 +0,0 @@ -#include -#include -#include -#include - -int -main (void) -{ - iconv_t cd; - const char str[] = "ÄäÖöÜüß"; - const char expected[] = "AEaeOEoeUEuess"; - char *inptr = (char *) str; - size_t inlen = strlen (str) + 1; - char outbuf[500]; - char *outptr = outbuf; - size_t outlen = sizeof (outbuf); - int result = 0; - size_t n; - - if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL) - { - puts ("setlocale failed"); - return 1; - } - - cd = iconv_open ("ANSI_X3.4-1968//TRANSLIT", "ISO-8859-1"); - if (cd == (iconv_t) -1) - { - puts ("iconv_open failed"); - return 1; - } - - n = iconv (cd, &inptr, &inlen, &outptr, &outlen); - if (n != 7) - { - if (n == (size_t) -1) - printf ("iconv() returned error: %m\n"); - else - printf ("iconv() returned %Zd, expected 7\n", n); - result = 1; - } - if (inlen != 0) - { - puts ("not all input consumed"); - result = 1; - } - else if (inptr - str != strlen (str) + 1) - { - printf ("inptr wrong, advanced by %td\n", inptr - str); - result = 1; - } - if (memcmp (outbuf, expected, sizeof (expected)) != 0) - { - printf ("result wrong: \"%.*s\", expected: \"%s\"\n", - (int) (sizeof (outbuf) - outlen), outbuf, expected); - result = 1; - } - else if (outlen != sizeof (outbuf) - sizeof (expected)) - { - printf ("outlen wrong: %Zd, expected %Zd\n", outlen, - sizeof (outbuf) - 15); - result = 1; - } - else - printf ("output is \"%s\" which is OK\n", outbuf); - - return result; -} diff --git a/test/locale/bug-usesetlocale.c b/test/locale/bug-usesetlocale.c deleted file mode 100644 index 0637067de..000000000 --- a/test/locale/bug-usesetlocale.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Test case for setlocale vs uselocale (LC_GLOBAL_LOCALE) bug. */ - -#define _GNU_SOURCE 1 -#include -#include -#include - -static int -do_test (void) -{ - __locale_t loc_new, loc_old; - - int first = !!isalpha(0xE4); - - setlocale (LC_ALL, "de_DE"); - - int global_de = !!isalpha(0xE4); - - loc_new = newlocale (1 << LC_ALL, "C", 0); - loc_old = uselocale (loc_new); - - int used_c = !!isalpha(0xE4); - - uselocale (loc_old); - - int used_global = !!isalpha(0xE4); - - printf ("started %d, after setlocale %d\n", first, global_de); - printf ("after uselocale %d, after LC_GLOBAL_LOCALE %d\n", - used_c, used_global); - - freelocale (loc_new); - return !(used_c == first && used_global == global_de); -} - - -#define TEST_FUNCTION do_test () -#include "test-skeleton.c" diff --git a/test/locale/collate-test.c b/test/locale/collate-test.c deleted file mode 100644 index a84974cef..000000000 --- a/test/locale/collate-test.c +++ /dev/null @@ -1,132 +0,0 @@ -/* Test collation function using real data. - Copyright (C) 1997, 1999, 2000, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -struct lines -{ - char *key; - char *line; -}; - -static int xstrcoll (const void *, const void *); - -int -main (int argc, char *argv[]) -{ - int result = 0; - size_t nstrings, nstrings_max; - struct lines *strings; - char *line = NULL; - size_t len = 0; - size_t n; - - if (argc < 2) - error (1, 0, "usage: %s ", argv[0]); - - setlocale (LC_ALL, ""); - - nstrings_max = 100; - nstrings = 0; - strings = (struct lines *) malloc (nstrings_max * sizeof (struct lines)); - if (strings == NULL) - { - perror (argv[0]); - exit (1); - } - - while (1) - { - int l; - if (getline (&line, &len, stdin) < 0) - break; - - if (nstrings == nstrings_max) - { - strings = (struct lines *) realloc (strings, - (nstrings_max *= 2) - * sizeof (*strings)); - if (strings == NULL) - { - perror (argv[0]); - exit (1); - } - } - strings[nstrings].line = strdup (line); - l = strcspn (line, ":(;"); - while (l > 0 && isspace (line[l - 1])) - --l; - strings[nstrings].key = strndup (line, l); - ++nstrings; - } - free (line); - - /* First shuffle. */ - srandom (atoi (argv[1])); - for (n = 0; n < 10 * nstrings; ++n) - { - int r1, r2, r; - size_t idx1 = random () % nstrings; - size_t idx2 = random () % nstrings; - struct lines tmp = strings[idx1]; - strings[idx1] = strings[idx2]; - strings[idx2] = tmp; - - /* While we are at it a first little test. */ - r1 = strcoll (strings[idx1].key, strings[idx2].key); - r2 = strcoll (strings[idx2].key, strings[idx1].key); - r = r1 * r2; - - if (r > 0 || (r == 0 && r1 != 0) || (r == 0 && r2 != 0)) - printf ("`%s' and `%s' collate wrong: %d vs. %d\n", - strings[idx1].key, strings[idx2].key, r1, r2); - } - - /* Now sort. */ - qsort (strings, nstrings, sizeof (struct lines), xstrcoll); - - /* Print the result. */ - for (n = 0; n < nstrings; ++n) - { - fputs (strings[n].line, stdout); - free (strings[n].line); - free (strings[n].key); - } - free (strings); - - return result; -} - - -static int -xstrcoll (ptr1, ptr2) - const void *ptr1; - const void *ptr2; -{ - const struct lines *l1 = (const struct lines *) ptr1; - const struct lines *l2 = (const struct lines *) ptr2; - - return strcoll (l1->key, l2->key); -} diff --git a/test/locale/dump-ctype.c b/test/locale/dump-ctype.c deleted file mode 100644 index 6cf96d81d..000000000 --- a/test/locale/dump-ctype.c +++ /dev/null @@ -1,163 +0,0 @@ -/* Dump the character classes and character maps of a locale to a bunch - of individual files which can be processed with diff, sed etc. - Copyright (C) 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Bruno Haible , 2000. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -/* Usage example: - $ dump-ctype de_DE.UTF-8 - */ - -#include -#include -#include -#include -#include -#include -#include - -static const char *program_name = "dump-ctype"; -static const char *locale; - -static const char *class_names[] = - { - "alnum", "alpha", "blank", "cntrl", "digit", "graph", "lower", - "print", "punct", "space", "upper", "xdigit" - }; - -static const char *map_names[] = - { - "tolower", "toupper", "totitle" - }; - -static void dump_class (const char *class_name) -{ - wctype_t class; - FILE *f; - unsigned int ch; - - class = wctype (class_name); - if (class == (wctype_t) 0) - { - fprintf (stderr, "%s %s: noexistent class %s\n", program_name, - locale, class_name); - return; - } - - f = fopen (class_name, "w"); - if (f == NULL) - { - fprintf (stderr, "%s %s: cannot open file %s/%s\n", program_name, - locale, locale, class_name); - exit (1); - } - - for (ch = 0; ch < 0x10000; ch++) - if (iswctype (ch, class)) - fprintf (f, "0x%04X\n", ch); - - if (ferror (f) || fclose (f)) - { - fprintf (stderr, "%s %s: I/O error on file %s/%s\n", program_name, - locale, locale, class_name); - exit (1); - } -} - -static void dump_map (const char *map_name) -{ - wctrans_t map; - FILE *f; - unsigned int ch; - - map = wctrans (map_name); - if (map == (wctrans_t) 0) - { - fprintf (stderr, "%s %s: noexistent map %s\n", program_name, - locale, map_name); - return; - } - - f = fopen (map_name, "w"); - if (f == NULL) - { - fprintf (stderr, "%s %s: cannot open file %s/%s\n", program_name, - locale, locale, map_name); - exit (1); - } - - for (ch = 0; ch < 0x10000; ch++) - if (towctrans (ch, map) != ch) - fprintf (f, "0x%04X\t0x%04X\n", ch, towctrans (ch, map)); - - if (ferror (f) || fclose (f)) - { - fprintf (stderr, "%s %s: I/O error on file %s/%s\n", program_name, - locale, locale, map_name); - exit (1); - } -} - -int -main (int argc, char *argv[]) -{ - size_t i; - - if (argc != 2) - { - fprintf (stderr, "Usage: dump-ctype locale\n"); - exit (1); - } - locale = argv[1]; - - if (setlocale (LC_ALL, locale) == NULL) - { - fprintf (stderr, "%s: setlocale cannot switch to locale %s\n", - program_name, locale); - exit (1); - } - - if (mkdir (locale, 0777) < 0) - { - char buf[100]; - int save_errno = errno; - - sprintf (buf, "%s: cannot create directory %s", program_name, locale); - errno = save_errno; - perror (buf); - exit (1); - } - - if (chdir (locale) < 0) - { - char buf[100]; - int save_errno = errno; - - sprintf (buf, "%s: cannot chdir to %s", program_name, locale); - errno = save_errno; - perror (buf); - exit (1); - } - - for (i = 0; i < sizeof (class_names) / sizeof (class_names[0]); i++) - dump_class (class_names[i]); - - for (i = 0; i < sizeof (map_names) / sizeof (map_names[0]); i++) - dump_map (map_names[i]); - - return 0; -} diff --git a/test/locale/gen-unicode-ctype.c b/test/locale/gen-unicode-ctype.c deleted file mode 100644 index 0c74e6a7e..000000000 --- a/test/locale/gen-unicode-ctype.c +++ /dev/null @@ -1,784 +0,0 @@ -/* Generate a Unicode conforming LC_CTYPE category from a UnicodeData file. - Copyright (C) 2000-2001 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Bruno Haible , 2000. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -/* Usage example: - $ gen-unicode /usr/local/share/Unidata/UnicodeData.txt 3.1 - */ - -#include -#include -#include -#include -#include - -/* This structure represents one line in the UnicodeData.txt file. */ -struct unicode_attribute -{ - const char *name; /* Character name */ - const char *category; /* General category */ - const char *combining; /* Canonical combining classes */ - const char *bidi; /* Bidirectional category */ - const char *decomposition; /* Character decomposition mapping */ - const char *decdigit; /* Decimal digit value */ - const char *digit; /* Digit value */ - const char *numeric; /* Numeric value */ - int mirrored; /* mirrored */ - const char *oldname; /* Old Unicode 1.0 name */ - const char *comment; /* Comment */ - unsigned int upper; /* Uppercase mapping */ - unsigned int lower; /* Lowercase mapping */ - unsigned int title; /* Titlecase mapping */ -}; - -/* Missing fields are represented with "" for strings, and NONE for - characters. */ -#define NONE (~(unsigned int)0) - -/* The entire contents of the UnicodeData.txt file. */ -struct unicode_attribute unicode_attributes [0x110000]; - -/* Stores in unicode_attributes[i] the values from the given fields. */ -static void -fill_attribute (unsigned int i, - const char *field1, const char *field2, - const char *field3, const char *field4, - const char *field5, const char *field6, - const char *field7, const char *field8, - const char *field9, const char *field10, - const char *field11, const char *field12, - const char *field13, const char *field14) -{ - struct unicode_attribute * uni; - - if (i >= 0x110000) - { - fprintf (stderr, "index too large\n"); - exit (1); - } - if (strcmp (field2, "Cs") == 0) - /* Surrogates are UTF-16 artefacts, not real characters. Ignore them. */ - return; - uni = &unicode_attributes[i]; - /* Copy the strings. */ - uni->name = strdup (field1); - uni->category = (field2[0] == '\0' ? "" : strdup (field2)); - uni->combining = (field3[0] == '\0' ? "" : strdup (field3)); - uni->bidi = (field4[0] == '\0' ? "" : strdup (field4)); - uni->decomposition = (field5[0] == '\0' ? "" : strdup (field5)); - uni->decdigit = (field6[0] == '\0' ? "" : strdup (field6)); - uni->digit = (field7[0] == '\0' ? "" : strdup (field7)); - uni->numeric = (field8[0] == '\0' ? "" : strdup (field8)); - uni->mirrored = (field9[0] == 'Y'); - uni->oldname = (field10[0] == '\0' ? "" : strdup (field10)); - uni->comment = (field11[0] == '\0' ? "" : strdup (field11)); - uni->upper = (field12[0] =='\0' ? NONE : strtoul (field12, NULL, 16)); - uni->lower = (field13[0] =='\0' ? NONE : strtoul (field13, NULL, 16)); - uni->title = (field14[0] =='\0' ? NONE : strtoul (field14, NULL, 16)); -} - -/* Maximum length of a field in the UnicodeData.txt file. */ -#define FIELDLEN 120 - -/* Reads the next field from STREAM. The buffer BUFFER has size FIELDLEN. - Reads up to (but excluding) DELIM. - Returns 1 when a field was successfully read, otherwise 0. */ -static int -getfield (FILE *stream, char *buffer, int delim) -{ - int count = 0; - int c; - - for (; (c = getc (stream)), (c != EOF && c != delim); ) - { - /* The original unicode.org UnicodeData.txt file happens to have - CR/LF line terminators. Silently convert to LF. */ - if (c == '\r') - continue; - - /* Put c into the buffer. */ - if (++count >= FIELDLEN - 1) - { - fprintf (stderr, "field too long\n"); - exit (1); - } - *buffer++ = c; - } - - if (c == EOF) - return 0; - - *buffer = '\0'; - return 1; -} - -/* Stores in unicode_attributes[] the entire contents of the UnicodeData.txt - file. */ -static void -fill_attributes (const char *unicodedata_filename) -{ - unsigned int i, j; - FILE *stream; - char field0[FIELDLEN]; - char field1[FIELDLEN]; - char field2[FIELDLEN]; - char field3[FIELDLEN]; - char field4[FIELDLEN]; - char field5[FIELDLEN]; - char field6[FIELDLEN]; - char field7[FIELDLEN]; - char field8[FIELDLEN]; - char field9[FIELDLEN]; - char field10[FIELDLEN]; - char field11[FIELDLEN]; - char field12[FIELDLEN]; - char field13[FIELDLEN]; - char field14[FIELDLEN]; - int lineno = 0; - - for (i = 0; i < 0x110000; i++) - unicode_attributes[i].name = NULL; - - stream = fopen (unicodedata_filename, "r"); - if (stream == NULL) - { - fprintf (stderr, "error during fopen of '%s'\n", unicodedata_filename); - exit (1); - } - - for (;;) - { - int n; - - lineno++; - n = getfield (stream, field0, ';'); - n += getfield (stream, field1, ';'); - n += getfield (stream, field2, ';'); - n += getfield (stream, field3, ';'); - n += getfield (stream, field4, ';'); - n += getfield (stream, field5, ';'); - n += getfield (stream, field6, ';'); - n += getfield (stream, field7, ';'); - n += getfield (stream, field8, ';'); - n += getfield (stream, field9, ';'); - n += getfield (stream, field10, ';'); - n += getfield (stream, field11, ';'); - n += getfield (stream, field12, ';'); - n += getfield (stream, field13, ';'); - n += getfield (stream, field14, '\n'); - if (n == 0) - break; - if (n != 15) - { - fprintf (stderr, "short line in'%s':%d\n", - unicodedata_filename, lineno); - exit (1); - } - i = strtoul (field0, NULL, 16); - if (field1[0] == '<' - && strlen (field1) >= 9 - && !strcmp (field1 + strlen(field1) - 8, ", First>")) - { - /* Deal with a range. */ - lineno++; - n = getfield (stream, field0, ';'); - n += getfield (stream, field1, ';'); - n += getfield (stream, field2, ';'); - n += getfield (stream, field3, ';'); - n += getfield (stream, field4, ';'); - n += getfield (stream, field5, ';'); - n += getfield (stream, field6, ';'); - n += getfield (stream, field7, ';'); - n += getfield (stream, field8, ';'); - n += getfield (stream, field9, ';'); - n += getfield (stream, field10, ';'); - n += getfield (stream, field11, ';'); - n += getfield (stream, field12, ';'); - n += getfield (stream, field13, ';'); - n += getfield (stream, field14, '\n'); - if (n != 15) - { - fprintf (stderr, "missing end range in '%s':%d\n", - unicodedata_filename, lineno); - exit (1); - } - if (!(field1[0] == '<' - && strlen (field1) >= 8 - && !strcmp (field1 + strlen (field1) - 7, ", Last>"))) - { - fprintf (stderr, "missing end range in '%s':%d\n", - unicodedata_filename, lineno); - exit (1); - } - field1[strlen (field1) - 7] = '\0'; - j = strtoul (field0, NULL, 16); - for (; i <= j; i++) - fill_attribute (i, field1+1, field2, field3, field4, field5, - field6, field7, field8, field9, field10, - field11, field12, field13, field14); - } - else - { - /* Single character line */ - fill_attribute (i, field1, field2, field3, field4, field5, - field6, field7, field8, field9, field10, - field11, field12, field13, field14); - } - } - if (ferror (stream) || fclose (stream)) - { - fprintf (stderr, "error reading from '%s'\n", unicodedata_filename); - exit (1); - } -} - -/* Character mappings. */ - -static unsigned int -to_upper (unsigned int ch) -{ - if (unicode_attributes[ch].name != NULL - && unicode_attributes[ch].upper != NONE) - return unicode_attributes[ch].upper; - else - return ch; -} - -static unsigned int -to_lower (unsigned int ch) -{ - if (unicode_attributes[ch].name != NULL - && unicode_attributes[ch].lower != NONE) - return unicode_attributes[ch].lower; - else - return ch; -} - -static unsigned int -to_title (unsigned int ch) -{ - if (unicode_attributes[ch].name != NULL - && unicode_attributes[ch].title != NONE) - return unicode_attributes[ch].title; - else - return ch; -} - -/* Character class properties. */ - -static bool -is_upper (unsigned int ch) -{ - return (to_lower (ch) != ch); -} - -static bool -is_lower (unsigned int ch) -{ - return (to_upper (ch) != ch) - /* is lowercase, but without simple to_upper mapping. */ - || (ch == 0x00DF); -} - -static bool -is_alpha (unsigned int ch) -{ - return (unicode_attributes[ch].name != NULL - && ((unicode_attributes[ch].category[0] == 'L' - /* Theppitak Karoonboonyanan says - , should belong to is_punct. */ - && (ch != 0x0E2F) && (ch != 0x0E46)) - /* Theppitak Karoonboonyanan says - , .., .. are is_alpha. */ - || (ch == 0x0E31) - || (ch >= 0x0E34 && ch <= 0x0E3A) - || (ch >= 0x0E47 && ch <= 0x0E4E) - /* Avoid warning for . */ - || (ch == 0x0345) - /* Avoid warnings for ... */ - || (unicode_attributes[ch].category[0] == 'N' - && unicode_attributes[ch].category[1] == 'l') - /* Avoid warnings for ... */ - || (unicode_attributes[ch].category[0] == 'S' - && unicode_attributes[ch].category[1] == 'o' - && strstr (unicode_attributes[ch].name, " LETTER ") - != NULL) - /* Consider all the non-ASCII digits as alphabetic. - ISO C 99 forbids us to have them in category "digit", - but we want iswalnum to return true on them. */ - || (unicode_attributes[ch].category[0] == 'N' - && unicode_attributes[ch].category[1] == 'd' - && !(ch >= 0x0030 && ch <= 0x0039)))); -} - -static bool -is_digit (unsigned int ch) -{ -#if 0 - return (unicode_attributes[ch].name != NULL - && unicode_attributes[ch].category[0] == 'N' - && unicode_attributes[ch].category[1] == 'd'); - /* Note: U+0BE7..U+0BEF and U+1369..U+1371 are digit systems without - a zero. Must add <0> in front of them by hand. */ -#else - /* SUSV2 gives us some freedom for the "digit" category, but ISO C 99 - takes it away: - 7.25.2.1.5: - The iswdigit function tests for any wide character that corresponds - to a decimal-digit character (as defined in 5.2.1). - 5.2.1: - the 10 decimal digits 0 1 2 3 4 5 6 7 8 9 - */ - return (ch >= 0x0030 && ch <= 0x0039); -#endif -} - -static bool -is_outdigit (unsigned int ch) -{ - return (ch >= 0x0030 && ch <= 0x0039); -} - -static bool -is_blank (unsigned int ch) -{ - return (ch == 0x0009 /* '\t' */ - /* Category Zs without mention of "" */ - || (unicode_attributes[ch].name != NULL - && unicode_attributes[ch].category[0] == 'Z' - && unicode_attributes[ch].category[1] == 's' - && !strstr (unicode_attributes[ch].decomposition, ""))); -} - -static bool -is_space (unsigned int ch) -{ - /* Don't make U+00A0 a space. Non-breaking space means that all programs - should treat it like a punctuation character, not like a space. */ - return (ch == 0x0020 /* ' ' */ - || ch == 0x000C /* '\f' */ - || ch == 0x000A /* '\n' */ - || ch == 0x000D /* '\r' */ - || ch == 0x0009 /* '\t' */ - || ch == 0x000B /* '\v' */ - /* Categories Zl, Zp, and Zs without mention of "" */ - || (unicode_attributes[ch].name != NULL - && unicode_attributes[ch].category[0] == 'Z' - && (unicode_attributes[ch].category[1] == 'l' - || unicode_attributes[ch].category[1] == 'p' - || (unicode_attributes[ch].category[1] == 's' - && !strstr (unicode_attributes[ch].decomposition, - ""))))); -} - -static bool -is_cntrl (unsigned int ch) -{ - return (unicode_attributes[ch].name != NULL - && (!strcmp (unicode_attributes[ch].name, "") - /* Categories Zl and Zp */ - || (unicode_attributes[ch].category[0] == 'Z' - && (unicode_attributes[ch].category[1] == 'l' - || unicode_attributes[ch].category[1] == 'p')))); -} - -static bool -is_xdigit (unsigned int ch) -{ -#if 0 - return is_digit (ch) - || (ch >= 0x0041 && ch <= 0x0046) - || (ch >= 0x0061 && ch <= 0x0066); -#else - /* SUSV2 gives us some freedom for the "xdigit" category, but ISO C 99 - takes it away: - 7.25.2.1.12: - The iswxdigit function tests for any wide character that corresponds - to a hexadecimal-digit character (as defined in 6.4.4.1). - 6.4.4.1: - hexadecimal-digit: one of 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F - */ - return (ch >= 0x0030 && ch <= 0x0039) - || (ch >= 0x0041 && ch <= 0x0046) - || (ch >= 0x0061 && ch <= 0x0066); -#endif -} - -static bool -is_graph (unsigned int ch) -{ - return (unicode_attributes[ch].name != NULL - && strcmp (unicode_attributes[ch].name, "") - && !is_space (ch)); -} - -static bool -is_print (unsigned int ch) -{ - return (unicode_attributes[ch].name != NULL - && strcmp (unicode_attributes[ch].name, "") - /* Categories Zl and Zp */ - && !(unicode_attributes[ch].name != NULL - && unicode_attributes[ch].category[0] == 'Z' - && (unicode_attributes[ch].category[1] == 'l' - || unicode_attributes[ch].category[1] == 'p'))); -} - -static bool -is_punct (unsigned int ch) -{ -#if 0 - return (unicode_attributes[ch].name != NULL - && unicode_attributes[ch].category[0] == 'P'); -#else - /* The traditional POSIX definition of punctuation is every graphic, - non-alphanumeric character. */ - return (is_graph (ch) && !is_alpha (ch) && !is_digit (ch)); -#endif -} - -static bool -is_combining (unsigned int ch) -{ - /* Up to Unicode 3.0.1 we took the Combining property from the PropList.txt - file. In 3.0.1 it was identical to the union of the general categories - "Mn", "Mc", "Me". In Unicode 3.1 this property has been dropped from the - PropList.txt file, so we take the latter definition. */ - return (unicode_attributes[ch].name != NULL - && unicode_attributes[ch].category[0] == 'M' - && (unicode_attributes[ch].category[1] == 'n' - || unicode_attributes[ch].category[1] == 'c' - || unicode_attributes[ch].category[1] == 'e')); -} - -static bool -is_combining_level3 (unsigned int ch) -{ - return is_combining (ch) - && !(unicode_attributes[ch].combining[0] != '\0' - && unicode_attributes[ch].combining[0] != '0' - && strtoul (unicode_attributes[ch].combining, NULL, 10) >= 200); -} - -/* Return the UCS symbol string for a Unicode character. */ -static const char * -ucs_symbol (unsigned int i) -{ - static char buf[11+1]; - - sprintf (buf, (i < 0x10000 ? "" : ""), i); - return buf; -} - -/* Return the UCS symbol range string for a Unicode characters interval. */ -static const char * -ucs_symbol_range (unsigned int low, unsigned int high) -{ - static char buf[24+1]; - - strcpy (buf, ucs_symbol (low)); - strcat (buf, ".."); - strcat (buf, ucs_symbol (high)); - return buf; -} - -/* Output a character class (= property) table. */ - -static void -output_charclass (FILE *stream, const char *classname, - bool (*func) (unsigned int)) -{ - char table[0x110000]; - unsigned int i; - bool need_semicolon; - const int max_column = 75; - int column; - - for (i = 0; i < 0x110000; i++) - table[i] = (int) func (i); - - fprintf (stream, "%s ", classname); - need_semicolon = false; - column = 1000; - for (i = 0; i < 0x110000; ) - { - if (!table[i]) - i++; - else - { - unsigned int low, high; - char buf[25]; - - low = i; - do - i++; - while (i < 0x110000 && table[i]); - high = i - 1; - - if (low == high) - strcpy (buf, ucs_symbol (low)); - else - strcpy (buf, ucs_symbol_range (low, high)); - - if (need_semicolon) - { - fprintf (stream, ";"); - column++; - } - - if (column + strlen (buf) > max_column) - { - fprintf (stream, "/\n "); - column = 3; - } - - fprintf (stream, "%s", buf); - column += strlen (buf); - need_semicolon = true; - } - } - fprintf (stream, "\n"); -} - -/* Output a character mapping table. */ - -static void -output_charmap (FILE *stream, const char *mapname, - unsigned int (*func) (unsigned int)) -{ - char table[0x110000]; - unsigned int i; - bool need_semicolon; - const int max_column = 75; - int column; - - for (i = 0; i < 0x110000; i++) - table[i] = (func (i) != i); - - fprintf (stream, "%s ", mapname); - need_semicolon = false; - column = 1000; - for (i = 0; i < 0x110000; i++) - if (table[i]) - { - char buf[25+1]; - - strcpy (buf, "("); - strcat (buf, ucs_symbol (i)); - strcat (buf, ","); - strcat (buf, ucs_symbol (func (i))); - strcat (buf, ")"); - - if (need_semicolon) - { - fprintf (stream, ";"); - column++; - } - - if (column + strlen (buf) > max_column) - { - fprintf (stream, "/\n "); - column = 3; - } - - fprintf (stream, "%s", buf); - column += strlen (buf); - need_semicolon = true; - } - fprintf (stream, "\n"); -} - -/* Output the width table. */ - -static void -output_widthmap (FILE *stream) -{ -} - -/* Output the tables to the given file. */ - -static void -output_tables (const char *filename, const char *version) -{ - FILE *stream; - unsigned int ch; - - stream = fopen (filename, "w"); - if (stream == NULL) - { - fprintf (stderr, "cannot open '%s' for writing\n", filename); - exit (1); - } - - fprintf (stream, "escape_char /\n"); - fprintf (stream, "comment_char %%\n"); - fprintf (stream, "\n"); - fprintf (stream, "%% Generated automatically by gen-unicode-ctype for Unicode %s.\n", - version); - fprintf (stream, "\n"); - - fprintf (stream, "LC_IDENTIFICATION\n"); - fprintf (stream, "title \"Unicode %s FDCC-set\"\n", version); - fprintf (stream, "source \"UnicodeData.txt, PropList.txt\"\n"); - fprintf (stream, "address \"\"\n"); - fprintf (stream, "contact \"\"\n"); - fprintf (stream, "email \"bug-glibc-locales@gnu.org\"\n"); - fprintf (stream, "tel \"\"\n"); - fprintf (stream, "fax \"\"\n"); - fprintf (stream, "language \"\"\n"); - fprintf (stream, "territory \"Earth\"\n"); - fprintf (stream, "revision \"%s\"\n", version); - { - time_t now; - char date[11]; - now = time (NULL); - strftime (date, sizeof (date), "%Y-%m-%d", gmtime (&now)); - fprintf (stream, "date \"%s\"\n", date); - } - fprintf (stream, "category \"unicode:2001\";LC_CTYPE\n"); - fprintf (stream, "END LC_IDENTIFICATION\n"); - fprintf (stream, "\n"); - - /* Verifications. */ - for (ch = 0; ch < 0x110000; ch++) - { - /* toupper restriction: "Only characters specified for the keywords - lower and upper shall be specified. */ - if (to_upper (ch) != ch && !(is_lower (ch) || is_upper (ch))) - fprintf (stderr, - "%s is not upper|lower but toupper(0x%04X) = 0x%04X\n", - ucs_symbol (ch), ch, to_upper (ch)); - - /* tolower restriction: "Only characters specified for the keywords - lower and upper shall be specified. */ - if (to_lower (ch) != ch && !(is_lower (ch) || is_upper (ch))) - fprintf (stderr, - "%s is not upper|lower but tolower(0x%04X) = 0x%04X\n", - ucs_symbol (ch), ch, to_lower (ch)); - - /* alpha restriction: "Characters classified as either upper or lower - shall automatically belong to this class. */ - if ((is_lower (ch) || is_upper (ch)) && !is_alpha (ch)) - fprintf (stderr, "%s is upper|lower but not alpha\n", ucs_symbol (ch)); - - /* alpha restriction: "No character specified for the keywords cntrl, - digit, punct or space shall be specified." */ - if (is_alpha (ch) && is_cntrl (ch)) - fprintf (stderr, "%s is alpha and cntrl\n", ucs_symbol (ch)); - if (is_alpha (ch) && is_digit (ch)) - fprintf (stderr, "%s is alpha and digit\n", ucs_symbol (ch)); - if (is_alpha (ch) && is_punct (ch)) - fprintf (stderr, "%s is alpha and punct\n", ucs_symbol (ch)); - if (is_alpha (ch) && is_space (ch)) - fprintf (stderr, "%s is alpha and space\n", ucs_symbol (ch)); - - /* space restriction: "No character specified for the keywords upper, - lower, alpha, digit, graph or xdigit shall be specified." - upper, lower, alpha already checked above. */ - if (is_space (ch) && is_digit (ch)) - fprintf (stderr, "%s is space and digit\n", ucs_symbol (ch)); - if (is_space (ch) && is_graph (ch)) - fprintf (stderr, "%s is space and graph\n", ucs_symbol (ch)); - if (is_space (ch) && is_xdigit (ch)) - fprintf (stderr, "%s is space and xdigit\n", ucs_symbol (ch)); - - /* cntrl restriction: "No character specified for the keywords upper, - lower, alpha, digit, punct, graph, print or xdigit shall be - specified." upper, lower, alpha already checked above. */ - if (is_cntrl (ch) && is_digit (ch)) - fprintf (stderr, "%s is cntrl and digit\n", ucs_symbol (ch)); - if (is_cntrl (ch) && is_punct (ch)) - fprintf (stderr, "%s is cntrl and punct\n", ucs_symbol (ch)); - if (is_cntrl (ch) && is_graph (ch)) - fprintf (stderr, "%s is cntrl and graph\n", ucs_symbol (ch)); - if (is_cntrl (ch) && is_print (ch)) - fprintf (stderr, "%s is cntrl and print\n", ucs_symbol (ch)); - if (is_cntrl (ch) && is_xdigit (ch)) - fprintf (stderr, "%s is cntrl and xdigit\n", ucs_symbol (ch)); - - /* punct restriction: "No character specified for the keywords upper, - lower, alpha, digit, cntrl, xdigit or as the character shall - be specified." upper, lower, alpha, cntrl already checked above. */ - if (is_punct (ch) && is_digit (ch)) - fprintf (stderr, "%s is punct and digit\n", ucs_symbol (ch)); - if (is_punct (ch) && is_xdigit (ch)) - fprintf (stderr, "%s is punct and xdigit\n", ucs_symbol (ch)); - if (is_punct (ch) && (ch == 0x0020)) - fprintf (stderr, "%s is punct\n", ucs_symbol (ch)); - - /* graph restriction: "No character specified for the keyword cntrl - shall be specified." Already checked above. */ - - /* print restriction: "No character specified for the keyword cntrl - shall be specified." Already checked above. */ - - /* graph - print relation: differ only in the character. - How is this possible if there are more than one space character?! - I think susv2/xbd/locale.html should speak of "space characters", - not "space character". */ - if (is_print (ch) && !(is_graph (ch) || /* ch == 0x0020 */ is_space (ch))) - fprintf (stderr, - "%s is print but not graph|\n", ucs_symbol (ch)); - if (!is_print (ch) && (is_graph (ch) || ch == 0x0020)) - fprintf (stderr, - "%s is graph| but not print\n", ucs_symbol (ch)); - } - - fprintf (stream, "LC_CTYPE\n"); - output_charclass (stream, "upper", is_upper); - output_charclass (stream, "lower", is_lower); - output_charclass (stream, "alpha", is_alpha); - output_charclass (stream, "digit", is_digit); - output_charclass (stream, "outdigit", is_outdigit); - output_charclass (stream, "blank", is_blank); - output_charclass (stream, "space", is_space); - output_charclass (stream, "cntrl", is_cntrl); - output_charclass (stream, "punct", is_punct); - output_charclass (stream, "xdigit", is_xdigit); - output_charclass (stream, "graph", is_graph); - output_charclass (stream, "print", is_print); - output_charclass (stream, "class \"combining\";", is_combining); - output_charclass (stream, "class \"combining_level3\";", is_combining_level3); - output_charmap (stream, "toupper", to_upper); - output_charmap (stream, "tolower", to_lower); - output_charmap (stream, "map \"totitle\";", to_title); - output_widthmap (stream); - fprintf (stream, "END LC_CTYPE\n"); - - if (ferror (stream) || fclose (stream)) - { - fprintf (stderr, "error writing to '%s'\n", filename); - exit (1); - } -} - -int -main (int argc, char * argv[]) -{ - if (argc != 3) - { - fprintf (stderr, "Usage: %s UnicodeData.txt version\n", argv[0]); - exit (1); - } - - fill_attributes (argv[1]); - - output_tables ("unicode", argv[2]); - - return 0; -} diff --git a/test/locale/show-ucs-data.c b/test/locale/show-ucs-data.c deleted file mode 100644 index 9992ece42..000000000 --- a/test/locale/show-ucs-data.c +++ /dev/null @@ -1,62 +0,0 @@ -#include -#include -#include -#include - -int -main (int argc, char *argv[]) -{ - int n; - char *line = NULL; - size_t len = 0; - - for (n = 1; n < argc; ++n) - { - FILE *fp = fopen (argv[n], "r"); - if (fp == NULL) - continue; - - while (! feof (fp)) - { - ssize_t cnt = getline (&line, &len, fp); - char *runp; - if (cnt <= 0) - break; - - runp = line; - do - { - if (runp[0] == '<' && runp[1] == 'U' && isxdigit (runp[2]) - && isxdigit (runp[3]) && isxdigit (runp[4]) - && isxdigit (runp[5]) && runp[6] == '>') - { - unsigned int val = strtoul (runp + 2, NULL, 16); - - //putchar ('<'); - if (val < 128) - putchar (val); - else if (val < 0x800) - { - putchar (0xc0 | (val >> 6)); - putchar (0x80 | (val & 0x3f)); - } - else - { - putchar (0xe0 | (val >> 12)); - putchar (0x80 | ((val >> 6) & 0x3f)); - putchar (0x80 | (val & 0x3f)); - } - //putchar ('>'); - runp += 7; - } - else - putchar (*runp++); - } - while (runp < &line[cnt]); - } - - fclose (fp); - } - - return 0; -} diff --git a/test/locale/tst-C-locale.c b/test/locale/tst-C-locale.c deleted file mode 100644 index 282d53aac..000000000 --- a/test/locale/tst-C-locale.c +++ /dev/null @@ -1,497 +0,0 @@ -/* Tests of C and POSIX locale contents. - Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2000. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include - - -static int -run_test (const char *locname) -{ - struct lconv *lc; - const char *str; - const wchar_t *wstr; - int result = 0; - locale_t loc; - - /* ISO C stuff. */ - lc = localeconv (); - if (lc == NULL) - { - printf ("localeconv failed for locale %s\n", locname); - result = 1; - } - else - { -#define STRTEST(name, exp) \ - do \ - if (strcmp (lc->name, exp) != 0) \ - { \ - printf (#name " in locale %s wrong (is \"%s\", should be \"%s\")\n",\ - locname, lc->name, exp); \ - result = 1; \ - } \ - while (0) - STRTEST (decimal_point, "."); - STRTEST (thousands_sep, ""); - STRTEST (grouping, ""); - STRTEST (mon_decimal_point, ""); - STRTEST (mon_thousands_sep, ""); - STRTEST (mon_grouping, ""); - STRTEST (positive_sign, ""); - STRTEST (negative_sign, ""); - STRTEST (currency_symbol, ""); - STRTEST (int_curr_symbol, ""); - -#define CHARTEST(name, exp) \ - do \ - if (lc->name != exp) \ - { \ - printf (#name " in locale %s wrong (is %d, should be %d)\n", \ - locname, lc->name, CHAR_MAX); \ - result = 1; \ - } \ - while (0) - CHARTEST (frac_digits, CHAR_MAX); - CHARTEST (p_cs_precedes, CHAR_MAX); - CHARTEST (n_cs_precedes, CHAR_MAX); - CHARTEST (p_sep_by_space, CHAR_MAX); - CHARTEST (n_sep_by_space, CHAR_MAX); - CHARTEST (p_sign_posn, CHAR_MAX); - CHARTEST (n_sign_posn, CHAR_MAX); - CHARTEST (int_frac_digits, CHAR_MAX); - CHARTEST (int_p_cs_precedes, CHAR_MAX); - CHARTEST (int_n_cs_precedes, CHAR_MAX); - CHARTEST (int_p_sep_by_space, CHAR_MAX); - CHARTEST (int_n_sep_by_space, CHAR_MAX); - CHARTEST (int_p_sign_posn, CHAR_MAX); - CHARTEST (int_n_sign_posn, CHAR_MAX); - } - -#undef STRTEST -#define STRTEST(name, exp) \ - str = nl_langinfo (name); \ - if (strcmp (str, exp) != 0) \ - { \ - printf ("nl_langinfo(" #name ") in locale %s wrong " \ - "(is \"%s\", should be \"%s\")\n", locname, str, exp); \ - result = 1; \ - } -#define WSTRTEST(name, exp) \ - wstr = (wchar_t *) nl_langinfo (name); \ - if (wcscmp (wstr, exp) != 0) \ - { \ - printf ("nl_langinfo(" #name ") in locale %s wrong " \ - "(is \"%S\", should be \"%S\")\n", locname, wstr, exp); \ - result = 1; \ - } - - /* Unix stuff. */ - STRTEST (ABDAY_1, "Sun"); - STRTEST (ABDAY_2, "Mon"); - STRTEST (ABDAY_3, "Tue"); - STRTEST (ABDAY_4, "Wed"); - STRTEST (ABDAY_5, "Thu"); - STRTEST (ABDAY_6, "Fri"); - STRTEST (ABDAY_7, "Sat"); - STRTEST (DAY_1, "Sunday"); - STRTEST (DAY_2, "Monday"); - STRTEST (DAY_3, "Tuesday"); - STRTEST (DAY_4, "Wednesday"); - STRTEST (DAY_5, "Thursday"); - STRTEST (DAY_6, "Friday"); - STRTEST (DAY_7, "Saturday"); - STRTEST (ABMON_1, "Jan"); - STRTEST (ABMON_2, "Feb"); - STRTEST (ABMON_3, "Mar"); - STRTEST (ABMON_4, "Apr"); - STRTEST (ABMON_5, "May"); - STRTEST (ABMON_6, "Jun"); - STRTEST (ABMON_7, "Jul"); - STRTEST (ABMON_8, "Aug"); - STRTEST (ABMON_9, "Sep"); - STRTEST (ABMON_10, "Oct"); - STRTEST (ABMON_11, "Nov"); - STRTEST (ABMON_12, "Dec"); - STRTEST (MON_1, "January"); - STRTEST (MON_2, "February"); - STRTEST (MON_3, "March"); - STRTEST (MON_4, "April"); - STRTEST (MON_5, "May"); - STRTEST (MON_6, "June"); - STRTEST (MON_7, "July"); - STRTEST (MON_8, "August"); - STRTEST (MON_9, "September"); - STRTEST (MON_10, "October"); - STRTEST (MON_11, "November"); - STRTEST (MON_12, "December"); - STRTEST (AM_STR, "AM"); - STRTEST (PM_STR, "PM"); - STRTEST (D_T_FMT, "%a %b %e %H:%M:%S %Y"); - STRTEST (D_FMT, "%m/%d/%y"); - STRTEST (T_FMT, "%H:%M:%S"); - STRTEST (T_FMT_AMPM, "%I:%M:%S %p"); - STRTEST (ERA, ""); - STRTEST (ERA_D_FMT, ""); - STRTEST (ERA_T_FMT, ""); - STRTEST (ERA_D_T_FMT, ""); - STRTEST (ALT_DIGITS, ""); - - STRTEST (RADIXCHAR, "."); - STRTEST (THOUSEP, ""); - - STRTEST (YESEXPR, "^[yY]"); - STRTEST (NOEXPR, "^[nN]"); - - /* Extensions. */ - WSTRTEST (_NL_WABDAY_1, L"Sun"); - WSTRTEST (_NL_WABDAY_2, L"Mon"); - WSTRTEST (_NL_WABDAY_3, L"Tue"); - WSTRTEST (_NL_WABDAY_4, L"Wed"); - WSTRTEST (_NL_WABDAY_5, L"Thu"); - WSTRTEST (_NL_WABDAY_6, L"Fri"); - WSTRTEST (_NL_WABDAY_7, L"Sat"); - WSTRTEST (_NL_WDAY_1, L"Sunday"); - WSTRTEST (_NL_WDAY_2, L"Monday"); - WSTRTEST (_NL_WDAY_3, L"Tuesday"); - WSTRTEST (_NL_WDAY_4, L"Wednesday"); - WSTRTEST (_NL_WDAY_5, L"Thursday"); - WSTRTEST (_NL_WDAY_6, L"Friday"); - WSTRTEST (_NL_WDAY_7, L"Saturday"); - WSTRTEST (_NL_WABMON_1, L"Jan"); - WSTRTEST (_NL_WABMON_2, L"Feb"); - WSTRTEST (_NL_WABMON_3, L"Mar"); - WSTRTEST (_NL_WABMON_4, L"Apr"); - WSTRTEST (_NL_WABMON_5, L"May"); - WSTRTEST (_NL_WABMON_6, L"Jun"); - WSTRTEST (_NL_WABMON_7, L"Jul"); - WSTRTEST (_NL_WABMON_8, L"Aug"); - WSTRTEST (_NL_WABMON_9, L"Sep"); - WSTRTEST (_NL_WABMON_10, L"Oct"); - WSTRTEST (_NL_WABMON_11, L"Nov"); - WSTRTEST (_NL_WABMON_12, L"Dec"); - WSTRTEST (_NL_WMON_1, L"January"); - WSTRTEST (_NL_WMON_2, L"February"); - WSTRTEST (_NL_WMON_3, L"March"); - WSTRTEST (_NL_WMON_4, L"April"); - WSTRTEST (_NL_WMON_5, L"May"); - WSTRTEST (_NL_WMON_6, L"June"); - WSTRTEST (_NL_WMON_7, L"July"); - WSTRTEST (_NL_WMON_8, L"August"); - WSTRTEST (_NL_WMON_9, L"September"); - WSTRTEST (_NL_WMON_10, L"October"); - WSTRTEST (_NL_WMON_11, L"November"); - WSTRTEST (_NL_WMON_12, L"December"); - WSTRTEST (_NL_WAM_STR, L"AM"); - WSTRTEST (_NL_WPM_STR, L"PM"); - WSTRTEST (_NL_WD_T_FMT, L"%a %b %e %H:%M:%S %Y"); - WSTRTEST (_NL_WD_FMT, L"%m/%d/%y"); - WSTRTEST (_NL_WT_FMT, L"%H:%M:%S"); - WSTRTEST (_NL_WT_FMT_AMPM, L"%I:%M:%S %p"); - WSTRTEST (_NL_WERA_D_FMT, L""); - WSTRTEST (_NL_WERA_T_FMT, L""); - WSTRTEST (_NL_WERA_D_T_FMT, L""); - WSTRTEST (_NL_WALT_DIGITS, L""); - - STRTEST (_DATE_FMT, "%a %b %e %H:%M:%S %Z %Y"); - WSTRTEST (_NL_W_DATE_FMT, L"%a %b %e %H:%M:%S %Z %Y"); - - STRTEST (INT_CURR_SYMBOL, ""); - STRTEST (CURRENCY_SYMBOL, ""); - STRTEST (MON_DECIMAL_POINT, ""); - STRTEST (MON_THOUSANDS_SEP, ""); - STRTEST (MON_GROUPING, ""); - STRTEST (POSITIVE_SIGN, ""); - STRTEST (NEGATIVE_SIGN, ""); - STRTEST (GROUPING, ""); - - STRTEST (YESSTR, ""); - STRTEST (NOSTR, ""); - - /* Test the new locale mechanisms. */ - loc = newlocale (LC_ALL_MASK, locname, NULL); - if (loc == NULL) - { - printf ("cannot create locale object for locale %s\n", locname); - result = 1; - } - else - { - int c; - -#undef STRTEST -#define STRTEST(name, exp) \ - str = nl_langinfo_l (name, loc); \ - if (strcmp (str, exp) != 0) \ - { \ - printf ("nl_langinfo_l(" #name ") in locale %s wrong " \ - "(is \"%s\", should be \"%s\")\n", locname, str, exp); \ - result = 1; \ - } -#undef WSTRTEST -#define WSTRTEST(name, exp) \ - wstr = (wchar_t *) nl_langinfo_l (name, loc); \ - if (wcscmp (wstr, exp) != 0) \ - { \ - printf ("nl_langinfo_l(" #name ") in locale %s wrong " \ - "(is \"%S\", should be \"%S\")\n", locname, wstr, exp); \ - result = 1; \ - } - - /* Unix stuff. */ - STRTEST (ABDAY_1, "Sun"); - STRTEST (ABDAY_2, "Mon"); - STRTEST (ABDAY_3, "Tue"); - STRTEST (ABDAY_4, "Wed"); - STRTEST (ABDAY_5, "Thu"); - STRTEST (ABDAY_6, "Fri"); - STRTEST (ABDAY_7, "Sat"); - STRTEST (DAY_1, "Sunday"); - STRTEST (DAY_2, "Monday"); - STRTEST (DAY_3, "Tuesday"); - STRTEST (DAY_4, "Wednesday"); - STRTEST (DAY_5, "Thursday"); - STRTEST (DAY_6, "Friday"); - STRTEST (DAY_7, "Saturday"); - STRTEST (ABMON_1, "Jan"); - STRTEST (ABMON_2, "Feb"); - STRTEST (ABMON_3, "Mar"); - STRTEST (ABMON_4, "Apr"); - STRTEST (ABMON_5, "May"); - STRTEST (ABMON_6, "Jun"); - STRTEST (ABMON_7, "Jul"); - STRTEST (ABMON_8, "Aug"); - STRTEST (ABMON_9, "Sep"); - STRTEST (ABMON_10, "Oct"); - STRTEST (ABMON_11, "Nov"); - STRTEST (ABMON_12, "Dec"); - STRTEST (MON_1, "January"); - STRTEST (MON_2, "February"); - STRTEST (MON_3, "March"); - STRTEST (MON_4, "April"); - STRTEST (MON_5, "May"); - STRTEST (MON_6, "June"); - STRTEST (MON_7, "July"); - STRTEST (MON_8, "August"); - STRTEST (MON_9, "September"); - STRTEST (MON_10, "October"); - STRTEST (MON_11, "November"); - STRTEST (MON_12, "December"); - STRTEST (AM_STR, "AM"); - STRTEST (PM_STR, "PM"); - STRTEST (D_T_FMT, "%a %b %e %H:%M:%S %Y"); - STRTEST (D_FMT, "%m/%d/%y"); - STRTEST (T_FMT, "%H:%M:%S"); - STRTEST (T_FMT_AMPM, "%I:%M:%S %p"); - STRTEST (ERA, ""); - STRTEST (ERA_D_FMT, ""); - STRTEST (ERA_T_FMT, ""); - STRTEST (ERA_D_T_FMT, ""); - STRTEST (ALT_DIGITS, ""); - - STRTEST (RADIXCHAR, "."); - STRTEST (THOUSEP, ""); - - STRTEST (YESEXPR, "^[yY]"); - STRTEST (NOEXPR, "^[nN]"); - - /* Extensions. */ - WSTRTEST (_NL_WABDAY_1, L"Sun"); - WSTRTEST (_NL_WABDAY_2, L"Mon"); - WSTRTEST (_NL_WABDAY_3, L"Tue"); - WSTRTEST (_NL_WABDAY_4, L"Wed"); - WSTRTEST (_NL_WABDAY_5, L"Thu"); - WSTRTEST (_NL_WABDAY_6, L"Fri"); - WSTRTEST (_NL_WABDAY_7, L"Sat"); - WSTRTEST (_NL_WDAY_1, L"Sunday"); - WSTRTEST (_NL_WDAY_2, L"Monday"); - WSTRTEST (_NL_WDAY_3, L"Tuesday"); - WSTRTEST (_NL_WDAY_4, L"Wednesday"); - WSTRTEST (_NL_WDAY_5, L"Thursday"); - WSTRTEST (_NL_WDAY_6, L"Friday"); - WSTRTEST (_NL_WDAY_7, L"Saturday"); - WSTRTEST (_NL_WABMON_1, L"Jan"); - WSTRTEST (_NL_WABMON_2, L"Feb"); - WSTRTEST (_NL_WABMON_3, L"Mar"); - WSTRTEST (_NL_WABMON_4, L"Apr"); - WSTRTEST (_NL_WABMON_5, L"May"); - WSTRTEST (_NL_WABMON_6, L"Jun"); - WSTRTEST (_NL_WABMON_7, L"Jul"); - WSTRTEST (_NL_WABMON_8, L"Aug"); - WSTRTEST (_NL_WABMON_9, L"Sep"); - WSTRTEST (_NL_WABMON_10, L"Oct"); - WSTRTEST (_NL_WABMON_11, L"Nov"); - WSTRTEST (_NL_WABMON_12, L"Dec"); - WSTRTEST (_NL_WMON_1, L"January"); - WSTRTEST (_NL_WMON_2, L"February"); - WSTRTEST (_NL_WMON_3, L"March"); - WSTRTEST (_NL_WMON_4, L"April"); - WSTRTEST (_NL_WMON_5, L"May"); - WSTRTEST (_NL_WMON_6, L"June"); - WSTRTEST (_NL_WMON_7, L"July"); - WSTRTEST (_NL_WMON_8, L"August"); - WSTRTEST (_NL_WMON_9, L"September"); - WSTRTEST (_NL_WMON_10, L"October"); - WSTRTEST (_NL_WMON_11, L"November"); - WSTRTEST (_NL_WMON_12, L"December"); - WSTRTEST (_NL_WAM_STR, L"AM"); - WSTRTEST (_NL_WPM_STR, L"PM"); - WSTRTEST (_NL_WD_T_FMT, L"%a %b %e %H:%M:%S %Y"); - WSTRTEST (_NL_WD_FMT, L"%m/%d/%y"); - WSTRTEST (_NL_WT_FMT, L"%H:%M:%S"); - WSTRTEST (_NL_WT_FMT_AMPM, L"%I:%M:%S %p"); - WSTRTEST (_NL_WERA_D_FMT, L""); - WSTRTEST (_NL_WERA_T_FMT, L""); - WSTRTEST (_NL_WERA_D_T_FMT, L""); - WSTRTEST (_NL_WALT_DIGITS, L""); - - STRTEST (_DATE_FMT, "%a %b %e %H:%M:%S %Z %Y"); - WSTRTEST (_NL_W_DATE_FMT, L"%a %b %e %H:%M:%S %Z %Y"); - - STRTEST (INT_CURR_SYMBOL, ""); - STRTEST (CURRENCY_SYMBOL, ""); - STRTEST (MON_DECIMAL_POINT, ""); - STRTEST (MON_THOUSANDS_SEP, ""); - STRTEST (MON_GROUPING, ""); - STRTEST (POSITIVE_SIGN, ""); - STRTEST (NEGATIVE_SIGN, ""); - STRTEST (GROUPING, ""); - - STRTEST (YESSTR, ""); - STRTEST (NOSTR, ""); - - /* Character class tests. */ - for (c = 0; c < 128; ++c) - { -#define CLASSTEST(name) \ - if (is##name (c) != is##name##_l (c, loc)) \ - { \ - printf ("is%s('\\%o') != is%s_l('\\%o')\n", \ - #name, c, #name, c); \ - result = 1; \ - } - CLASSTEST (alnum); - CLASSTEST (alpha); - CLASSTEST (blank); - CLASSTEST (cntrl); - CLASSTEST (digit); - CLASSTEST (lower); - CLASSTEST (graph); - CLASSTEST (print); - CLASSTEST (punct); - CLASSTEST (space); - CLASSTEST (upper); - CLASSTEST (xdigit); - - /* Character mapping tests. */ -#define MAPTEST(name) \ - if (to##name (c) != to##name##_l (c, loc)) \ - { \ - printf ("to%s('\\%o') != to%s_l('\\%o'): '\\%o' vs '\\%o'\n", \ - #name, c, #name, c, \ - to##name (c), to##name##_l (c, loc)); \ - result = 1; \ - } - MAPTEST (lower); - MAPTEST (upper); - } - - /* Character class tests, this time for wide characters. Note that - this only works because we know that the internal encoding is - UCS4. */ - for (c = 0; c < 128; ++c) - { -#undef CLASSTEST -#define CLASSTEST(name) \ - if (isw##name (c) != isw##name##_l (c, loc)) \ - { \ - printf ("isw%s('\\%o') != isw%s_l('\\%o')\n", \ - #name, c, #name, c); \ - result = 1; \ - } - CLASSTEST (alnum); - CLASSTEST (alpha); - CLASSTEST (blank); - CLASSTEST (cntrl); - CLASSTEST (digit); - CLASSTEST (lower); - CLASSTEST (graph); - CLASSTEST (print); - CLASSTEST (punct); - CLASSTEST (space); - CLASSTEST (upper); - CLASSTEST (xdigit); - - /* Character mapping tests. Note that - this only works because we know that the internal encoding is - UCS4. */ -#undef MAPTEST -#define MAPTEST(name) \ - if (tow##name (c) != tow##name##_l (c, loc)) \ - { \ - printf ("tow%s('\\%o') != tow%s_l('\\%o'): '\\%o' vs '\\%o'\n",\ - #name, c, #name, c, \ - tow##name (c), tow##name##_l (c, loc)); \ - result = 1; \ - } - MAPTEST (lower); - MAPTEST (upper); - } - - freelocale (loc); - } - - return result; -} - - -static int -do_test (void) -{ - int result; - - /* First use the name "C". */ - if (setlocale (LC_ALL, "C") == NULL) - { - puts ("cannot set C locale"); - result = 1; - } - else - result = run_test ("C"); - - /* Then the name "POSIX". */ - if (setlocale (LC_ALL, "POSIX") == NULL) - { - puts ("cannot set POSIX locale"); - result = 1; - } - else - result |= run_test ("POSIX"); - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/locale/tst-ctype-de_DE.ISO-8859-1.in b/test/locale/tst-ctype-de_DE.ISO-8859-1.in deleted file mode 100644 index f71d76cc2..000000000 --- a/test/locale/tst-ctype-de_DE.ISO-8859-1.in +++ /dev/null @@ -1,56 +0,0 @@ -lower  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ - 000000000000000000000100000000000000000000000000 -lower ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ - 000000000000000111111111111111111111111011111111 -upper  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ - 000000000000000000000000000000001111111111111111 -upper ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ - 111111101111111000000000000000000000000000000000 -alpha  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ - 000000000010000000000100001000001111111111111111 -alpha ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ - 111111101111111111111111111111111111111011111111 -digit  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ - 000000000000000000000000000000000000000000000000 -digit ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ - 000000000000000000000000000000000000000000000000 -xdigit  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ - 000000000000000000000000000000000000000000000000 -xdigit ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ - 000000000000000000000000000000000000000000000000 -space  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ - 000000000000000000000000000000000000000000000000 -space ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ - 000000000000000000000000000000000000000000000000 -print  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ - 111111111111111111111111111111111111111111111111 -print ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ - 111111111111111111111111111111111111111111111111 -graph  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ - 111111111111111111111111111111111111111111111111 -graph ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ - 111111111111111111111111111111111111111111111111 -blank  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ - 000000000000000000000000000000000000000000000000 -blank ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ - 000000000000000000000000000000000000000000000000 -cntrl  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ - 000000000000000000000000000000000000000000000000 -cntrl ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ - 000000000000000000000000000000000000000000000000 -punct  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ - 111111111101111111111011110111110000000000000000 -punct ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ - 000000010000000000000000000000000000000100000000 -alnum  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ - 000000000010000000000100001000001111111111111111 -alnum ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ - 111111101111111111111111111111111111111011111111 -tolower  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ -  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿àáâãäåæçèéêëìíîï -tolower ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ - ðñòóôõö×øùúûüýþßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ -toupper  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ -  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ -toupper ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ - ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ÷ØÙÚÛÜÝÞÿ diff --git a/test/locale/tst-ctype.c b/test/locale/tst-ctype.c deleted file mode 100644 index d61739851..000000000 --- a/test/locale/tst-ctype.c +++ /dev/null @@ -1,446 +0,0 @@ -/* Copyright (C) 2000,02, 05 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2000. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static const char lower[] = "abcdefghijklmnopqrstuvwxyz"; -static const char upper[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; -static const char digits[] = "0123456789"; -static const char cntrl[] = "\ -\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\ -\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f "; - - -static struct classes -{ - const char *name; - int mask; -} classes[] = -{ -#define ENTRY(name) { #name, _IS##name } - ENTRY (upper), - ENTRY (lower), - ENTRY (alpha), - ENTRY (digit), - ENTRY (xdigit), - ENTRY (space), - ENTRY (print), - ENTRY (graph), - ENTRY (blank), - ENTRY (cntrl), - ENTRY (punct), - ENTRY (alnum) -}; -#define nclasses (sizeof (classes) / sizeof (classes[0])) - - -#define FAIL(str, args...) \ - { \ - printf (" " str "\n", ##args); \ - ++errors; \ - } - - -int -main (void) -{ - const char *cp; - const char *cp2; - int errors = 0; - char *inpline = NULL; - size_t inplinelen = 0; - char *resline = NULL; - size_t reslinelen = 0; - size_t n; - - setlocale (LC_ALL, ""); - - printf ("Testing the ctype data of the `%s' locale\n", - setlocale (LC_CTYPE, NULL)); - -#if 0 - /* Just for debugging. */ - - /* Contents of the class array. */ - printf ("\ -upper = %04x lower = %04x alpha = %04x digit = %04x xdigit = %04x\n\ -space = %04x print = %04x graph = %04x blank = %04x cntrl = %04x\n\ -punct = %04x alnum = %04x\n", - _ISupper, _ISlower, _ISalpha, _ISdigit, _ISxdigit, - _ISspace, _ISprint, _ISgraph, _ISblank, _IScntrl, - _ISpunct, _ISalnum); - - while (n < 256) - { - if (n % 8 == 0) - printf ("%02x: ", n); - printf ("%04x%s", __ctype_b[n], (n + 1) % 8 == 0 ? "\n" : " "); - ++n; - } -#endif - - puts (" Test of ASCII character range\n special NUL byte handling"); - if (isupper ('\0')) - FAIL ("isupper ('\\0') is true"); - if (islower ('\0')) - FAIL ("islower ('\\0') is true"); - if (isalpha ('\0')) - FAIL ("isalpha ('\\0') is true"); - if (isdigit ('\0')) - FAIL ("isdigit ('\\0') is true"); - if (isxdigit ('\0')) - FAIL ("isxdigit ('\\0') is true"); - if (isspace ('\0')) - FAIL ("isspace ('\\0') is true"); - if (isprint ('\0')) - FAIL ("isprint ('\\0') is true"); - if (isgraph ('\0')) - FAIL ("isgraph ('\\0') is true"); - if (isblank ('\0')) - FAIL ("isblank ('\\0') is true"); - if (! iscntrl ('\0')) - FAIL ("iscntrl ('\\0') not true"); - if (ispunct ('\0')) - FAIL ("ispunct ('\\0') is true"); - if (isalnum ('\0')) - FAIL ("isalnum ('\\0') is true"); - - puts (" islower()"); - for (cp = lower; *cp != '\0'; ++cp) - if (! islower (*cp)) - FAIL ("islower ('%c') not true", *cp); - for (cp = upper; *cp != '\0'; ++cp) - if (islower (*cp)) - FAIL ("islower ('%c') is true", *cp); - for (cp = digits; *cp != '\0'; ++cp) - if (islower (*cp)) - FAIL ("islower ('%c') is true", *cp); - for (cp = cntrl; *cp != '\0'; ++cp) - if (islower (*cp)) - FAIL ("islower ('\\x%02x') is true", *cp); - - puts (" isupper()"); - for (cp = lower; *cp != '\0'; ++cp) - if (isupper (*cp)) - FAIL ("isupper ('%c') is true", *cp); - for (cp = upper; *cp != '\0'; ++cp) - if (! isupper (*cp)) - FAIL ("isupper ('%c') not true", *cp); - for (cp = digits; *cp != '\0'; ++cp) - if (isupper (*cp)) - FAIL ("isupper ('%c') is true", *cp); - for (cp = cntrl; *cp != '\0'; ++cp) - if (isupper (*cp)) - FAIL ("isupper ('\\x%02x') is true", *cp); - - puts (" isalpha()"); - for (cp = lower; *cp != '\0'; ++cp) - if (! isalpha (*cp)) - FAIL ("isalpha ('%c') not true", *cp); - for (cp = upper; *cp != '\0'; ++cp) - if (! isalpha (*cp)) - FAIL ("isalpha ('%c') not true", *cp); - for (cp = digits; *cp != '\0'; ++cp) - if (isalpha (*cp)) - FAIL ("isalpha ('%c') is true", *cp); - for (cp = cntrl; *cp != '\0'; ++cp) - if (isalpha (*cp)) - FAIL ("isalpha ('\\x%02x') is true", *cp); - - puts (" isdigit()"); - for (cp = lower; *cp != '\0'; ++cp) - if (isdigit (*cp)) - FAIL ("isdigit ('%c') is true", *cp); - for (cp = upper; *cp != '\0'; ++cp) - if (isdigit (*cp)) - FAIL ("isdigit ('%c') is true", *cp); - for (cp = digits; *cp != '\0'; ++cp) - if (! isdigit (*cp)) - FAIL ("isdigit ('%c') not true", *cp); - for (cp = cntrl; *cp != '\0'; ++cp) - if (isdigit (*cp)) - FAIL ("isdigit ('\\x%02x') is true", *cp); - - puts (" isxdigit()"); - for (cp = lower; *cp != '\0'; ++cp) - if ((! isxdigit (*cp) && cp - lower < 6) - || (isxdigit (*cp) && cp - lower >= 6)) - FAIL ("isxdigit ('%c') %s true", *cp, cp - upper < 6 ? "not" : "is"); - for (cp = upper; *cp != '\0'; ++cp) - if ((! isxdigit (*cp) && cp - upper < 6) - || (isxdigit (*cp) && cp - upper >= 6)) - FAIL ("isxdigit ('%c') %s true", *cp, cp - upper < 6 ? "not" : "is"); - for (cp = digits; *cp != '\0'; ++cp) - if (! isxdigit (*cp)) - FAIL ("isxdigit ('%c') not true", *cp); - for (cp = cntrl; *cp != '\0'; ++cp) - if (isxdigit (*cp)) - FAIL ("isxdigit ('\\x%02x') is true", *cp); - - puts (" isspace()"); - for (cp = lower; *cp != '\0'; ++cp) - if (isspace (*cp)) - FAIL ("isspace ('%c') is true", *cp); - for (cp = upper; *cp != '\0'; ++cp) - if (isspace (*cp)) - FAIL ("isspace ('%c') is true", *cp); - for (cp = digits; *cp != '\0'; ++cp) - if (isspace (*cp)) - FAIL ("isspace ('%c') is true", *cp); - for (cp = cntrl; *cp != '\0'; ++cp) - if ((isspace (*cp) && ((*cp < '\x09' || *cp > '\x0d') && *cp != ' ')) - || (! isspace (*cp) - && ((*cp >= '\x09' && *cp <= '\x0d') || *cp == ' '))) - FAIL ("isspace ('\\x%02x') %s true", *cp, - (*cp < '\x09' || *cp > '\x0d') ? "is" : "not"); - - puts (" isprint()"); - for (cp = lower; *cp != '\0'; ++cp) - if (! isprint (*cp)) - FAIL ("isprint ('%c') not true", *cp); - for (cp = upper; *cp != '\0'; ++cp) - if (! isprint (*cp)) - FAIL ("isprint ('%c') not true", *cp); - for (cp = digits; *cp != '\0'; ++cp) - if (! isprint (*cp)) - FAIL ("isprint ('%c') not true", *cp); - for (cp = cntrl; *cp != '\0'; ++cp) - if ((isprint (*cp) && *cp != ' ') - || (! isprint (*cp) && *cp == ' ')) - FAIL ("isprint ('\\x%02x') is true", *cp); - - puts (" isgraph()"); - for (cp = lower; *cp != '\0'; ++cp) - if (! isgraph (*cp)) - FAIL ("isgraph ('%c') not true", *cp); - for (cp = upper; *cp != '\0'; ++cp) - if (! isgraph (*cp)) - FAIL ("isgraph ('%c') not true", *cp); - for (cp = digits; *cp != '\0'; ++cp) - if (! isgraph (*cp)) - FAIL ("isgraph ('%c') not true", *cp); - for (cp = cntrl; *cp != '\0'; ++cp) - if (isgraph (*cp)) - FAIL ("isgraph ('\\x%02x') is true", *cp); - - puts (" isblank()"); - for (cp = lower; *cp != '\0'; ++cp) - if (isblank (*cp)) - FAIL ("isblank ('%c') is true", *cp); - for (cp = upper; *cp != '\0'; ++cp) - if (isblank (*cp)) - FAIL ("isblank ('%c') is true", *cp); - for (cp = digits; *cp != '\0'; ++cp) - if (isblank (*cp)) - FAIL ("isblank ('%c') is true", *cp); - for (cp = cntrl; *cp != '\0'; ++cp) - if ((isblank (*cp) && *cp != '\x09' && *cp != ' ') - || (! isblank (*cp) && (*cp == '\x09' || *cp == ' '))) - FAIL ("isblank ('\\x%02x') %s true", *cp, *cp != '\x09' ? "is" : "not"); - - puts (" iscntrl()"); - for (cp = lower; *cp != '\0'; ++cp) - if (iscntrl (*cp)) - FAIL ("iscntrl ('%c') is true", *cp); - for (cp = upper; *cp != '\0'; ++cp) - if (iscntrl (*cp)) - FAIL ("iscntrl ('%c') is true", *cp); - for (cp = digits; *cp != '\0'; ++cp) - if (iscntrl (*cp)) - FAIL ("iscntrl ('%c') is true", *cp); - for (cp = cntrl; *cp != '\0'; ++cp) - if ((iscntrl (*cp) && *cp == ' ') - || (! iscntrl (*cp) && *cp != ' ')) - FAIL ("iscntrl ('\\x%02x') not true", *cp); - - puts (" ispunct()"); - for (cp = lower; *cp != '\0'; ++cp) - if (ispunct (*cp)) - FAIL ("ispunct ('%c') is true", *cp); - for (cp = upper; *cp != '\0'; ++cp) - if (ispunct (*cp)) - FAIL ("ispunct ('%c') is true", *cp); - for (cp = digits; *cp != '\0'; ++cp) - if (ispunct (*cp)) - FAIL ("ispunct ('%c') is true", *cp); - for (cp = cntrl; *cp != '\0'; ++cp) - if (ispunct (*cp)) - FAIL ("ispunct ('\\x%02x') is true", *cp); - - puts (" isalnum()"); - for (cp = lower; *cp != '\0'; ++cp) - if (! isalnum (*cp)) - FAIL ("isalnum ('%c') not true", *cp); - for (cp = upper; *cp != '\0'; ++cp) - if (! isalnum (*cp)) - FAIL ("isalnum ('%c') not true", *cp); - for (cp = digits; *cp != '\0'; ++cp) - if (! isalnum (*cp)) - FAIL ("isalnum ('%c') not true", *cp); - for (cp = cntrl; *cp != '\0'; ++cp) - if (isalnum (*cp)) - FAIL ("isalnum ('\\x%02x') is true", *cp); - - - puts (" tolower()"); - for (cp = lower; *cp != '\0'; ++cp) - if (tolower (*cp) != *cp) - FAIL ("tolower ('%c') != '%c'", *cp, *cp); - for (cp = upper, cp2 = lower; *cp != '\0'; ++cp, ++cp2) - if (tolower (*cp) != *cp2) - FAIL ("tolower ('%c') != '%c'", *cp, *cp2); - for (cp = digits; *cp != '\0'; ++cp) - if (tolower (*cp) != *cp) - FAIL ("tolower ('%c') != '%c'", *cp, *cp); - for (cp = cntrl; *cp != '\0'; ++cp) - if (tolower (*cp) != *cp) - FAIL ("tolower ('\\x%02x') != '\\x%02x'", *cp, *cp); - - puts (" toupper()"); - for (cp = lower, cp2 = upper; *cp != '\0'; ++cp, ++cp2) - if (toupper (*cp) != *cp2) - FAIL ("toupper ('%c') != '%c'", *cp, *cp2); - for (cp = upper; *cp != '\0'; ++cp) - if (toupper (*cp) != *cp) - FAIL ("toupper ('%c') != '%c'", *cp, *cp); - for (cp = digits; *cp != '\0'; ++cp) - if (toupper (*cp) != *cp) - FAIL ("toupper ('%c') != '%c'", *cp, *cp); - for (cp = cntrl; *cp != '\0'; ++cp) - if (toupper (*cp) != *cp) - FAIL ("toupper ('\\x%02x') != '\\x%02x'", *cp, *cp); - - - /* Now some locale specific tests. */ - while (! feof (stdin)) - { - unsigned char *inp; - unsigned char *resp; - - if (getline (&inpline, &inplinelen, stdin) <= 0 - || getline (&resline, &reslinelen, stdin) <= 0) - break; - - inp = (unsigned char *) strchr (inpline, '\n'); - if (inp != NULL) - *inp = '\0'; - resp = (unsigned char *) strchr (resline, '\n'); - if (resp != NULL) - *resp = '\0'; - - inp = (unsigned char *) inpline; - while (*inp != ' ' && *inp != '\t' && *inp && *inp != '\n' - && *inp != '\0') - ++inp; - - if (*inp == '\0') - { - printf ("line \"%s\" is without content\n", inpline); - continue; - } - *inp++ = '\0'; - while (*inp == ' ' || *inp == '\t') - ++inp; - - /* Try all classes. */ - for (n = 0; n < nclasses; ++n) - if (strcmp (inpline, classes[n].name) == 0) - break; - - resp = (unsigned char *) resline; - while (*resp == ' ' || *resp == '\t') - ++resp; - - if (strlen ((char *) inp) != strlen ((char *) resp)) - { - printf ("lines \"%.20s\"... and \"%.20s\" have not the same length\n", - inp, resp); - continue; - } - - if (n < nclasses) - { - if (strspn ((char *) resp, "01") != strlen ((char *) resp)) - { - printf ("result string \"%s\" malformed\n", resp); - continue; - } - - printf (" Locale-specific tests for `%s'\n", inpline); - - while (*inp != '\0' && *inp != '\n') - { - if (((__ctype_b[(unsigned int) *inp] & classes[n].mask) != 0) - != (*resp != '0')) - { - printf (" is%s('%c' = '\\x%02x') %s true\n", inpline, - *inp, *inp, *resp == '1' ? "not" : "is"); - ++errors; - } - ++inp; - ++resp; - } - } - else if (strcmp (inpline, "tolower") == 0) - { - while (*inp != '\0') - { - if (tolower (*inp) != *resp) - { - printf (" tolower('%c' = '\\x%02x') != '%c'\n", - *inp, *inp, *resp); - ++errors; - } - ++inp; - ++resp; - } - } - else if (strcmp (inpline, "toupper") == 0) - { - while (*inp != '\0') - { - if (toupper (*inp) != *resp) - { - printf (" toupper('%c' = '\\x%02x') != '%c'\n", - *inp, *inp, *resp); - ++errors; - } - ++inp; - ++resp; - } - } - else - printf ("\"%s\": unknown class or map\n", inpline); - } - - - if (errors != 0) - { - printf (" %d error%s for `%s' locale\n\n\n", errors, - errors == 1 ? "" : "s", setlocale (LC_ALL, NULL)); - return 1; - } - - printf (" No errors for `%s' locale\n\n\n", setlocale (LC_ALL, NULL)); - return 0; -} diff --git a/test/locale/tst-digits.c b/test/locale/tst-digits.c deleted file mode 100644 index 16cf2114e..000000000 --- a/test/locale/tst-digits.c +++ /dev/null @@ -1,248 +0,0 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2000. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#define ZERO "\xe2\x82\x80" -#define ONE "\xe2\x82\x81" -#define TWO "\xe2\x82\x82" -#define THREE "\xe2\x82\x83" -#define FOUR "\xe2\x82\x84" -#define FIVE "\xe2\x82\x85" -#define SIX "\xe2\x82\x86" -#define SEVEN "\xe2\x82\x87" -#define EIGHT "\xe2\x82\x88" -#define NINE "\xe2\x82\x89" - -static struct printf_int_test -{ - int n; - const char *format; - const char *expected; -} printf_int_tests[] = -{ - { 0, "%I'10d", " " ZERO }, - { 1, "%I'10d", " " ONE }, - { 2, "%I'10d", " " TWO }, - { 3, "%I'10d", " " THREE }, - { 4, "%I'10d", " " FOUR }, - { 5, "%I'10d", " " FIVE }, - { 6, "%I'10d", " " SIX }, - { 7, "%I'10d", " " SEVEN }, - { 8, "%I'10d", " " EIGHT }, - { 9, "%I'10d", " " NINE }, - { 11, "%I'10d", " " ONE ONE }, - { 12, "%I'10d", " " ONE TWO }, - { 123, "%I10d", " " ONE TWO THREE }, - { 123, "%I'10d", " " ONE TWO THREE }, - { 1234, "%I10d", ONE TWO THREE FOUR }, - { 1234, "%I'10d", ONE "," TWO THREE FOUR }, - { 12345, "%I'10d", ONE TWO "," THREE FOUR FIVE }, - { 123456, "%I'10d", ONE TWO THREE "," FOUR FIVE SIX }, - { 1234567, "%I'10d", ONE "," TWO THREE FOUR "," FIVE SIX SEVEN } -}; -#define nprintf_int_tests \ - (sizeof (printf_int_tests) / sizeof (printf_int_tests[0])) - -#define WZERO L"\x2080" -#define WONE L"\x2081" -#define WTWO L"\x2082" -#define WTHREE L"\x2083" -#define WFOUR L"\x2084" -#define WFIVE L"\x2085" -#define WSIX L"\x2086" -#define WSEVEN L"\x2087" -#define WEIGHT L"\x2088" -#define WNINE L"\x2089" - -static struct wprintf_int_test -{ - int n; - const wchar_t *format; - const wchar_t *expected; -} wprintf_int_tests[] = -{ - { 0, L"%I'10d", L" " WZERO }, - { 1, L"%I'10d", L" " WONE }, - { 2, L"%I'10d", L" " WTWO }, - { 3, L"%I'10d", L" " WTHREE }, - { 4, L"%I'10d", L" " WFOUR }, - { 5, L"%I'10d", L" " WFIVE }, - { 6, L"%I'10d", L" " WSIX }, - { 7, L"%I'10d", L" " WSEVEN }, - { 8, L"%I'10d", L" " WEIGHT }, - { 9, L"%I'10d", L" " WNINE }, - { 11, L"%I'10d", L" " WONE WONE }, - { 12, L"%I'10d", L" " WONE WTWO }, - { 123, L"%I10d", L" " WONE WTWO WTHREE }, - { 123, L"%I'10d", L" " WONE WTWO WTHREE }, - { 1234, L"%I10d", L" " WONE WTWO WTHREE WFOUR }, - { 1234, L"%I'10d", L" " WONE L"," WTWO WTHREE WFOUR }, - { 12345, L"%I'10d", L" " WONE WTWO L"," WTHREE WFOUR WFIVE }, - { 123456, L"%I'10d", L" " WONE WTWO WTHREE L"," WFOUR WFIVE WSIX }, - { 1234567, L"%I'10d", L" " WONE L"," WTWO WTHREE WFOUR L"," WFIVE WSIX WSEVEN } -}; -#define nwprintf_int_tests \ - (sizeof (wprintf_int_tests) / sizeof (wprintf_int_tests[0])) - - -int -main (void) -{ - int cnt; - int failures; - int status; - - if (setlocale (LC_ALL, "test7") == NULL) - { - puts ("cannot set locale `test7'"); - exit (1); - } - printf ("CODESET = \"%s\"\n", nl_langinfo (CODESET)); - - /* First: printf tests. */ - failures = 0; - for (cnt = 0; cnt < (int) nprintf_int_tests; ++cnt) - { - char buf[100]; - ssize_t n; - - n = snprintf (buf, sizeof buf, printf_int_tests[cnt].format, - printf_int_tests[cnt].n); - - printf ("%3d: got \"%s\", expected \"%s\"", - cnt, buf, printf_int_tests[cnt].expected); - - if (n != (ssize_t) strlen (printf_int_tests[cnt].expected) - || strcmp (buf, printf_int_tests[cnt].expected) != 0) - { - puts (" -> FAILED"); - ++failures; - } - else - puts (" -> OK"); - } - - printf ("%d failures in printf tests\n", failures); - status = failures != 0; - - /* wprintf tests. */ - failures = 0; - for (cnt = 0; cnt < (int) nwprintf_int_tests; ++cnt) - { - wchar_t buf[100]; - ssize_t n; - - n = swprintf (buf, sizeof buf / sizeof (buf[0]), - wprintf_int_tests[cnt].format, - wprintf_int_tests[cnt].n); - - printf ("%3d: got \"%ls\", expected \"%ls\"", - cnt, buf, wprintf_int_tests[cnt].expected); - - if (n != (ssize_t) wcslen (wprintf_int_tests[cnt].expected) - || wcscmp (buf, wprintf_int_tests[cnt].expected) != 0) - { - puts (" -> FAILED"); - ++failures; - } - else - puts (" -> OK"); - } - - printf ("%d failures in wprintf tests\n", failures); - status = failures != 0; - - /* ctype tests. This makes sure that the multibyte chracter digit - representations are not handle in this table. */ - failures = 0; - for (cnt = 0; cnt < 256; ++cnt) - if (cnt >= '0' && cnt <= '9') - { - if (! isdigit (cnt)) - { - printf ("isdigit ('%c') == 0\n", cnt); - ++failures; - } - } - else - { - if (isdigit (cnt)) - { - printf ("isdigit (%d) != 0\n", cnt); - ++failures; - } - } - - printf ("%d failures in ctype tests\n", failures); - status = failures != 0; - - /* wctype tests. This makes sure the second set of digits is also - recorded. */ - failures = 0; - for (cnt = 0; cnt < 256; ++cnt) - if (cnt >= '0' && cnt <= '9') - { - if (! iswdigit (cnt)) - { - printf ("iswdigit (L'%c') == 0\n", cnt); - ++failures; - } - } - else - { - if (iswdigit (cnt)) - { - printf ("iswdigit (%d) != 0\n", cnt); - ++failures; - } - } - - for (cnt = 0x2070; cnt < 0x2090; ++cnt) - if (cnt >= 0x2080 && cnt <= 0x2089) - { - if (! iswdigit (cnt)) - { - printf ("iswdigit (U%04X) == 0\n", cnt); - ++failures; - } - } - else - { - if (iswdigit (cnt)) - { - printf ("iswdigit (U%04X) != 0\n", cnt); - ++failures; - } - } - - printf ("%d failures in wctype tests\n", failures); - status = failures != 0; - - return status; -} diff --git a/test/locale/tst-fmon.c b/test/locale/tst-fmon.c deleted file mode 100644 index bcdd2d03e..000000000 --- a/test/locale/tst-fmon.c +++ /dev/null @@ -1,67 +0,0 @@ -/* Testing the implementation of strfmon(3). - Copyright (C) 1996, 1997, 2000, 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jochen Hein , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - -/* - test-strfmon gets called with three parameters: - - the locale - - the format-string to be used - - the actual number to be formatted - - the expected string - If the test passes, test-strfmon terminates with returncode 0, - otherwise with 1 -*/ -#define EXIT_SUCCESS 0 -#define EXIT_FAILURE 1 -#define EXIT_SETLOCALE 2 -#define EXIT_STRFMON 3 - -int -main (int argc, char *argv[]) -{ - char *s = malloc (201); - - if (setlocale (LC_MONETARY, argv[1]) == NULL) - { - fprintf (stderr, "setlocale(LC_MONETARY, \"%s\"): %m\n", argv[1]); - exit (EXIT_SETLOCALE); - } - - if (strfmon (s, 200, argv[2], (double) atof (argv[3])) == -1) - { - perror ("strfmon"); - exit (EXIT_STRFMON); - } - - if (strcmp (s, argv[4]) != 0) - { - printf ("\ -Locale: \"%s\" Format: \"%s\" Value: \"%s\" Received: \"%s\" Expected: \"%s\" => %s\n", - argv[1], argv[2], argv[3], s, argv[4], - strcmp (s, argv[4]) != 0 ? "false" : "correct"); - exit (EXIT_FAILURE); - } - - return EXIT_SUCCESS; -} diff --git a/test/locale/tst-langinfo.c b/test/locale/tst-langinfo.c deleted file mode 100644 index aca8239bf..000000000 --- a/test/locale/tst-langinfo.c +++ /dev/null @@ -1,283 +0,0 @@ -/* Test program for nl_langinfo() function. - Copyright (C) 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper . - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -struct map -{ - const char *str; - int val; -} map[] = -{ -#define VAL(name) { #name, name } - VAL (ABDAY_1), - VAL (ABDAY_2), - VAL (ABDAY_3), - VAL (ABDAY_4), - VAL (ABDAY_5), - VAL (ABDAY_6), - VAL (ABDAY_7), - VAL (ABMON_1), - VAL (ABMON_10), - VAL (ABMON_11), - VAL (ABMON_12), - VAL (ABMON_2), - VAL (ABMON_3), - VAL (ABMON_4), - VAL (ABMON_5), - VAL (ABMON_6), - VAL (ABMON_7), - VAL (ABMON_8), - VAL (ABMON_9), - VAL (ALT_DIGITS), - VAL (AM_STR), - VAL (CRNCYSTR), - VAL (CURRENCY_SYMBOL), - VAL (DAY_1), - VAL (DAY_2), - VAL (DAY_3), - VAL (DAY_4), - VAL (DAY_5), - VAL (DAY_6), - VAL (DAY_7), - VAL (DECIMAL_POINT), - VAL (D_FMT), - VAL (D_T_FMT), - VAL (ERA), - VAL (ERA_D_FMT), - VAL (ERA_D_T_FMT), - VAL (ERA_T_FMT), - VAL (ERA_YEAR), - VAL (FRAC_DIGITS), - VAL (GROUPING), - VAL (INT_CURR_SYMBOL), - VAL (INT_FRAC_DIGITS), - VAL (MON_1), - VAL (MON_10), - VAL (MON_11), - VAL (MON_12), - VAL (MON_2), - VAL (MON_3), - VAL (MON_4), - VAL (MON_5), - VAL (MON_6), - VAL (MON_7), - VAL (MON_8), - VAL (MON_9), - VAL (MON_DECIMAL_POINT), - VAL (MON_GROUPING), - VAL (MON_THOUSANDS_SEP), - VAL (NEGATIVE_SIGN), - VAL (NOEXPR), - VAL (NOSTR), - VAL (N_CS_PRECEDES), - VAL (N_SEP_BY_SPACE), - VAL (N_SIGN_POSN), - VAL (PM_STR), - VAL (POSITIVE_SIGN), - VAL (P_CS_PRECEDES), - VAL (P_SEP_BY_SPACE), - VAL (P_SIGN_POSN), - VAL (RADIXCHAR), - VAL (THOUSANDS_SEP), - VAL (THOUSEP), - VAL (T_FMT), - VAL (T_FMT_AMPM), - VAL (YESEXPR), - VAL (YESSTR) -}; - - -static int -map_paramstr (const char *str) -{ - int low = 0; - int high = sizeof (map) / sizeof (map[0]); - - while (low < high) - { - int med = (low + high) / 2; - int cmpres; - - cmpres = strcmp (str, map[med].str); - if (cmpres == 0) - return map[med].val; - else if (cmpres > 0) - low = med + 1; - else - high = med; - } - - return -1; -} - - -#ifdef DEBUG -# define REASON(str) printf ("\"%s\" ignored: %s\n", buf, str) -#else -# define REASON(str) -#endif - -int -main (void) -{ - int result = 0; - - while (! feof (stdin)) - { - char buf[1000]; - char *rp; - char *locale; - char *paramstr; - char *expected; - char *actual; - int param; - - if (fgets (buf, sizeof (buf), stdin) == NULL) - break; - - /* Split the fields. There are three is them: - 1. locale - 2. langinfo() parameter - 3. expected result; this can be a string with white space etc. - */ - rp = buf; - while (*rp == ' ' || *rp == '\t') - ++rp; - - if (*rp == '#') - { - /* It's a comment line. Ignore it. */ - REASON ("comment"); - continue; - } - locale = rp; - - while (*rp != '\0' && *rp != ' ' && *rp != '\t' && *rp != '\n') - ++rp; - if (*rp == '\0' || *rp == '\n') - { - /* Incomplete line. */ - REASON ("incomplete line"); - continue; - } - *rp++ = '\0'; - - while (*rp == ' ' || *rp == '\t') - ++rp; - paramstr = rp; - - while (*rp != '\0' && *rp != ' ' && *rp != '\t' && *rp != '\n') - ++rp; - if (*rp == '\0' || *rp == '\n') - { - /* Incomplete line. */ - REASON ("incomplete line"); - continue; - } - *rp++ = '\0'; - - while (*rp == ' ' || *rp == '\t') - ++rp; - - if (*rp == '"') - { - char *wp; - - expected = wp = ++rp; - while (*rp != '"' && *rp != '\n' && *rp != '\0') - { - if (*rp == '\\') - { - ++rp; - if (*rp == '\0') - break; - if (*rp >= '0' && *rp <= '9') - { - int val = *rp - '0'; - if (rp[1] >= '0' && rp[1] <= '9') - { - ++rp; - val *= 10; - val += *rp - '0'; - if (rp[1] >= '0' && rp[1] <= '9') - { - ++rp; - val *= 10; - val += *rp - '0'; - } - } - *rp = val; - } - } - *wp++ = *rp++; - } - - if (*rp != '"') - { - REASON ("missing '\"'"); - continue; - } - - *wp = '\0'; - } - else - { - expected = rp; - while (*rp != '\0' && *rp != '\n') - ++rp; - *rp = '\0'; - } - - param = map_paramstr (paramstr); - if (param == -1) - { - /* Invalid parameter. */ - REASON ("invalid parameter"); - continue; - } - - /* Set the locale and check whether it worked. */ - printf ("LC_ALL=%s nl_langinfo(%s)", locale, paramstr); - setlocale (LC_ALL, locale); - if (strcmp (locale, setlocale (LC_ALL, NULL)) != 0) - { - puts (": failed to set locale"); - result = 1; - continue; - } - - actual = nl_langinfo (param); - printf (" = \"%s\", ", actual); - - if (strcmp (actual, expected) == 0) - puts ("OK"); - else - { - printf ("FAILED (expected: %s)\n", expected); - result = 1; - } - } - - return result; -} diff --git a/test/locale/tst-langinfo.input b/test/locale/tst-langinfo.input deleted file mode 100644 index 8f1861b22..000000000 --- a/test/locale/tst-langinfo.input +++ /dev/null @@ -1,302 +0,0 @@ -#! /bin/sh -# Input file for tst-langinfo. -# Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc. -# This file is part of the GNU C Library. -# - -# The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. - -# The GNU C Library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. - -# You should have received a copy of the GNU Lesser General Public -# License along with the GNU C Library; see the file COPYING.LIB. If -# not, see . - - -# Run the test program. -# Only decimal numerical escape sequences allowed in strings. -C ABDAY_1 Sun -C ABDAY_2 Mon -C ABDAY_3 Tue -C ABDAY_4 Wed -C ABDAY_5 Thu -C ABDAY_6 Fri -C ABDAY_7 Sat -C DAY_1 Sunday -C DAY_2 Monday -C DAY_3 Tuesday -C DAY_4 Wednesday -C DAY_5 Thursday -C DAY_6 Friday -C DAY_7 Saturday -C ABMON_1 Jan -C ABMON_2 Feb -C ABMON_3 Mar -C ABMON_4 Apr -C ABMON_5 May -C ABMON_6 Jun -C ABMON_7 Jul -C ABMON_8 Aug -C ABMON_9 Sep -C ABMON_10 Oct -C ABMON_11 Nov -C ABMON_12 Dec -C MON_1 January -C MON_2 February -C MON_3 March -C MON_4 April -C MON_5 May -C MON_6 June -C MON_7 July -C MON_8 August -C MON_9 September -C MON_10 October -C MON_11 November -C MON_12 December -C AM_STR AM -C PM_STR PM -C D_T_FMT "%a %b %e %H:%M:%S %Y" -C D_FMT "%m/%d/%y" -C T_FMT "%H:%M:%S" -C T_FMT_AMPM "%I:%M:%S %p" -C ABDAY_1 Sun -C ABDAY_2 Mon -C ABDAY_3 Tue -C ABDAY_4 Wed -C ABDAY_5 Thu -C ABDAY_6 Fri -C ABDAY_7 Sat -C DAY_1 Sunday -C DAY_2 Monday -C DAY_3 Tuesday -C DAY_4 Wednesday -C DAY_5 Thursday -C DAY_6 Friday -C DAY_7 Saturday -C RADIXCHAR . -C THOUSEP "" -C YESEXPR ^[yY] -C NOEXPR ^[nN] -en_US.ISO-8859-1 ABMON_1 Jan -en_US.ISO-8859-1 ABMON_2 Feb -en_US.ISO-8859-1 ABMON_3 Mar -en_US.ISO-8859-1 ABMON_4 Apr -en_US.ISO-8859-1 ABMON_5 May -en_US.ISO-8859-1 ABMON_6 Jun -en_US.ISO-8859-1 ABMON_7 Jul -en_US.ISO-8859-1 ABMON_8 Aug -en_US.ISO-8859-1 ABMON_9 Sep -en_US.ISO-8859-1 ABMON_10 Oct -en_US.ISO-8859-1 ABMON_11 Nov -en_US.ISO-8859-1 ABMON_12 Dec -en_US.ISO-8859-1 MON_1 January -en_US.ISO-8859-1 MON_2 February -en_US.ISO-8859-1 MON_3 March -en_US.ISO-8859-1 MON_4 April -en_US.ISO-8859-1 MON_5 May -en_US.ISO-8859-1 MON_6 June -en_US.ISO-8859-1 MON_7 July -en_US.ISO-8859-1 MON_8 August -en_US.ISO-8859-1 MON_9 September -en_US.ISO-8859-1 MON_10 October -en_US.ISO-8859-1 MON_11 November -en_US.ISO-8859-1 MON_12 December -en_US.ISO-8859-1 AM_STR AM -en_US.ISO-8859-1 PM_STR PM -en_US.ISO-8859-1 D_T_FMT "%a %d %b %Y %r %Z" -en_US.ISO-8859-1 D_FMT "%m/%d/%Y" -en_US.ISO-8859-1 T_FMT "%r" -en_US.ISO-8859-1 T_FMT_AMPM "%I:%M:%S %p" -en_US.ISO-8859-1 RADIXCHAR . -en_US.ISO-8859-1 THOUSEP , -en_US.ISO-8859-1 YESEXPR ^[yY].* -en_US.ISO-8859-1 NOEXPR ^[nN].* -de_DE.ISO-8859-1 ABDAY_1 So -de_DE.ISO-8859-1 ABDAY_2 Mo -de_DE.ISO-8859-1 ABDAY_3 Di -de_DE.ISO-8859-1 ABDAY_4 Mi -de_DE.ISO-8859-1 ABDAY_5 Do -de_DE.ISO-8859-1 ABDAY_6 Fr -de_DE.ISO-8859-1 ABDAY_7 Sa -de_DE.ISO-8859-1 DAY_1 Sonntag -de_DE.ISO-8859-1 DAY_2 Montag -de_DE.ISO-8859-1 DAY_3 Dienstag -de_DE.ISO-8859-1 DAY_4 Mittwoch -de_DE.ISO-8859-1 DAY_5 Donnerstag -de_DE.ISO-8859-1 DAY_6 Freitag -de_DE.ISO-8859-1 DAY_7 Samstag -de_DE.ISO-8859-1 ABMON_1 Jan -de_DE.ISO-8859-1 ABMON_2 Feb -de_DE.ISO-8859-1 ABMON_3 Mär -de_DE.ISO-8859-1 ABMON_4 Apr -de_DE.ISO-8859-1 ABMON_5 Mai -de_DE.ISO-8859-1 ABMON_6 Jun -de_DE.ISO-8859-1 ABMON_7 Jul -de_DE.ISO-8859-1 ABMON_8 Aug -de_DE.ISO-8859-1 ABMON_9 Sep -de_DE.ISO-8859-1 ABMON_10 Okt -de_DE.ISO-8859-1 ABMON_11 Nov -de_DE.ISO-8859-1 ABMON_12 Dez -de_DE.ISO-8859-1 MON_1 Januar -de_DE.ISO-8859-1 MON_2 Februar -de_DE.ISO-8859-1 MON_3 März -de_DE.ISO-8859-1 MON_4 April -de_DE.ISO-8859-1 MON_5 Mai -de_DE.ISO-8859-1 MON_6 Juni -de_DE.ISO-8859-1 MON_7 Juli -de_DE.ISO-8859-1 MON_8 August -de_DE.ISO-8859-1 MON_9 September -de_DE.ISO-8859-1 MON_10 Oktober -de_DE.ISO-8859-1 MON_11 November -de_DE.ISO-8859-1 MON_12 Dezember -de_DE.ISO-8859-1 D_T_FMT "%a %d %b %Y %T %Z" -de_DE.ISO-8859-1 D_FMT "%d.%m.%Y" -de_DE.ISO-8859-1 T_FMT "%T" -de_DE.ISO-8859-1 RADIXCHAR , -de_DE.ISO-8859-1 THOUSEP . -de_DE.ISO-8859-1 YESEXPR ^[jJyY].* -de_DE.ISO-8859-1 NOEXPR ^[nN].* -de_DE.UTF-8 ABDAY_1 So -de_DE.UTF-8 ABDAY_2 Mo -de_DE.UTF-8 ABDAY_3 Di -de_DE.UTF-8 ABDAY_4 Mi -de_DE.UTF-8 ABDAY_5 Do -de_DE.UTF-8 ABDAY_6 Fr -de_DE.UTF-8 ABDAY_7 Sa -de_DE.UTF-8 DAY_1 Sonntag -de_DE.UTF-8 DAY_2 Montag -de_DE.UTF-8 DAY_3 Dienstag -de_DE.UTF-8 DAY_4 Mittwoch -de_DE.UTF-8 DAY_5 Donnerstag -de_DE.UTF-8 DAY_6 Freitag -de_DE.UTF-8 DAY_7 Samstag -de_DE.UTF-8 ABMON_1 Jan -de_DE.UTF-8 ABMON_2 Feb -de_DE.UTF-8 ABMON_3 Mär -de_DE.UTF-8 ABMON_4 Apr -de_DE.UTF-8 ABMON_5 Mai -de_DE.UTF-8 ABMON_6 Jun -de_DE.UTF-8 ABMON_7 Jul -de_DE.UTF-8 ABMON_8 Aug -de_DE.UTF-8 ABMON_9 Sep -de_DE.UTF-8 ABMON_10 Okt -de_DE.UTF-8 ABMON_11 Nov -de_DE.UTF-8 ABMON_12 Dez -de_DE.UTF-8 MON_1 Januar -de_DE.UTF-8 MON_2 Februar -de_DE.UTF-8 MON_3 März -de_DE.UTF-8 MON_4 April -de_DE.UTF-8 MON_5 Mai -de_DE.UTF-8 MON_6 Juni -de_DE.UTF-8 MON_7 Juli -de_DE.UTF-8 MON_8 August -de_DE.UTF-8 MON_9 September -de_DE.UTF-8 MON_10 Oktober -de_DE.UTF-8 MON_11 November -de_DE.UTF-8 MON_12 Dezember -de_DE.UTF-8 D_T_FMT "%a %d %b %Y %T %Z" -de_DE.UTF-8 D_FMT "%d.%m.%Y" -de_DE.UTF-8 T_FMT "%T" -de_DE.UTF-8 RADIXCHAR , -de_DE.UTF-8 THOUSEP . -de_DE.UTF-8 YESEXPR ^[jJyY].* -de_DE.UTF-8 NOEXPR ^[nN].* -fr_FR.ISO-8859-1 ABDAY_1 dim -fr_FR.ISO-8859-1 ABDAY_2 lun -fr_FR.ISO-8859-1 ABDAY_3 mar -fr_FR.ISO-8859-1 ABDAY_4 mer -fr_FR.ISO-8859-1 ABDAY_5 jeu -fr_FR.ISO-8859-1 ABDAY_6 ven -fr_FR.ISO-8859-1 ABDAY_7 sam -fr_FR.ISO-8859-1 DAY_1 dimanche -fr_FR.ISO-8859-1 DAY_2 lundi -fr_FR.ISO-8859-1 DAY_3 mardi -fr_FR.ISO-8859-1 DAY_4 mercredi -fr_FR.ISO-8859-1 DAY_5 jeudi -fr_FR.ISO-8859-1 DAY_6 vendredi -fr_FR.ISO-8859-1 DAY_7 samedi -fr_FR.ISO-8859-1 ABMON_1 jan -fr_FR.ISO-8859-1 ABMON_2 fév -fr_FR.ISO-8859-1 ABMON_3 mar -fr_FR.ISO-8859-1 ABMON_4 avr -fr_FR.ISO-8859-1 ABMON_5 mai -fr_FR.ISO-8859-1 ABMON_6 jun -fr_FR.ISO-8859-1 ABMON_7 jui -fr_FR.ISO-8859-1 ABMON_8 aoû -fr_FR.ISO-8859-1 ABMON_9 sep -fr_FR.ISO-8859-1 ABMON_10 oct -fr_FR.ISO-8859-1 ABMON_11 nov -fr_FR.ISO-8859-1 ABMON_12 déc -fr_FR.ISO-8859-1 MON_1 janvier -fr_FR.ISO-8859-1 MON_2 février -fr_FR.ISO-8859-1 MON_3 mars -fr_FR.ISO-8859-1 MON_4 avril -fr_FR.ISO-8859-1 MON_5 mai -fr_FR.ISO-8859-1 MON_6 juin -fr_FR.ISO-8859-1 MON_7 juillet -fr_FR.ISO-8859-1 MON_8 août -fr_FR.ISO-8859-1 MON_9 septembre -fr_FR.ISO-8859-1 MON_10 octobre -fr_FR.ISO-8859-1 MON_11 novembre -fr_FR.ISO-8859-1 MON_12 décembre -fr_FR.ISO-8859-1 D_T_FMT "%a %d %b %Y %T %Z" -fr_FR.ISO-8859-1 D_FMT "%d.%m.%Y" -fr_FR.ISO-8859-1 T_FMT "%T" -fr_FR.ISO-8859-1 RADIXCHAR , -fr_FR.ISO-8859-1 THOUSEP "" -fr_FR.ISO-8859-1 YESEXPR ^[oOyY].* -fr_FR.ISO-8859-1 NOEXPR ^[nN].* -ja_JP.EUC-JP ABDAY_1 Æü -ja_JP.EUC-JP ABDAY_2 ·î -ja_JP.EUC-JP ABDAY_3 ²Ð -ja_JP.EUC-JP ABDAY_4 ¿å -ja_JP.EUC-JP ABDAY_5 ÌÚ -ja_JP.EUC-JP ABDAY_6 ¶â -ja_JP.EUC-JP ABDAY_7 ÅÚ -ja_JP.EUC-JP DAY_1 ÆüÍËÆü -ja_JP.EUC-JP DAY_2 ·îÍËÆü -ja_JP.EUC-JP DAY_3 ²ÐÍËÆü -ja_JP.EUC-JP DAY_4 ¿åÍËÆü -ja_JP.EUC-JP DAY_5 ÌÚÍËÆü -ja_JP.EUC-JP DAY_6 ¶âÍËÆü -ja_JP.EUC-JP DAY_7 ÅÚÍËÆü -ja_JP.EUC-JP ABMON_1 " 1·î" -ja_JP.EUC-JP ABMON_2 " 2·î" -ja_JP.EUC-JP ABMON_3 " 3·î" -ja_JP.EUC-JP ABMON_4 " 4·î" -ja_JP.EUC-JP ABMON_5 " 5·î" -ja_JP.EUC-JP ABMON_6 " 6·î" -ja_JP.EUC-JP ABMON_7 " 7·î" -ja_JP.EUC-JP ABMON_8 " 8·î" -ja_JP.EUC-JP ABMON_9 " 9·î" -ja_JP.EUC-JP ABMON_10 "10·î" -ja_JP.EUC-JP ABMON_11 "11·î" -ja_JP.EUC-JP ABMON_12 "12·î" -ja_JP.EUC-JP MON_1 "1·î" -ja_JP.EUC-JP MON_2 "2·î" -ja_JP.EUC-JP MON_3 "3·î" -ja_JP.EUC-JP MON_4 "4·î" -ja_JP.EUC-JP MON_5 "5·î" -ja_JP.EUC-JP MON_6 "6·î" -ja_JP.EUC-JP MON_7 "7·î" -ja_JP.EUC-JP MON_8 "8·î" -ja_JP.EUC-JP MON_9 "9·î" -ja_JP.EUC-JP MON_10 "10·î" -ja_JP.EUC-JP MON_11 "11·î" -ja_JP.EUC-JP MON_12 "12·î" -ja_JP.EUC-JP T_FMT_AMPM "%p%I»þ%Mʬ%SÉÃ" -ja_JP.EUC-JP ERA_D_FMT "%EY%m·î%dÆü" -ja_JP.EUC-JP ERA_D_T_FMT "%EY%m·î%dÆü %H»þ%Mʬ%SÉÃ" -ja_JP.EUC-JP RADIXCHAR . -ja_JP.EUC-JP THOUSEP , -ja_JP.EUC-JP YESEXPR ^([yY£ù£Ù]|¤Ï¤¤|¥Ï¥¤) -ja_JP.EUC-JP NOEXPR ^([nN£î£Î]|¤¤¤¤¤¨|¥¤¥¤¥¨) -# Is CRNCYSTR supposed to be the national or international sign? -# ja_JP.EUC-JP CRNCYSTR JPY -ja_JP.EUC-JP CODESET EUC-JP diff --git a/test/locale/tst-leaks.c b/test/locale/tst-leaks.c deleted file mode 100644 index 7a4b557f5..000000000 --- a/test/locale/tst-leaks.c +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include - -int -main (void) -{ - int cnt; - - mtrace (); - - for (cnt = 0; cnt < 100; ++cnt) - { - setlocale (LC_ALL, "de_DE.ISO-8859-1"); - setlocale (LC_ALL, "de_DE.UTF-8"); - } - - return 0; -} diff --git a/test/locale/tst-mbswcs1.c b/test/locale/tst-mbswcs1.c deleted file mode 100644 index 6681ccc9e..000000000 --- a/test/locale/tst-mbswcs1.c +++ /dev/null @@ -1,62 +0,0 @@ -/* Test restarting behaviour of mbrtowc. - Copyright (C) 2000, 2005 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Bruno Haible . - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - -#define show(expr, nexp, wcexp) \ - n = expr; \ - printf (#expr " -> %Zd", n); \ - printf (", wc = %lu", (unsigned long int) wc); \ - if (n != (size_t) nexp || wc != wcexp) \ - { \ - printf (", expected %Zd and %lu", nexp, (unsigned long int) wcexp); \ - result = 1; \ - } \ - putc ('\n', stdout) - -int -main (void) -{ - const unsigned char buf[6] = { 0x25, 0xe2, 0x82, 0xac, 0xce, 0xbb }; - mbstate_t state; - wchar_t wc = 42; - size_t n; - int result = 0; - const char *used_locale; - - setlocale (LC_CTYPE, "de_DE.UTF-8"); - /* Double check. */ - used_locale = setlocale (LC_CTYPE, NULL); - printf ("used locale: \"%s\"\n", used_locale); - result = strcmp (used_locale, "de_DE.UTF-8"); - - memset (&state, '\0', sizeof (state)); - - show (mbrtowc (&wc, (const char *) buf + 0, 1, &state), 1, 37); - show (mbrtowc (&wc, (const char *) buf + 1, 1, &state), -2, 37); - show (mbrtowc (&wc, (const char *) buf + 2, 3, &state), 2, 8364); - show (mbrtowc (&wc, (const char *) buf + 4, 1, &state), -2, 8364); - show (mbrtowc (&wc, (const char *) buf + 5, 1, &state), 1, 955); - show (mbrtowc (&wc, (const char *) buf + 5, 1, &state), -1, 955); - - return result; -} diff --git a/test/locale/tst-mbswcs2.c b/test/locale/tst-mbswcs2.c deleted file mode 100644 index 042069f82..000000000 --- a/test/locale/tst-mbswcs2.c +++ /dev/null @@ -1,64 +0,0 @@ -/* Test restarting behaviour of mbsnrtowcs. - Copyright (C) 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Bruno Haible . - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - -#define show(expr, nexp, wcexp, end) \ - n = expr; \ - printf (#expr " -> %Zd", n); \ - printf (", wc = %lu, src = buf+%d", (unsigned long int) wc, \ - src - (const char *) buf); \ - if (n != (size_t) nexp || wc != wcexp || src != (const char *) (end)) \ - { \ - printf (", expected %Zd and %lu and buf+%d", nexp, \ - (unsigned long int) wcexp, (end) - buf); \ - result = 1; \ - } \ - putc ('\n', stdout) - -int -main (void) -{ - unsigned char buf[6] = { 0x25, 0xe2, 0x82, 0xac, 0xce, 0xbb }; - mbstate_t state; - const char *src; - wchar_t wc = 42; - size_t n; - int result = 0; - const char *used_locale; - - setlocale (LC_CTYPE,"de_DE.UTF-8"); - /* Double check. */ - used_locale = setlocale (LC_CTYPE, NULL); - printf ("used locale: \"%s\"\n", used_locale); - result = strcmp (used_locale, "de_DE.UTF-8"); - - memset (&state, '\0', sizeof (state)); - - src = (const char *) buf; - show (mbsnrtowcs (&wc, &src, 1, 1, &state), 1, 37, buf + 1); - show (mbsnrtowcs (&wc, &src, 3, 1, &state), 1, 8364, buf + 4); - show (mbsnrtowcs (&wc, &src, 1, 1, &state), 0, 8364, buf + 5); - show (mbsnrtowcs (&wc, &src, 1, 1, &state), 1, 955, buf + 6); - - return result; -} diff --git a/test/locale/tst-mbswcs3.c b/test/locale/tst-mbswcs3.c deleted file mode 100644 index 73bb59af0..000000000 --- a/test/locale/tst-mbswcs3.c +++ /dev/null @@ -1,75 +0,0 @@ -/* Test restarting behaviour of wcsrtombs. - Copyright (C) 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Bruno Haible . - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - -#define show(expr, nexp, srcexp, bufexp) \ - { \ - size_t res = expr; \ - printf (#expr " -> %Zd", res); \ - dst += res; \ - printf (", src = srcbuf+%td, dst = buf+%td", \ - src - srcbuf, dst - (char *) buf); \ - if (res != nexp || src != (srcexp) || dst != (char *) (bufexp)) \ - { \ - printf (", expected %Zd and srcbuf+%td and buf+%td", nexp, \ - (srcexp) - srcbuf, (bufexp) - (unsigned char *) buf); \ - result = 1; \ - } \ - putc ('\n', stdout); \ - } - -int -main (void) -{ - unsigned char buf[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; - const unsigned char bufcheck[6] = { 0x25, 0xe2, 0x82, 0xac, 0xce, 0xbb }; - const wchar_t srcbuf[4] = { 0x25, 0x20ac, 0x03bb, 0 }; - mbstate_t state; - const wchar_t *src; - char *dst; - int result = 0; - const char *used_locale; - - setlocale (LC_CTYPE, "de_DE.UTF-8"); - /* Double check. */ - used_locale = setlocale (LC_CTYPE, NULL); - printf ("used locale: \"%s\"\n", used_locale); - result = strcmp (used_locale, "de_DE.UTF-8"); - - memset (&state, '\0', sizeof (state)); - - src = srcbuf; - dst = (char *) buf; - show (wcsrtombs (dst, &src, 1, &state), 1, srcbuf + 1, buf + 1); - show (wcsrtombs (dst, &src, 1, &state), 0, srcbuf + 1, buf + 1); - show (wcsrtombs (dst, &src, 4, &state), 3, srcbuf + 2, buf + 4); - show (wcsrtombs (dst, &src, 2, &state), 2, srcbuf + 3, buf + 6); - - if (memcmp (buf, bufcheck, 6)) - { - puts ("wrong results"); - result = 1; - } - - return result; -} diff --git a/test/locale/tst-mbswcs4.c b/test/locale/tst-mbswcs4.c deleted file mode 100644 index 872040138..000000000 --- a/test/locale/tst-mbswcs4.c +++ /dev/null @@ -1,62 +0,0 @@ -/* Test restarting behaviour of mbsrtowcs. - Copyright (C) 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - -#define show(expr, nexp, wcexp, end) \ - n = expr; \ - printf (#expr " -> %Zd", n); \ - printf (", wc = %lu, src = buf+%d", (unsigned long int) wc, \ - src - (const char *) buf); \ - if (n != (size_t) nexp || wc != wcexp || src != (const char *) (end)) \ - { \ - printf (", expected %Zd and %lu and buf+%d", nexp, \ - (unsigned long int) wcexp, (end) - buf); \ - result = 1; \ - } \ - putc ('\n', stdout) - -int -main (void) -{ - unsigned char buf[6] = { 0x25, 0xe2, 0x82, 0xac, 0xce, 0xbb }; - mbstate_t state; - const char *src; - wchar_t wc = 42; - size_t n; - int result = 0; - const char *used_locale; - - setlocale (LC_CTYPE,"de_DE.UTF-8"); - /* Double check. */ - used_locale = setlocale (LC_CTYPE, NULL); - printf ("used locale: \"%s\"\n", used_locale); - result = strcmp (used_locale, "de_DE.UTF-8"); - - memset (&state, '\0', sizeof (state)); - - src = (const char *) buf; - show (mbsrtowcs (&wc, &src, 1, &state), 1, 37, buf + 1); - show (mbsrtowcs (&wc, &src, 1, &state), 1, 8364, buf + 4); - show (mbsrtowcs (&wc, &src, 1, &state), 1, 955, buf + 6); - - return result; -} diff --git a/test/locale/tst-mbswcs5.c b/test/locale/tst-mbswcs5.c deleted file mode 100644 index efb6dda89..000000000 --- a/test/locale/tst-mbswcs5.c +++ /dev/null @@ -1,74 +0,0 @@ -/* Test restarting behaviour of wcrtomb. - Copyright (C) 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Bruno Haible . - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - -#define show(expr, nexp, bufexp) \ - { \ - size_t res = expr; \ - printf (#expr " -> %Zd", res); \ - dst += res; \ - printf (", dst = buf+%td", dst - (char *) buf); \ - if (res != nexp || dst != (char *) (bufexp)) \ - { \ - printf (", expected %Zd and buf+%td", nexp, \ - (bufexp) - (unsigned char *) buf); \ - result = 1; \ - } \ - putc ('\n', stdout); \ - } - -int -main (void) -{ - unsigned char buf[7] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; - const unsigned char bufcheck[7] = { 0x25, 0xe2, 0x82, 0xac, 0xce, 0xbb, 0 }; - const wchar_t srcbuf[4] = { 0x25, 0x20ac, 0x03bb, 0 }; - mbstate_t state; - const wchar_t *src; - char *dst; - int result = 0; - const char *used_locale; - - setlocale (LC_CTYPE, "de_DE.UTF-8"); - /* Double check. */ - used_locale = setlocale (LC_CTYPE, NULL); - printf ("used locale: \"%s\"\n", used_locale); - result = strcmp (used_locale, "de_DE.UTF-8"); - - memset (&state, '\0', sizeof (state)); - - src = srcbuf; - dst = (char *) buf; - show (wcrtomb (dst, *src++, &state), 1, buf + 1); - show (wcrtomb (dst, *src++, &state), 3, buf + 4); - show (wcrtomb (dst, *src++, &state), 2, buf + 6); - show (wcrtomb (dst, *src, &state), 1, buf + 7); - - if (memcmp (buf, bufcheck, 7)) - { - puts ("wrong results"); - result = 1; - } - - return result; -} diff --git a/test/locale/tst-mbswcs6.c b/test/locale/tst-mbswcs6.c deleted file mode 100644 index 4bbb961d5..000000000 --- a/test/locale/tst-mbswcs6.c +++ /dev/null @@ -1,73 +0,0 @@ -/* Test for invalid input to wcrtomb. - Copyright (C) 2001 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2001. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static int -do_test (const char *loc) -{ - char buf[100]; - size_t n; - mbstate_t state; - const char *nloc; - int res; - - nloc = setlocale (LC_ALL, loc); - if (nloc == NULL) - { - printf ("could not set locale \"%s\"\n", loc); - return 1; - } - printf ("new locale: %s\n", nloc); - - memset (&state, '\0', sizeof (state)); - errno = 0; - n = wcrtomb (buf, (wchar_t) -15l, &state); - - printf ("n = %zd, errno = %d (%s)\n", n, errno, strerror (errno)); - - res = n != (size_t) -1 || errno != EILSEQ; - if (res) - puts ("*** FAIL"); - putchar ('\n'); - - return res; -} - - -int -main (void) -{ - int res; - - res = do_test ("C"); - res |= do_test ("de_DE.ISO-8859-1"); - res |= do_test ("de_DE.UTF-8"); - res |= do_test ("en_US.ISO-8859-1"); - res |= do_test ("ja_JP.UTF-8"); - res |= do_test ("hr_HR.ISO-8859-2"); - //res |= do_test ("ru_RU.KOI8-R"); - - return res; -} diff --git a/test/locale/tst-numeric.c b/test/locale/tst-numeric.c deleted file mode 100644 index a7911f1b2..000000000 --- a/test/locale/tst-numeric.c +++ /dev/null @@ -1,73 +0,0 @@ -/* Testing the implementation of LC_NUMERIC and snprintf(). - Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Petter Reinholdtsen , 2003 - - Based on tst-fmon.c by Jochen Hein , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - -/* - test-numeric gets called with three parameters: - - the locale - - the format-string to be used - - the actual number to be formatted - - the expected string - If the test passes, test-numeric terminates with returncode 0, - otherwise with 1 -*/ -#define EXIT_SUCCESS 0 -#define EXIT_FAILURE 1 -#define EXIT_SETLOCALE 2 -#define EXIT_SNPRINTF 3 - -int -main (int argc, char *argv[]) -{ - char *s = malloc (201); - double val; - - /* Make sure to read the value before setting of the locale, as - strtod() is locale-dependent. */ - val = strtod (argv[3], NULL); - - if (setlocale (LC_ALL, argv[1]) == NULL) - { - fprintf (stderr, "setlocale(LC_ALL, \"%s\"): %m\n", argv[1]); - exit (EXIT_SETLOCALE); - } - - if (snprintf (s, 200, argv[2], val) == -1) - { - perror ("snprintf"); - exit (EXIT_SNPRINTF); - } - - if (strcmp (s, argv[4]) != 0) - { - printf ("\ -locale: \"%s\", format: \"%s\", expected: \"%s\", got: \"%s\" => %s\n", - argv[1], argv[2], argv[4], s, - strcmp (s, argv[4]) != 0 ? "false" : "correct"); - exit (EXIT_FAILURE); - } - - return EXIT_SUCCESS; -} diff --git a/test/locale/tst-rpmatch.c b/test/locale/tst-rpmatch.c deleted file mode 100644 index 91e23650b..000000000 --- a/test/locale/tst-rpmatch.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Test program for rpmatch function. - Copyright (C) 1998, 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jochen Hein . - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - -int -main (int argc, char* argv[]) -{ - setlocale (LC_ALL, argv[1]); - - if (rpmatch (argv[2]) != atol (argv[3])) - { - fprintf (stderr,"Failed: Locale %s, String %s, Exp: %s, got %d\n", - argv[1], argv[2], argv[3], rpmatch (argv[2])); - exit (EXIT_FAILURE); - } - return EXIT_SUCCESS; -} diff --git a/test/locale/tst-setlocale.c b/test/locale/tst-setlocale.c deleted file mode 100644 index 1f8e68d88..000000000 --- a/test/locale/tst-setlocale.c +++ /dev/null @@ -1,25 +0,0 @@ -/* Test case by Jakub Jelinek . */ -#include -#include -#include - -int -main (void) -{ - char q[30]; - char *s; - - setlocale (LC_ALL, ""); - printf ("after setlocale (LC_ALL, \"\"): %s\n", setlocale(LC_NUMERIC, NULL)); - - strcpy (q, "de_DE.UTF-8"); - setlocale (LC_NUMERIC, q); - printf ("after setlocale (LC_NUMERIC, \"%s\"): %s\n", - q, setlocale(LC_NUMERIC, NULL)); - - strcpy (q, "de_DE.ISO-8859-1"); - s = setlocale (LC_NUMERIC, NULL); - printf ("after overwriting string: %s\n", s); - - return strcmp (s, "de_DE.UTF-8") != 0; -} diff --git a/test/locale/tst-sscanf.c b/test/locale/tst-sscanf.c deleted file mode 100644 index 32c13285a..000000000 --- a/test/locale/tst-sscanf.c +++ /dev/null @@ -1,56 +0,0 @@ -#include -#include -#include - -#define P0 "\xDB\xB0" -#define P1 "\xDB\xB1" -#define P2 "\xDB\xB2" -#define P3 "\xDB\xB3" -#define P4 "\xDB\xB4" -#define P5 "\xDB\xB5" -#define P6 "\xDB\xB6" -#define P7 "\xDB\xB7" -#define P8 "\xDB\xB8" -#define P9 "\xDB\xB9" -#define PD "\xd9\xab" -#define PT "\xd9\xac" - -static int -check_sscanf (const char *s, const char *format, const float n) -{ - float f; - - if (sscanf (s, format, &f) != 1) - { - printf ("nothing found for \"%s\"\n", s); - return 1; - } - if (f != n) - { - printf ("got %f expected %f from \"%s\"\n", f, n, s); - return 1; - } - return 0; -} - -static int -do_test (void) -{ - if (setlocale (LC_ALL, "fa_IR.UTF-8") == NULL) - { - puts ("cannot set fa_IR locale"); - return 1; - } - - int r = check_sscanf (P3 PD P1 P4, "%I8f", 3.14); - r |= check_sscanf (P3 PT P1 P4 P5, "%I'f", 3145); - r |= check_sscanf (P3 PD P1 P4 P1 P5 P9, "%If", 3.14159); - r |= check_sscanf ("-" P3 PD P1 P4 P1 P5, "%If", -3.1415); - r |= check_sscanf ("+" PD P1 P4 P1 P5, "%If", +.1415); - r |= check_sscanf (P3 PD P1 P4 P1 P5 "e+" P2, "%Ie", 3.1415e+2); - - return r; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/locale/tst-strfmon1.c b/test/locale/tst-strfmon1.c deleted file mode 100644 index e30aa1b20..000000000 --- a/test/locale/tst-strfmon1.c +++ /dev/null @@ -1,42 +0,0 @@ -#include -#include -#include -#include - -static const struct -{ - const char *locale; - const char *expected; -} tests[] = - { - { "de_DE.ISO-8859-1", "|-12,34 EUR|-12,34|" }, - { "da_DK.ISO-8859-1", "|kr -12,34|-12,34|" }, - { "zh_TW.EUC-TW", "|-NT$12.34|-12.34|" }, - { "sv_SE.ISO-8859-1", "|-12,34 kr|-12,34|" } - }; -#define ntests (sizeof (tests) / sizeof (tests[0])) - - -static int -do_test (void) -{ - int res = 0; - for (int i = 0; i < ntests; ++i) - { - char buf[500]; - if (setlocale (LC_ALL, tests[i].locale) == NULL) - { - printf ("failed to set locale %s\n", tests[i].locale); - res = 1; - continue; - } - strfmon (buf, sizeof (buf), "|%n|%!n|", -12.34, -12.34); - int fail = strcmp (buf, tests[i].expected) != 0; - printf ("%s%s\n", buf, fail ? " *** FAIL ***" : ""); - res |= fail; - } - return res; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/locale/tst-trans.c b/test/locale/tst-trans.c deleted file mode 100644 index 081a9aaaf..000000000 --- a/test/locale/tst-trans.c +++ /dev/null @@ -1,70 +0,0 @@ -/* Test program for user-defined character maps. - Copyright (C) 1999, 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper . - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - -int -main (void) -{ - char buf[30]; - wchar_t wbuf[30]; - wctrans_t t; - wint_t wch; - int errors = 0; - int len; - - setlocale (LC_ALL, ""); - - t = wctrans ("test"); - if (t == (wctrans_t) 0) - { - puts ("locale data files probably not loaded"); - exit (1); - } - - wch = towctrans (L'A', t); - printf ("towctrans (L'A', t) = %c\n", wch); - if (wch != L'B') - errors = 1; - - wch = towctrans (L'B', t); - printf ("towctrans (L'B', t) = %c\n", wch); - if (wch != L'C') - errors = 1; - - /* Test the output digit handling. */ - swprintf (wbuf, sizeof (wbuf) / sizeof (wbuf[0]), L"%Id", 0x499602D2); - errors |= wcscmp (wbuf, L"bcdefghija") != 0; - len = wcslen (wbuf); - errors |= len != 10; - printf ("len = %d, wbuf = L\"%ls\"\n", len, wbuf); - - snprintf (buf, sizeof buf, "%Id", 0x499602D2); - errors |= strcmp (buf, "bcdefghija") != 0; - len = strlen (buf); - errors |= len != 10; - printf ("len = %d, buf = \"%s\"\n", len, buf); - - return errors; -} diff --git a/test/locale/tst-wctype.c b/test/locale/tst-wctype.c deleted file mode 100644 index 21ebd9294..000000000 --- a/test/locale/tst-wctype.c +++ /dev/null @@ -1,143 +0,0 @@ -/* Test program for iswctype() function in ja_JP locale. - Copyright (C) 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper . - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - -int -main (void) -{ - wctype_t wct; - wchar_t buf[1000]; - int result = 1; - - setlocale (LC_ALL, ""); - wprintf (L"locale = %s\n", setlocale (LC_CTYPE, NULL)); - - wct = wctype ("jhira"); - if (wct == 0) - error (EXIT_FAILURE, 0, "jhira: no such character class"); - - if (fgetws (buf, sizeof (buf) / sizeof (buf[0]), stdin) != NULL) - { - int n; - - wprintf (L"buf[] = \"%ls\"\n", buf); - - result = 0; - - for (n = 0; buf[n] != L'\0'; ++n) - { - wprintf (L"jhira(U%04lx = %lc) = %d\n", (long) buf[n], buf[n], - iswctype (buf[n], wct)); - result |= ((buf[n] < 0xff && iswctype (buf[n], wct)) - || (buf[n] > 0xff && !iswctype (buf[n], wct))); - } - } - - wct = wctype ("jkata"); - if (wct == 0) - error (EXIT_FAILURE, 0, "jkata: no such character class"); - - if (fgetws (buf, sizeof (buf) / sizeof (buf[0]), stdin) != NULL) - { - int n; - - wprintf (L"buf[] = \"%ls\"\n", buf); - - result = 0; - - for (n = 0; buf[n] != L'\0'; ++n) - { - wprintf (L"jkata(U%04lx = %lc) = %d\n", (long) buf[n], buf[n], - iswctype (buf[n], wct)); - result |= ((buf[n] < 0xff && iswctype (buf[n], wct)) - || (buf[n] > 0xff && !iswctype (buf[n], wct))); - } - } - - wct = wctype ("jdigit"); - if (wct == 0) - error (EXIT_FAILURE, 0, "jdigit: no such character class"); - - if (fgetws (buf, sizeof (buf) / sizeof (buf[0]), stdin) != NULL) - { - int n; - - wprintf (L"buf[] = \"%ls\"\n", buf); - - result = 0; - - for (n = 0; buf[n] != L'\0'; ++n) - { - wprintf (L"jdigit(U%04lx = %lc) = %d\n", (long) buf[n], buf[n], - iswctype (buf[n], wct)); - result |= ((buf[n] < 0xff && iswctype (buf[n], wct)) - || (buf[n] > 0xff && !iswctype (buf[n], wct))); - } - } - - wct = wctype ("jspace"); - if (wct == 0) - error (EXIT_FAILURE, 0, "jspace: no such character class"); - - if (fgetws (buf, sizeof (buf) / sizeof (buf[0]), stdin) != NULL) - { - int n; - - wprintf (L"buf[] = \"%ls\"\n", buf); - - result = 0; - - for (n = 0; buf[n] != L'\0'; ++n) - { - wprintf (L"jspace(U%04lx = %lc) = %d\n", (long) buf[n], buf[n], - iswctype (buf[n], wct)); - result |= ((buf[n] < 0xff && iswctype (buf[n], wct)) - || (buf[n] > 0xff && !iswctype (buf[n], wct))); - } - } - - wct = wctype ("jkanji"); - if (wct == 0) - error (EXIT_FAILURE, 0, "jkanji: no such character class"); - - if (fgetws (buf, sizeof (buf) / sizeof (buf[0]), stdin) != NULL) - { - int n; - - wprintf (L"buf[] = \"%ls\"\n", buf); - - result = 0; - - for (n = 0; buf[n] != L'\0'; ++n) - { - wprintf (L"jkanji(U%04lx = %lc) = %d\n", (long) buf[n], buf[n], - iswctype (buf[n], wct)); - result |= ((buf[n] < 0xff && iswctype (buf[n], wct)) - || (buf[n] > 0xff && !iswctype (buf[n], wct))); - } - } - - return result; -} diff --git a/test/locale/tst-xlocale1.c b/test/locale/tst-xlocale1.c deleted file mode 100644 index 297c9ad7e..000000000 --- a/test/locale/tst-xlocale1.c +++ /dev/null @@ -1,75 +0,0 @@ -#include -#include -#include - - -static struct -{ - const char *locale; - const char *str1; - const char *str2; - int result; -} tests[] = - { - { "C", "TRANSLIT", "translit", 0 }, - { "de_DE.ISO-8859-1", "TRANSLIT", "translit", 0 }, - { "de_DE.ISO-8859-1", "TRANSLIT", "trÄnslit", -1 }, - { "de_DE.UTF-8", "TRANSLIT", "translit", 0 }, - { "de_DE.ISO-8859-1", "ä", "Ä", 1 } - }; -#define ntests (sizeof (tests) / sizeof (tests[0])) - - -int -main (void) -{ - size_t cnt; - int result = 0; - locale_t loc = newlocale (1 << LC_ALL, "C", NULL); - - for (cnt = 0; cnt < ntests; ++cnt) - { - int r; - - if (setlocale (LC_ALL, tests[cnt].locale) == NULL) - { - printf ("cannot set locale \"%s\": %m\n", tests[cnt].locale); - result = 1; - continue; - } - - printf ("\nstrcasecmp_l (\"%s\", \"%s\", loc)\n", - tests[cnt].str1, tests[cnt].str2); - - r = strcasecmp_l (tests[cnt].str1, tests[cnt].str2, loc); - if (tests[cnt].result == 0) - { - if (r != 0) - { - printf ("\"%s\" and \"%s\" expected to be the same, result %d\n", - tests[cnt].str1, tests[cnt].str2, r); - result = 1; - } - } - else if (tests[cnt].result < 0) - { - if (r >= 0) - { - printf ("\"%s\" expected to be smaller than \"%s\", result %d\n", - tests[cnt].str1, tests[cnt].str2, r); - result = 1; - } - } - else - { - if (r <= 0) - { - printf ("\"%s\" expected to be larger than \"%s\", result %d\n", - tests[cnt].str1, tests[cnt].str2, r); - result = 1; - } - } - } - - return result; -} diff --git a/test/locale/tst-xlocale2.c b/test/locale/tst-xlocale2.c deleted file mode 100644 index 30d87de72..000000000 --- a/test/locale/tst-xlocale2.c +++ /dev/null @@ -1,64 +0,0 @@ -#include -#include -#include -#include - - -static int do_test (__locale_t l); - -int -main (void) -{ - locale_t l; - locale_t l2; - int result; - - l = newlocale (1 << LC_ALL, "de_DE.ISO-8859-1", NULL); - if (l == NULL) - { - printf ("newlocale failed: %m\n"); - exit (EXIT_FAILURE); - } - puts ("Running tests of created locale"); - result = do_test (l); - - l2 = duplocale (l); - if (l2 == NULL) - { - printf ("duplocale failed: %m\n"); - exit (EXIT_FAILURE); - } - freelocale (l); - puts ("Running tests of duplicated locale"); - result |= do_test (l2); - - return result; -} - - -static const char str[] = "0123456789abcdef ABCDEF ghijklmnopqrstuvwxyzäÄöÖüÜ"; -static const char exd[] = "11111111110000000000000000000000000000000000000000"; -static const char exa[] = "00000000001111110111111011111111111111111111111111"; -static const char exx[] = "11111111111111110111111000000000000000000000000000"; - - -static int -do_test (locale_t l) -{ - int result = 0; -size_t n; - -#define DO_TEST(TEST, RES) \ - for (n = 0; n < sizeof (str) - 1; ++n) \ - if ('0' + (TEST (str[n], l) != 0) != RES[n]) \ - { \ - printf ("%s(%c) failed\n", #TEST, str[n]); \ - result = 1; \ - } - - DO_TEST (isdigit_l, exd); - DO_TEST (isalpha_l, exa); - DO_TEST (isxdigit_l, exx); - - return result; -} diff --git a/test/locale/tst_nl_langinfo.c b/test/locale/tst_nl_langinfo.c deleted file mode 100644 index fcf2fe2eb..000000000 --- a/test/locale/tst_nl_langinfo.c +++ /dev/null @@ -1,296 +0,0 @@ -#include -#include -#include -#include -#include - -#if !defined(__UCLIBC__) && 0 -#define DO_EXTRA -#endif - -int main(int argc, char **argv) -{ - char *l; - const unsigned char *x; -/* const unsigned char *y; */ - const unsigned char *p; - - if (argc > 2) { - printf("invalid args\n"); - return EXIT_FAILURE; - } - if (argc == 1) { - l = ""; - } else { - l = *++argv; - } - - if (!(x = setlocale(LC_ALL,l))) { - printf("couldn't set locale %s\n", l); - return EXIT_FAILURE; - } - -/* printf("\nsetlocale returned:\n "); */ -/* do { */ -/* printf("\\x%02x", *x); */ -/* } while (*x++); */ -/* printf("\n"); */ - -#ifndef __BCC__ -#define STR(X) #X -#else -#define STR(X) __STR(X) -#endif -#define __PASTE2(A,B) A.B - -#define DO_NL_I(X) \ - printf( STR(X) " = %d\n", (int) nl_langinfo(X) ); -#define DO_NL_S(X) \ - printf( STR(X) " = \"%s\"\n", nl_langinfo(X) ); -#define DO_NL_C(X) \ - printf( STR(X) " = \"\\x%02x\"\n", *((unsigned char *) nl_langinfo(X)) ); - - printf("ctype\n"); - - DO_NL_S(CODESET); -#ifdef DO_EXTRA - DO_NL_I(_NL_CTYPE_INDIGITS_MB_LEN); - DO_NL_S(_NL_CTYPE_INDIGITS0_MB); - DO_NL_S(_NL_CTYPE_INDIGITS1_MB); - DO_NL_S(_NL_CTYPE_INDIGITS2_MB); - DO_NL_S(_NL_CTYPE_INDIGITS3_MB); - DO_NL_S(_NL_CTYPE_INDIGITS4_MB); - DO_NL_S(_NL_CTYPE_INDIGITS5_MB); - DO_NL_S(_NL_CTYPE_INDIGITS6_MB); - DO_NL_S(_NL_CTYPE_INDIGITS7_MB); - DO_NL_S(_NL_CTYPE_INDIGITS8_MB); - DO_NL_S(_NL_CTYPE_INDIGITS9_MB); -#endif - DO_NL_S(_NL_CTYPE_OUTDIGIT0_MB); - DO_NL_S(_NL_CTYPE_OUTDIGIT1_MB); - DO_NL_S(_NL_CTYPE_OUTDIGIT2_MB); - DO_NL_S(_NL_CTYPE_OUTDIGIT3_MB); - DO_NL_S(_NL_CTYPE_OUTDIGIT4_MB); - DO_NL_S(_NL_CTYPE_OUTDIGIT5_MB); - DO_NL_S(_NL_CTYPE_OUTDIGIT6_MB); - DO_NL_S(_NL_CTYPE_OUTDIGIT7_MB); - DO_NL_S(_NL_CTYPE_OUTDIGIT8_MB); - DO_NL_S(_NL_CTYPE_OUTDIGIT9_MB); - - - printf("numeric\n"); - - DO_NL_S(RADIXCHAR); /* DECIMAL_POINT */ - DO_NL_S(THOUSEP); /* THOUSANDS_SEP */ -/* DO_NL_S(GROUPING); */ - - printf("GROUPING = \""); - for (p = (unsigned char *) nl_langinfo(GROUPING) ; *p ; p++) { - printf("\\x%02x", *p); - } - printf("\"\n\n"); - - printf("monetary\n"); - - DO_NL_S(INT_CURR_SYMBOL); - DO_NL_S(CURRENCY_SYMBOL); - DO_NL_S(MON_DECIMAL_POINT); - DO_NL_S(MON_THOUSANDS_SEP); -/* DO_NL_S(MON_GROUPING); */ - - printf("MON_GROUPING = \""); - for (p = (unsigned char *) nl_langinfo(MON_GROUPING) ; *p ; p++) { - printf("\\x%02x", *p); - } - printf("\"\n\n"); - - DO_NL_S(POSITIVE_SIGN); - DO_NL_S(NEGATIVE_SIGN); - DO_NL_C(INT_FRAC_DIGITS); - DO_NL_C(FRAC_DIGITS); - DO_NL_C(P_CS_PRECEDES); - DO_NL_C(P_SEP_BY_SPACE); - DO_NL_C(N_CS_PRECEDES); - DO_NL_C(N_SEP_BY_SPACE); - DO_NL_C(P_SIGN_POSN); - DO_NL_C(N_SIGN_POSN); - DO_NL_C(INT_P_CS_PRECEDES); - DO_NL_C(INT_P_SEP_BY_SPACE); - DO_NL_C(INT_N_CS_PRECEDES); - DO_NL_C(INT_N_SEP_BY_SPACE); - DO_NL_C(INT_P_SIGN_POSN); - DO_NL_C(INT_N_SIGN_POSN); - - DO_NL_S(CRNCYSTR); /* CURRENCY_SYMBOL */ - - - printf("time\n"); - - DO_NL_S(ABDAY_1); - DO_NL_S(ABDAY_2); - DO_NL_S(ABDAY_3); - DO_NL_S(ABDAY_4); - DO_NL_S(ABDAY_5); - DO_NL_S(ABDAY_6); - DO_NL_S(ABDAY_7); - - DO_NL_S(DAY_1); - DO_NL_S(DAY_2); - DO_NL_S(DAY_3); - DO_NL_S(DAY_4); - DO_NL_S(DAY_5); - DO_NL_S(DAY_6); - DO_NL_S(DAY_7); - - DO_NL_S(ABMON_1); - DO_NL_S(ABMON_2); - DO_NL_S(ABMON_3); - DO_NL_S(ABMON_4); - DO_NL_S(ABMON_5); - DO_NL_S(ABMON_6); - DO_NL_S(ABMON_7); - DO_NL_S(ABMON_8); - DO_NL_S(ABMON_9); - DO_NL_S(ABMON_10); - DO_NL_S(ABMON_11); - DO_NL_S(ABMON_12); - - DO_NL_S(MON_1); - DO_NL_S(MON_2); - DO_NL_S(MON_3); - DO_NL_S(MON_4); - DO_NL_S(MON_5); - DO_NL_S(MON_6); - DO_NL_S(MON_7); - DO_NL_S(MON_8); - DO_NL_S(MON_9); - DO_NL_S(MON_10); - DO_NL_S(MON_11); - DO_NL_S(MON_12); - - DO_NL_S(AM_STR); - DO_NL_S(PM_STR); - - DO_NL_S(D_T_FMT); - DO_NL_S(D_FMT); - DO_NL_S(T_FMT); - DO_NL_S(T_FMT_AMPM); -/* DO_NL_S(ERA); */ - { - const char *p = nl_langinfo(ERA); - if (!p || !*p) { - printf("ERA = (none)\n"); - } else { - int i; - printf("ERA:\n"); - for (i=0 ; i < 100 ; i++) { - printf(" %3d: \"%s\"\n", i, p); - while (*p) ++p; - ++p; - if (!*p) break; - } - } - } - - DO_NL_S(ERA_YEAR); /* non SuSv3 */ - DO_NL_S(ERA_D_FMT); -/* DO_NL_S(ALT_DIGITS); */ - { - const char *p = nl_langinfo(ALT_DIGITS); - if (!p || !*p) { - printf("ALT_DIGITS = (none)\n"); - } else { - int i; - printf("ALT_DIGITS:\n"); - for (i=0 ; i < 100 ; i++) { - printf(" %3d: \"%s\"\n", i, p); - while (*p) ++p; - ++p; - } - } - } - DO_NL_S(ERA_D_T_FMT); - DO_NL_S(ERA_T_FMT); - -#ifdef DO_EXTRA - DO_NL_C(_NL_TIME_WEEK_NDAYS); - DO_NL_I(_NL_TIME_WEEK_1STDAY); /* grr... this won't work with 16bit ptrs */ - DO_NL_C(_NL_TIME_WEEK_1STWEEK); - DO_NL_C(_NL_TIME_FIRST_WEEKDAY); - DO_NL_C(_NL_TIME_FIRST_WORKDAY); - DO_NL_C(_NL_TIME_CAL_DIRECTION); - DO_NL_S(_NL_TIME_TIMEZONE); - DO_NL_S(_DATE_FMT); -#endif - - printf("messages\n"); - - DO_NL_S(YESEXPR); - DO_NL_S(NOEXPR); - DO_NL_S(YESSTR); - DO_NL_S(NOSTR); - -#ifdef DO_EXTRA - - printf("paper\n"); - - DO_NL_I(_NL_PAPER_HEIGHT); - DO_NL_I(_NL_PAPER_WIDTH); - - printf("name\n"); - - DO_NL_S(_NL_NAME_NAME_FMT); - DO_NL_S(_NL_NAME_NAME_GEN); - DO_NL_S(_NL_NAME_NAME_MR); - DO_NL_S(_NL_NAME_NAME_MRS); - DO_NL_S(_NL_NAME_NAME_MISS); - DO_NL_S(_NL_NAME_NAME_MS); - - printf("address\n"); - - DO_NL_S(_NL_ADDRESS_POSTAL_FMT); - DO_NL_S(_NL_ADDRESS_COUNTRY_NAME); - DO_NL_S(_NL_ADDRESS_COUNTRY_POST); - DO_NL_S(_NL_ADDRESS_COUNTRY_AB2); - DO_NL_S(_NL_ADDRESS_COUNTRY_AB3); - DO_NL_S(_NL_ADDRESS_COUNTRY_CAR); - DO_NL_I(_NL_ADDRESS_COUNTRY_NUM); - DO_NL_S(_NL_ADDRESS_COUNTRY_ISBN); - DO_NL_S(_NL_ADDRESS_LANG_NAME); - DO_NL_S(_NL_ADDRESS_LANG_AB); - DO_NL_S(_NL_ADDRESS_LANG_TERM); - DO_NL_S(_NL_ADDRESS_LANG_LIB); - - printf("telephone\n"); - - DO_NL_S(_NL_TELEPHONE_TEL_INT_FMT); - DO_NL_S(_NL_TELEPHONE_TEL_DOM_FMT); - DO_NL_S(_NL_TELEPHONE_INT_SELECT); - DO_NL_S(_NL_TELEPHONE_INT_PREFIX); - - printf("measurement\n"); - - DO_NL_C(_NL_MEASUREMENT_MEASUREMENT); /* 1 is metric, 2 is US */ - - printf("identification\n"); - - DO_NL_S(_NL_IDENTIFICATION_TITLE); - DO_NL_S(_NL_IDENTIFICATION_SOURCE); - DO_NL_S(_NL_IDENTIFICATION_ADDRESS); - DO_NL_S(_NL_IDENTIFICATION_CONTACT); - DO_NL_S(_NL_IDENTIFICATION_EMAIL); - DO_NL_S(_NL_IDENTIFICATION_TEL); - DO_NL_S(_NL_IDENTIFICATION_FAX); - DO_NL_S(_NL_IDENTIFICATION_LANGUAGE); - DO_NL_S(_NL_IDENTIFICATION_TERRITORY); - DO_NL_S(_NL_IDENTIFICATION_AUDIENCE); - DO_NL_S(_NL_IDENTIFICATION_APPLICATION); - DO_NL_S(_NL_IDENTIFICATION_ABBREVIATION); - DO_NL_S(_NL_IDENTIFICATION_REVISION); - DO_NL_S(_NL_IDENTIFICATION_DATE); - DO_NL_S(_NL_IDENTIFICATION_CATEGORY); - -#endif - - return EXIT_SUCCESS; -} diff --git a/test/locale/xfrm-test.c b/test/locale/xfrm-test.c deleted file mode 100644 index 1ab087440..000000000 --- a/test/locale/xfrm-test.c +++ /dev/null @@ -1,143 +0,0 @@ -/* Test collation function via transformation using real data. - Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -struct lines -{ - char *xfrm; - char *line; -}; - -static int xstrcmp (const void *, const void *); - -int -main (int argc, char *argv[]) -{ - int result = 0; - size_t nstrings, nstrings_max; - struct lines *strings; - char *line = NULL; - size_t len = 0; - size_t n; - - if (argc < 2) - error (1, 0, "usage: %s ", argv[0]); - - setlocale (LC_ALL, ""); - - nstrings_max = 100; - nstrings = 0; - strings = (struct lines *) malloc (nstrings_max * sizeof (struct lines)); - if (strings == NULL) - { - perror (argv[0]); - exit (1); - } - - while (1) - { - char saved, *newp; - int needed; - int l; - if (getline (&line, &len, stdin) < 0) - break; - - if (nstrings == nstrings_max) - { - strings = (struct lines *) realloc (strings, - (nstrings_max *= 2) - * sizeof (*strings)); - if (strings == NULL) - { - perror (argv[0]); - exit (1); - } - } - strings[nstrings].line = strdup (line); - l = strcspn (line, ":(;"); - while (l > 0 && isspace (line[l - 1])) - --l; - - saved = line[l]; - line[l] = '\0'; - needed = strxfrm (NULL, line, 0); - newp = malloc (needed + 1); - strxfrm (newp, line, needed + 1); - strings[nstrings].xfrm = newp; - line[l] = saved; - ++nstrings; - } - free (line); - - /* First shuffle. */ - srandom (atoi (argv[1])); - for (n = 0; n < 10 * nstrings; ++n) - { - int r1, r2, r; - size_t idx1 = random () % nstrings; - size_t idx2 = random () % nstrings; - struct lines tmp = strings[idx1]; - strings[idx1] = strings[idx2]; - strings[idx2] = tmp; - - /* While we are at it a first little test. */ - r1 = strcmp (strings[idx1].xfrm, strings[idx2].xfrm); - r2 = strcmp (strings[idx2].xfrm, strings[idx1].xfrm); - r = -(r1 ^ r2); - if (r) - r /= abs (r1 ^ r2); - - if (r < 0 || (r == 0 && (r1 != 0 || r2 != 0)) - || (r > 0 && (r1 ^ r2) >= 0)) - printf ("collate wrong: %d vs. %d\n", r1, r2); - } - - /* Now sort. */ - qsort (strings, nstrings, sizeof (struct lines), xstrcmp); - - /* Print the result. */ - for (n = 0; n < nstrings; ++n) - { - fputs (strings[n].line, stdout); - free (strings[n].line); - free (strings[n].xfrm); - } - free (strings); - - return result; -} - - -static int -xstrcmp (ptr1, ptr2) - const void *ptr1; - const void *ptr2; -{ - const struct lines *l1 = (const struct lines *) ptr1; - const struct lines *l2 = (const struct lines *) ptr2; - - return strcmp (l1->xfrm, l2->xfrm); -} diff --git a/test/malloc/Makefile b/test/malloc/Makefile deleted file mode 100644 index 97c424be6..000000000 --- a/test/malloc/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc malloc tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/malloc/Makefile.in b/test/malloc/Makefile.in deleted file mode 100644 index 875a849e6..000000000 --- a/test/malloc/Makefile.in +++ /dev/null @@ -1,16 +0,0 @@ -# uClibc malloc tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -TESTS_DISABLED := time_malloc - -ifneq ($(UCLIBC_SUSV2_LEGACY),y) -TESTS_DISABLED += tst-valloc -endif - -ifneq ($(UCLIBC_HAS_OBSTACK),y) -TESTS_DISABLED += tst-obstack -endif - -ifneq ($(MALLOC_STANDARD),y) -TESTS_DISABLED += tst-asprintf -endif diff --git a/test/malloc/malloc-standard-alignment.c b/test/malloc/malloc-standard-alignment.c deleted file mode 100644 index 71e5023ae..000000000 --- a/test/malloc/malloc-standard-alignment.c +++ /dev/null @@ -1,42 +0,0 @@ -/* exercise a bug found in malloc-standard when alignment - * values are out of whack and cause a small overflow into - * actual user data. - */ - -#include -#include -#include - -#define ok(p) ((void*)p > (void*)0x1000) -#define x \ - do { \ - printf("%i: phead = %p, phead->link @ %p = %p %s\n", \ - __LINE__, phead, \ - ok(phead) ? &phead->link : 0, \ - ok(phead) ? phead->link : 0, \ - ok(phead) ? phead->link == 0 ? "" : "!!!!!!!!!!!" : ""); \ - if (phead->link != NULL) exit(1); \ - } while (0); - -struct llist_s { - void *data; - struct llist_s *link; -} *phead; - -int main(int argc, char *argv[]) -{ - char *line, *reg; - - setbuf(stdout, NULL); - setbuf(stderr, NULL); - - phead = malloc(sizeof(*phead)); - phead->link = NULL; - -x line = malloc(80); -x line = realloc(line, 2); -x reg = malloc(32); -x free(line); - -x return 0; -} diff --git a/test/malloc/malloc.c b/test/malloc/malloc.c deleted file mode 100644 index ca7c5f927..000000000 --- a/test/malloc/malloc.c +++ /dev/null @@ -1,81 +0,0 @@ - -#include -#include -#include -#include - -#define N_PTRS 1000 -#define N_ALLOCS 10000 -#define MAX_SIZE 0x10000 - -#define random_size() (random()%MAX_SIZE) -#define random_ptr() (random()%N_PTRS) - -int test1(void); -int test2(void); - -int main(int argc, char *argv[]) -{ - return test1() + test2(); -} - -int test1(void) -{ - void **ptrs; - int i,j; - int size; - int ret = 0; - - srandom(0x19730929); - - ptrs = malloc(N_PTRS*sizeof(void *)); - - for(i=0; i -#include -#include - -#define size_t unsigned int - -int -main (int argc, char *argv[]) -{ - char *dummy0; - char *dummy1; - char *fill_info_table1; - char *over_top; - size_t over_top_size = 0x3000; - char *over_top_dup; - size_t over_top_dup_size = 0x7000; - char *x; - size_t i; - - /* Here's what memory is supposed to look like (hex): - size contents - 3000 original_info_table, later fill_info_table1 - 3fa000 dummy0 - 3fa000 dummy1 - 6000 info_table_2 - 3000 over_top - - */ - /* mem: original_info_table */ - dummy0 = malloc (0x3fa000); - /* mem: original_info_table, dummy0 */ - dummy1 = malloc (0x3fa000); - /* mem: free, dummy0, dummy1, info_table_2 */ - fill_info_table1 = malloc (0x3000); - /* mem: fill_info_table1, dummy0, dummy1, info_table_2 */ - - x = malloc (0x1000); - free (x); - /* mem: fill_info_table1, dummy0, dummy1, info_table_2, freexx */ - - /* This is what loses; info_table_2 and freexx get combined unbeknownst - to mmalloc, and mmalloc puts over_top in a section of memory which - is on the free list as part of another block (where info_table_2 had - been). */ - over_top = malloc (over_top_size); - over_top_dup = malloc (over_top_dup_size); - memset (over_top, 0, over_top_size); - memset (over_top_dup, 1, over_top_dup_size); - - for (i = 0; i < over_top_size; ++i) - if (over_top[i] != 0) - { - printf ("FAIL: malloc expands info table\n"); - return 0; - } - - for (i = 0; i < over_top_dup_size; ++i) - if (over_top_dup[i] != 1) - { - printf ("FAIL: malloc expands info table\n"); - return 0; - } - - printf ("PASS: malloc expands info table\n"); - return 0; -} diff --git a/test/malloc/realloc-can-shrink.c b/test/malloc/realloc-can-shrink.c deleted file mode 100644 index 33249db42..000000000 --- a/test/malloc/realloc-can-shrink.c +++ /dev/null @@ -1,17 +0,0 @@ -/* make sure that realloc() can properly shrink buffers */ - -#include - -#define LARGE_BUFFER (1 << 20) /* idea is to span a lot of pages */ - -int main(int argc, char *argv[]) -{ - int count = 20; - char *ptr = NULL; - while (count--) { - ptr = realloc(ptr, LARGE_BUFFER); - ptr = realloc(ptr, 1); - } - free(ptr); - return 0; -} diff --git a/test/malloc/realloc0.c b/test/malloc/realloc0.c deleted file mode 100644 index 62ae39d25..000000000 --- a/test/malloc/realloc0.c +++ /dev/null @@ -1,13 +0,0 @@ -#include -#include - -int main(int argc, char **argv) -{ - void *ptr = NULL; - ptr = realloc(ptr, 0); - printf("realloc(NULL, 0) -- pointer = %p\n", ptr); - - ptr = malloc(0); - printf("malloc(0) -- pointer = %p\n", ptr); - return 0; -} diff --git a/test/malloc/testmalloc.c b/test/malloc/testmalloc.c deleted file mode 100644 index 42707d231..000000000 --- a/test/malloc/testmalloc.c +++ /dev/null @@ -1,101 +0,0 @@ -#include -#include -#include - - -struct list { - struct list *next; -}; - -int main(void) -{ - int z=999; - int *y=&z; - int *x=NULL; - struct list *save; - struct list *lp; - int i; - - - printf("pointer to x is %p\n", x); - printf("pointer to y is %p\n", y); - x=malloc(sizeof(int)*2000); - printf("pointer to x is %p\n", x); - y=malloc(sizeof(int)*100); - printf("pointer to y is %p\n", y); - free(x); - free(y); - printf("about to free(0)\n"); - free(0); - - x=malloc(13); - printf("x = %p\n", x); - memcpy(x, "Small string", 13); - printf("0x%p test string1: %s\n", x, (char *)x); - y = realloc(x, 36); - printf("0x%p test string1: %s\n", y, (char *)y); - memcpy(y, "********** Larger string **********", 36); - printf("0x%p test string2: %s\n", y, (char *)y); - free(y); - - - printf("Allocate 100 nodes 500 bytes each\n"); - save = 0; - for (i=0; i<100; i++) { - lp = malloc(500); - if (lp == 0) { - printf("loop 1: malloc returned 0\n"); - goto Failed; - } - lp->next = save; - save = lp; - } - - printf("freeing 100 nodes\n"); - while (save) { - lp = save; - save = save->next; - free(lp); - } - - printf("try realloc 100 times \n"); - lp = 0; - for (i=1; i<=100; i++) { - lp = realloc(lp, i*200); - if (lp == 0) { - printf("loop 3: realloc returned 0\n"); - goto Failed; - } - } - { - void *unused_ret = realloc(lp, 0); - (void) unused_ret; - } - - printf("Allocate another 100 nodes 600 bytes each\n"); - save = 0; - for (i=0; i<100; i++) { - lp = malloc(600); - if (lp == 0) { - printf("loop 2: malloc returned 0\n"); - goto Failed; - } - lp->next = save; - save = lp; - } - - printf("freeing 100 nodes\n"); - while (save) { - lp = save; - save = save->next; - free(lp); - } - - - printf("alloc test PASSED\n"); - exit(0); - -Failed: - printf("!!!!!!!!!!!! alloc test FAILED. !!!!!!!!!!!!!!!\n"); - exit(1); -} diff --git a/test/malloc/time_malloc.c b/test/malloc/time_malloc.c deleted file mode 100644 index 0b626654f..000000000 --- a/test/malloc/time_malloc.c +++ /dev/null @@ -1,62 +0,0 @@ -#include -#define REPS (100000) -int sizes[] = { - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50, - 100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50 -}; -#define NUM (sizeof sizes / sizeof sizes[0]) -int main () -{ - int i, j; - void *allocs[NUM]; - for (i = 0; i < REPS; i++) { - for (j = 0; j < NUM; j++) { - allocs[j] = malloc(sizes[j]); - } - for (j = 0; j < NUM; j++) { - free(allocs[j]); - } - } - return 0; -} - diff --git a/test/malloc/tst-asprintf.c b/test/malloc/tst-asprintf.c deleted file mode 100644 index d4c3f7676..000000000 --- a/test/malloc/tst-asprintf.c +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include -#include -#include -#include - -static void my_stats(void) -{ - malloc_stats(); - fprintf(stderr, "\n"); -} - -int main(int argc, char *argv[]) -{ - char *a, *b; - - my_stats(); - asprintf(&b, "asdsadasd %ssdf\n", "AAAA"); - my_stats(); - asprintf(&a, "asdsadasd %ssdf\n", "AAAA"); - my_stats(); - free(a); - free(b); - my_stats(); - - return 0; -} diff --git a/test/malloc/tst-calloc.c b/test/malloc/tst-calloc.c deleted file mode 100644 index b7b6d2bd2..000000000 --- a/test/malloc/tst-calloc.c +++ /dev/null @@ -1,127 +0,0 @@ -/* Copyright (C) 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper . - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - -static int errors = 0; - -/* Number of samples per size. */ -#define N 50000 - - -static void -fixed_test (int size) -{ - char *ptrs[N]; - int i; - - for (i = 0; i < N; ++i) - { - int j; - - ptrs[i] = (char *) calloc (1, size); - - if (ptrs[i] == NULL) - break; - - for (j = 0; j < size; ++j) - { - if (ptrs[i][j] != '\0') { - ++errors; - printf("byte not cleared (size %d, element %d, byte %d)", - size, i, j); - } - ptrs[i][j] = '\xff'; - } - } - - while (i-- > 0) - free (ptrs[i]); -} - - -static void -random_test (void) -{ - char *ptrs[N]; - int i; - - for (i = 0; i < N; ++i) - { - int j; - int n = 1 + random () % 10; - int elem = 1 + random () % 100; - int size = n * elem; - - ptrs[i] = (char *) calloc (n, elem); - - if (ptrs[i] == NULL) - break; - - for (j = 0; j < size; ++j) - { - if (ptrs[i][j] != '\0') { - ++errors; - printf("byte not cleared (size %d, element %d, byte %d)", - size, i, j); - } - ptrs[i][j] = '\xff'; - } - } - - while (i-- > 0) - free (ptrs[i]); -} - - -static void -null_test (void) -{ - /* If the size is 0 the result is implementation defined. Just make - sure the program doesn't crash. */ - calloc (0, 0); - calloc (0, UINT_MAX); - calloc (UINT_MAX, 0); - calloc (0, ~((size_t) 0)); - calloc (~((size_t) 0), 0); -} - - -int -main (void) -{ - /* We are allocating blocks with `calloc' and check whether every - block is completely cleared. We first try this for some fixed - times and then with random size. */ - fixed_test (15); - fixed_test (5); - fixed_test (17); - fixed_test (6); - fixed_test (31); - fixed_test (96); - - random_test (); - - null_test (); - - return errors != 0; -} diff --git a/test/malloc/tst-malloc.c b/test/malloc/tst-malloc.c deleted file mode 100644 index 2d3bcce17..000000000 --- a/test/malloc/tst-malloc.c +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright (C) 1999 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 1999. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - -static int errors = 0; - -static void -merror (const char *msg) -{ - ++errors; - printf ("Error: %s\n", msg); -} - -int -main (void) -{ - void *p; - int save; - - errno = 0; - - p = malloc (-1); - save = errno; - - if (p != NULL) - merror ("malloc (-1) succeeded."); - - if (p == NULL && save != ENOMEM) - merror ("errno is not set correctly"); - - p = malloc (10); - if (p == NULL) - merror ("malloc (10) failed."); - - /* realloc (p, 0) == free (p). */ - p = realloc (p, 0); - if (p != NULL) - merror ("realloc (p, 0) failed."); - - p = malloc (0); -#if !defined(__UCLIBC__) || defined(__MALLOC_GLIBC_COMPAT__) - if (p == NULL) -#else - if (p != NULL) -#endif - merror ("malloc (0) failed."); - - p = realloc (p, 0); - if (p != NULL) - merror ("realloc (p, 0) failed."); - - return errors != 0; -} diff --git a/test/malloc/tst-mallocfork.c b/test/malloc/tst-mallocfork.c deleted file mode 100644 index 5bb1d7628..000000000 --- a/test/malloc/tst-mallocfork.c +++ /dev/null @@ -1,51 +0,0 @@ -/* Derived from the test case in - http://sourceware.org/bugzilla/show_bug.cgi?id=838. */ -#include -#include -#include -#include -#include -#include -#include - -static void -sig_handler (int signum) -{ - pid_t child = vfork (); - if (child == 0) - exit (0); - TEMP_FAILURE_RETRY (waitpid (child, NULL, 0)); -} - -static int -do_test (void) -{ - pid_t parent = getpid (); - - struct sigaction action = { .sa_handler = sig_handler }; - sigemptyset (&action.sa_mask); - - malloc (sizeof (int)); - - if (sigaction (SIGALRM, &action, NULL) != 0) - { - puts ("sigaction failed"); - return 1; - } - - /* Create a child that sends the signal to be caught. */ - pid_t child = vfork (); - if (child == 0) - { - if (kill (parent, SIGALRM) == -1) - perror ("kill"); - exit (0); - } - - TEMP_FAILURE_RETRY (waitpid (child, NULL, 0)); - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/malloc/tst-mcheck.c b/test/malloc/tst-mcheck.c deleted file mode 100644 index 9297d7994..000000000 --- a/test/malloc/tst-mcheck.c +++ /dev/null @@ -1,95 +0,0 @@ -/* Copyright (C) 2005 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2005. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - -static int errors = 0; - -static void -merror (const char *msg) -{ - ++errors; - printf ("Error: %s\n", msg); -} - -int -main (void) -{ - void *p, *q; - - errno = 0; - - p = malloc (-1); - - if (p != NULL) - merror ("malloc (-1) succeeded."); - else if (errno != ENOMEM) - merror ("errno is not set correctly."); - - p = malloc (10); - if (p == NULL) - merror ("malloc (10) failed."); - - p = realloc (p, 0); - if (p != NULL) - merror ("realloc (p, 0) failed."); - - p = malloc (0); -#if !defined(__UCLIBC__) || defined(__MALLOC_GLIBC_COMPAT__) - if (p == NULL) -#else - if (p != NULL) -#endif - merror ("malloc (0) failed."); - - p = realloc (p, 0); - if (p != NULL) - merror ("realloc (p, 0) failed."); - - q = malloc (256); - if (q == NULL) - merror ("malloc (256) failed."); - - p = malloc (512); - if (p == NULL) - merror ("malloc (512) failed."); - - if (realloc (p, -256) != NULL) - merror ("realloc (p, -256) succeeded."); - else if (errno != ENOMEM) - merror ("errno is not set correctly."); - - free (p); - - p = malloc (512); - if (p == NULL) - merror ("malloc (512) failed."); - - if (realloc (p, -1) != NULL) - merror ("realloc (p, -1) succeeded."); - else if (errno != ENOMEM) - merror ("errno is not set correctly."); - - free (p); - free (q); - - return errors != 0; -} diff --git a/test/malloc/tst-obstack.c b/test/malloc/tst-obstack.c deleted file mode 100644 index 1841946c3..000000000 --- a/test/malloc/tst-obstack.c +++ /dev/null @@ -1,104 +0,0 @@ -/* Test case by Alexandre Duret-Lutz . - * test_obstack_printf() added by Anthony G. Basile . - */ - -#include -#include -#include -#include -#include - -#define obstack_chunk_alloc verbose_malloc -#define obstack_chunk_free verbose_free -#define ALIGN_BOUNDARY 64 -#define ALIGN_MASK (ALIGN_BOUNDARY - 1) -#define OBJECT_SIZE 1000 - -static void * -verbose_malloc (size_t size) -{ - void *buf = malloc (size); - printf ("malloc (%zu) => %p\n", size, buf); - return buf; -} - -static void -verbose_free (void *buf) -{ - free (buf); - printf ("free (%p)\n", buf); -} - -int -test_obstack_alloc (void) -{ - int result = 0; - int align = 2; - - while (align <= 64) - { - struct obstack obs; - int i; - int align_mask = align - 1; - - printf ("\n Alignment mask: %d\n", align_mask); - - obstack_init (&obs); - obstack_alignment_mask (&obs) = align_mask; - /* finish an empty object to take alignment into account */ - obstack_finish (&obs); - - /* let's allocate some objects and print their addresses */ - for (i = 15; i > 0; --i) - { - void *obj = obstack_alloc (&obs, OBJECT_SIZE); - - printf ("obstack_alloc (%u) => %p \t%s\n", OBJECT_SIZE, obj, - ((uintptr_t) obj & align_mask) ? "(not aligned)" : ""); - result |= ((uintptr_t) obj & align_mask) != 0; - } - - /* clean up */ - obstack_free (&obs, 0); - - align <<= 1; - } - - return result; -} - -int -test_obstack_printf (void) -{ - int result = 0; - int n; - char *s; - struct obstack ob; - - obstack_init (&ob); - - n = obstack_printf (&ob, "%s%d%c", "testing 1 ... 2 ... ", 3, '\n'); - result |= (n != 22); - printf("obstack_printf => %d\n", n); - - n = obstack_printf (&ob, "%s%d%c", "testing 3 ... 2 ... ", 1, '\0'); - result |= (n != 22); - printf("obstack_printf => %d\n", n); - - s = obstack_finish (&ob); - printf("obstack_printf => %s\n", s); - obstack_free (&ob, NULL); - - return result; -} - -int -main (void) -{ - int result = 0; - - result |= test_obstack_alloc(); - result |= test_obstack_printf(); - - return result; -} diff --git a/test/malloc/tst-valloc.c b/test/malloc/tst-valloc.c deleted file mode 100644 index 643a0dda4..000000000 --- a/test/malloc/tst-valloc.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Test case by Stephen Tweedie . */ -#include -#include -#include - -int -main (void) -{ - char *p; - int pagesize = getpagesize (); - int i; - - p = valloc (pagesize); - i = (long int) p; - - if ((i & (pagesize-1)) != 0) - { - fprintf (stderr, "Alignment problem: valloc returns %p\n", p); - exit (1); - } - - return 0; -} diff --git a/test/math/Makefile b/test/math/Makefile deleted file mode 100644 index 6194efa07..000000000 --- a/test/math/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc math tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/math/Makefile.in b/test/math/Makefile.in deleted file mode 100644 index 387400151..000000000 --- a/test/math/Makefile.in +++ /dev/null @@ -1,46 +0,0 @@ -# uClibc math tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -# libm-test.c is a generated file used by the tests internally so skip it -TESTS_DISABLED := libm-test - -# gamma (removed from TESTS, need to add "small errors are ok" machinery there) -TESTS_DISABLED += gamma -ifeq ($(UCLIBC_HAS_LONG_DOUBLE_MATH),) -TESTS_DISABLED += test-ldouble test-ildoubl compile_test c99_test -CFLAGS_basic-test := -DNO_LONG_DOUBLE -endif -ifeq ($(DO_C99_MATH),) -TESTS_DISABLED += test-float test-ifloat test-double test-idouble rint signgam ilogb -endif -ifeq ($(UCLIBC_HAS_FPU),) -TESTS_DISABLED += test-fpucw -endif - -DODIFF_rint := 1 -DODIFF_signgam := 1 - -# NOTE: For basic-test we must disable the floating point optimization. -# Only for sh architecture because in the other architecture are disabled. -ifeq ($(TARGET_ARCH),sh) -CFLAGS_basic-test += -mieee -endif -EXTRA_CFLAGS := -fno-builtin -EXTRA_LDFLAGS := -lm - -PERL := perl - -MDEPS := $(wildcard test-*.c) -$(MDEPS): libm-test.c - -ULP_SUFFIX := -ifeq ($(TARGET_ARCH),mips) -ULP_SUFFIX:=$(if $(CONFIG_MIPS_N64_ABI),64,32) -endif - -TARGET_ULP := $(if $(wildcard libm-test-ulps-$(TARGET_ARCH)$(ULP_SUFFIX)),$(TARGET_ARCH)$(ULP_SUFFIX),generic) - -libm-test.c: libm-test-ulps-$(TARGET_ULP) libm-test.inc gen-libm-test.pl - $(Q)$(PERL) ./gen-libm-test.pl -u libm-test-ulps-$(TARGET_ULP) ./libm-test.inc -o "." 2>&1 > /dev/null - -EXTRA_CLEAN := libm-test.c libm-test-ulps.h diff --git a/test/math/basic-test.c b/test/math/basic-test.c deleted file mode 100644 index d073abb0f..000000000 --- a/test/math/basic-test.c +++ /dev/null @@ -1,161 +0,0 @@ -/* Copyright (C) 1999 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 1999. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#define _ISOC99_SOURCE - -#include -#include -#include - -static int errors = 0; - - -static void -check (const char *testname, int result) -{ - if (!result) { - printf ("Failure: %s\n", testname); - errors++; - } -} - -#define TEST_FUNC(NAME, FLOAT, NANFUNC, EPSILON, HUGEVAL) \ -static void \ -NAME (void) \ -{ \ - /* Variables are declared volatile to forbid some compiler \ - optimizations. */ \ - volatile FLOAT Inf_var, NaN_var, zero_var, one_var; \ - FLOAT x1, x2; \ - \ - zero_var = 0.0; \ - one_var = 1.0; \ - NaN_var = zero_var/zero_var; \ - Inf_var = one_var / zero_var; \ - \ - (void) &zero_var; \ - (void) &one_var; \ - (void) &NaN_var; \ - (void) &Inf_var; \ - \ - \ - check (#FLOAT " isinf (inf) == 1", isinf (Inf_var) == 1); \ - check (#FLOAT " isinf (-inf) == -1", isinf (-Inf_var) == -1); \ - check (#FLOAT " !isinf (1)", !(isinf (one_var))); \ - check (#FLOAT " !isinf (NaN)", !(isinf (NaN_var))); \ - \ - check (#FLOAT " isnan (NaN)", isnan (NaN_var)); \ - check (#FLOAT " isnan (-NaN)", isnan (-NaN_var)); \ - check (#FLOAT " !isnan (1)", !(isnan (one_var))); \ - check (#FLOAT " !isnan (inf)", !(isnan (Inf_var))); \ - \ - /* \ - the same tests but this time with NAN from \ - NAN is a double const \ - */ \ - check (#FLOAT " isnan (NAN)", isnan (NAN)); \ - check (#FLOAT " isnan (-NAN)", isnan (-NAN)); \ - check (#FLOAT " !isinf (NAN)", !(isinf (NAN))); \ - check (#FLOAT " !isinf (-NAN)", !(isinf (-NAN))); \ - \ - /* \ - And again with the value returned by the `nan' function. \ - */ \ - check (#FLOAT " isnan (NAN)", isnan (NANFUNC (""))); \ - check (#FLOAT " isnan (-NAN)", isnan (-NANFUNC (""))); \ - check (#FLOAT " !isinf (NAN)", !(isinf (NANFUNC ("")))); \ - check (#FLOAT " !isinf (-NAN)", !(isinf (-NANFUNC ("")))); \ - check (#FLOAT " NAN != NAN", NANFUNC ("") != NANFUNC ("")); \ - \ - /* test if HUGE_VALx is ok */ \ - x1 = HUGEVAL; \ - check (#FLOAT " isinf (HUGE_VALx) == +1", isinf (x1) == +1); \ - x1 = - HUGEVAL; \ - check (#FLOAT " isinf (-HUGE_VALx) == -1", isinf (x1) == -1); \ -} -#ifndef DO_C99_MATH -# undef TEST_FUNC -# define TEST_FUNC(NAME, FLOAT, NANFUNC, EPSILON, HUGEVAL) \ -static void \ -NAME(void) \ -{ /* nothing */ } -#endif - -#define TEST_VAL(NAME, FLOAT, NANFUNC, EPSILON, HUGEVAL) \ -static void \ -NAME (void) \ -{ \ - /* Variables are declared volatile to forbid some compiler \ - optimizations. */ \ - volatile FLOAT Inf_var, NaN_var, zero_var, one_var; \ - FLOAT x1, x2; \ - \ - zero_var = 0.0; \ - one_var = 1.0; \ - NaN_var = zero_var/zero_var; \ - Inf_var = one_var / zero_var; \ - \ - (void) &zero_var; \ - (void) &one_var; \ - (void) &NaN_var; \ - (void) &Inf_var; \ - \ - \ - check (#FLOAT " inf == inf", Inf_var == Inf_var); \ - check (#FLOAT " -inf == -inf", -Inf_var == -Inf_var); \ - check (#FLOAT " inf != -inf", Inf_var != -Inf_var); \ - check (#FLOAT " NaN != NaN", NaN_var != NaN_var); \ - \ - check (#FLOAT " NAN != NAN", NAN != NAN); \ - \ - \ - /* test if EPSILON is ok */ \ - x1 = 1.0; \ - x2 = x1 + EPSILON; \ - check (#FLOAT " 1 != 1+EPSILON", x1 != x2); \ - \ - x1 = 1.0; \ - x2 = x1 - EPSILON; \ - check (#FLOAT " 1 != 1-EPSILON", x1 != x2); \ - \ -} - -TEST_VAL (float_test_value, float, nanf, FLT_EPSILON, HUGE_VALF) -TEST_FUNC (float_test_call, float, nanf, FLT_EPSILON, HUGE_VALF) -TEST_VAL (double_test_value, double, nan, DBL_EPSILON, HUGE_VAL) -TEST_FUNC (double_test_call, double, nan, DBL_EPSILON, HUGE_VAL) -#ifndef NO_LONG_DOUBLE -TEST_VAL (ldouble_test_value, long double, nanl, LDBL_EPSILON, HUGE_VALL) -TEST_FUNC (ldouble_test_call, long double, nanl, LDBL_EPSILON, HUGE_VALL) -#endif - -int -main (void) -{ - float_test_value (); - float_test_call (); - double_test_value (); - double_test_call (); - -#ifndef NO_LONG_DOUBLE - ldouble_test_value (); - ldouble_test_call (); -#endif - - return errors != 0; -} diff --git a/test/math/c99_test.c b/test/math/c99_test.c deleted file mode 100644 index 73382e41b..000000000 --- a/test/math/c99_test.c +++ /dev/null @@ -1,116 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#define check_d1(func, param, expected) \ -do { \ - int err; hex_union ur; hex_union up; \ - double result = func(param); up.f = param; ur.f = result; \ - errors += (err = (result != (expected))); \ - err \ - ? printf("FAIL: %s(%g/"HEXFMT")=%g/"HEXFMT" (expected %g)\n", \ - #func, (double)(param), (long long)up.hex, result, (long long)ur.hex, (double)(expected)) \ - : printf("PASS: %s(%g)=%g\n", #func, (double)(param), result); \ -} while (0) - -#define check_i1(func, param, expected) \ -do { \ - int err; hex_union up; \ - long long result = func(param); up.f = param; \ - errors += (err = (result != (expected))); \ - err \ - ? printf("FAIL: %s(%g/"HEXFMT")=%lld/%llu (expected %llu)\n", \ - #func, (double)(param), (long long)up.hex, result, result, (long long)(expected)) \ - : printf("PASS: %s(%g)=%lld/%llu\n", #func, (double)(param), result, result); \ -} while (0) - -#define HEXFMT "%08llx" -typedef union { - double f; - uint64_t hex; -} hex_union; - -double zero = 0.0; -double minus_zero = 0.0; -double nan_value = 0.0; -int errors = 0; - -int main(void) -{ - nan_value /= nan_value; - minus_zero = copysign(zero, -1.0); - - check_i1(isfinite, 1.0, 1); - check_i1(isfinite, 2.0, 1); - check_i1(isfinite, 3.0, 1); - check_i1(isfinite, DBL_MAX, 1); - check_i1(isfinite, FLT_MAX, 1); - check_i1(isfinite, HUGE_VAL, 0); - check_i1(isfinite, HUGE_VALF, 0); - check_i1(isfinite, HUGE_VALL, 0); - check_i1(isfinite, nan_value, 0); - check_i1(isfinite, nan_value, 0); - check_i1(isfinite, nan_value, 0); - - check_i1(isnan, 1.0, 0); - check_i1(isnan, 2.0, 0); - check_i1(isnan, 3.0, 0); - check_i1(isnan, DBL_MAX, 0); - check_i1(isnan, FLT_MAX, 0); - check_i1(isnan, HUGE_VAL, 0); - check_i1(isnan, HUGE_VALF, 0); - check_i1(isnan, HUGE_VALL, 0); - check_i1(isnan, (float)HUGE_VALL, 0); - check_i1(isnan, nan_value, 1); - check_i1(isnan, nan_value, 1); - check_i1(isnan, nan_value, 1); - - check_i1(isinf, 1.0, 0); - check_i1(isinf, 2.0, 0); - check_i1(isinf, 3.0, 0); - check_i1(isinf, DBL_MAX, 0); - check_i1(isinf, FLT_MAX, 0); - check_i1(isinf, (float)DBL_MAX, 1); - check_i1(isinf, HUGE_VAL, 1); - check_i1(isinf, HUGE_VALF, 1); - check_i1(isinf, HUGE_VALL, 1); - check_i1(isinf, (float)HUGE_VALL, 1); - check_i1(isinf, nan_value, 0); - check_i1(isinf, nan_value, 0); - check_i1(isinf, nan_value, 0); - - check_i1(fpclassify, minus_zero, FP_ZERO); - check_i1(fpclassify, 0.0, FP_ZERO); - check_i1(fpclassify, 1.0, FP_NORMAL); - check_i1(fpclassify, 2.0, FP_NORMAL); - check_i1(fpclassify, 3.0, FP_NORMAL); - check_i1(fpclassify, DBL_MIN/1.01, FP_SUBNORMAL); - check_i1(fpclassify, DBL_MIN, FP_NORMAL); - check_i1(fpclassify, DBL_MAX, FP_NORMAL); - check_i1(fpclassify, FLT_MAX, FP_NORMAL); - check_i1(fpclassify, DBL_MAX, FP_NORMAL); - check_i1(fpclassify, DBL_MAX*1.01, FP_INFINITE); - check_i1(fpclassify, HUGE_VAL, FP_INFINITE); - check_i1(fpclassify, HUGE_VALF, FP_INFINITE); - check_i1(fpclassify, HUGE_VALL, FP_INFINITE); - check_i1(fpclassify, (float)HUGE_VALL, FP_INFINITE); - check_i1(fpclassify, nan_value, FP_NAN); - check_i1(fpclassify, nan_value, FP_NAN); - check_i1(fpclassify, nan_value, FP_NAN); - - check_i1(!!signbit, -1.0, 1); - check_i1(!!signbit, minus_zero, 1); - check_i1(!!signbit, 0.0, 0); - check_i1(!!signbit, HUGE_VAL, 0); - check_i1(!!signbit, HUGE_VALF, 0); - check_i1(!!signbit, HUGE_VALL, 0); - check_i1(!!signbit, -HUGE_VAL, 1); - check_i1(!!signbit, -HUGE_VALF, 1); - check_i1(!!signbit, -HUGE_VALL, 1); - - printf("Errors: %d\n", errors); - return errors; -} diff --git a/test/math/compile_test.c b/test/math/compile_test.c deleted file mode 100644 index aedfde601..000000000 --- a/test/math/compile_test.c +++ /dev/null @@ -1,141 +0,0 @@ -#include - -static int testf(float float_x, long double long_double_x, /*float complex float_complex_x,*/ int int_x, long long_x) -{ -int r = 0; -r += acosf(float_x); -r += acoshf(float_x); -r += asinf(float_x); -r += asinhf(float_x); -r += atan2f(float_x, float_x); -r += atanf(float_x); -r += atanhf(float_x); -/*r += cargf(float_complex_x); - will fight with complex numbers later */ -r += cbrtf(float_x); -r += ceilf(float_x); -r += copysignf(float_x, float_x); -r += cosf(float_x); -r += coshf(float_x); -r += erfcf(float_x); -r += erff(float_x); -r += exp2f(float_x); -r += expf(float_x); -r += expm1f(float_x); -r += fabsf(float_x); -r += fdimf(float_x, float_x); -r += floorf(float_x); -r += fmaf(float_x, float_x, float_x); -r += fmaxf(float_x, float_x); -r += fminf(float_x, float_x); -r += fmodf(float_x, float_x); -r += frexpf(float_x, &int_x); -r += gammaf(float_x); -r += hypotf(float_x, float_x); -r += ilogbf(float_x); -r += ldexpf(float_x, int_x); -r += lgammaf(float_x); -r += llrintf(float_x); -r += llroundf(float_x); -r += log10f(float_x); -r += log1pf(float_x); -r += log2f(float_x); -r += logbf(float_x); -r += logf(float_x); -r += lrintf(float_x); -r += lroundf(float_x); -r += modff(float_x, &float_x); -r += nearbyintf(float_x); -r += nexttowardf(float_x, long_double_x); -r += powf(float_x, float_x); -r += remainderf(float_x, float_x); -r += remquof(float_x, float_x, &int_x); -r += rintf(float_x); -r += roundf(float_x); -#ifdef __UCLIBC_SUSV3_LEGACY__ -r += scalbf(float_x, float_x); -#endif -r += scalblnf(float_x, long_x); -r += scalbnf(float_x, int_x); -r += significandf(float_x); -r += sinf(float_x); -r += sinhf(float_x); -r += sqrtf(float_x); -r += tanf(float_x); -r += tanhf(float_x); -r += tgammaf(float_x); -r += truncf(float_x); -return r; -} - -static int testl(long double long_double_x, int int_x, long long_x) -{ -int r = 0; -r += __finitel(long_double_x); -r += __fpclassifyl(long_double_x); -r += __isinfl(long_double_x); -r += __isnanl(long_double_x); -r += __signbitl(long_double_x); -r += acoshl(long_double_x); -r += acosl(long_double_x); -r += asinhl(long_double_x); -r += asinl(long_double_x); -r += atan2l(long_double_x, long_double_x); -r += atanhl(long_double_x); -r += atanl(long_double_x); -r += cbrtl(long_double_x); -r += ceill(long_double_x); -r += copysignl(long_double_x, long_double_x); -r += coshl(long_double_x); -r += cosl(long_double_x); -r += erfcl(long_double_x); -r += erfl(long_double_x); -r += exp2l(long_double_x); -r += expl(long_double_x); -r += expm1l(long_double_x); -r += fabsl(long_double_x); -r += fdiml(long_double_x, long_double_x); -r += floorl(long_double_x); -r += fmal(long_double_x, long_double_x, long_double_x); -r += fmaxl(long_double_x, long_double_x); -r += fminl(long_double_x, long_double_x); -r += fmodl(long_double_x, long_double_x); -r += frexpl(long_double_x, &int_x); -r += hypotl(long_double_x, long_double_x); -r += ilogbl(long_double_x); -r += ldexpl(long_double_x, int_x); -r += lgammal(long_double_x); -r += llrintl(long_double_x); -r += llroundl(long_double_x); -r += log10l(long_double_x); -r += log1pl(long_double_x); -r += log2l(long_double_x); -r += logbl(long_double_x); -r += logl(long_double_x); -r += lrintl(long_double_x); -r += lroundl(long_double_x); -r += modfl(long_double_x, &long_double_x); -r += nearbyintl(long_double_x); -r += nextafterl(long_double_x, long_double_x); -r += nexttowardl(long_double_x, long_double_x); -r += powl(long_double_x, long_double_x); -r += remainderl(long_double_x, long_double_x); -r += remquol(long_double_x, long_double_x, &int_x); -r += rintl(long_double_x); -r += roundl(long_double_x); -r += scalblnl(long_double_x, long_x); -r += scalbnl(long_double_x, int_x); -r += sinhl(long_double_x); -r += sinl(long_double_x); -r += sqrtl(long_double_x); -r += tanhl(long_double_x); -r += tanl(long_double_x); -r += tgammal(long_double_x); -r += truncl(long_double_x); -return r; -} - -int main(int argc, char **argv) -{ - /* Always 0 but gcc hopefully won't be able to notice */ - return 5 & ((long)&testf) & ((long)&testl) & 2; -} diff --git a/test/math/fenv.h b/test/math/fenv.h deleted file mode 100644 index 0025a62cc..000000000 --- a/test/math/fenv.h +++ /dev/null @@ -1,3 +0,0 @@ -/* until we support fenv ... */ -#define feclearexcept(X) -#define fetestexcept(X) (0) diff --git a/test/math/gamma.c b/test/math/gamma.c deleted file mode 100644 index 69c10afa4..000000000 --- a/test/math/gamma.c +++ /dev/null @@ -1,73 +0,0 @@ -#include -#include -#include -#include -#include - -#define check_d1(func, param, expected) \ -do { \ - int err; hex_union ur; hex_union up; \ - double result = func(param); up.f = param; ur.f = result; \ - errors += (err = (result != (expected))); \ - err \ - ? printf("FAIL: %s(%g/"HEXFMT")=%g/"HEXFMT" (expected %g)\n", \ - #func, (double)(param), (long long)up.hex, result, (long long)ur.hex, (double)(expected)) \ - : printf("PASS: %s(%g)=%g\n", #func, (double)(param), result); \ -} while (0) - -#define HEXFMT "%08llx" -typedef union { - double f; - uint64_t hex; -} hex_union; -double result; - -#define M_2_SQRT_PIl 3.5449077018110320545963349666822903L /* 2 sqrt (M_PIl) */ -#define M_SQRT_PIl 1.7724538509055160272981674833411451L /* sqrt (M_PIl) */ - -double zero = 0.0; -double minus_zero = 0.0; -double nan_value = 0.0; -int errors = 0; - -int main(void) -{ - nan_value /= nan_value; - minus_zero = copysign(zero, -1.0); - - //check_d1(tgamma, HUGE_VAL, NAN); - //check_d1(tgamma, negative_integer, NAN); - check_d1(tgamma, 0.0, HUGE_VAL); /* pole */ - check_d1(tgamma, minus_zero, -HUGE_VAL); /* pole */ - check_d1(tgamma, DBL_MAX/2, HUGE_VAL); /* overflow to inf */ - check_d1(tgamma, DBL_MAX, HUGE_VAL); /* overflow to inf */ - check_d1(tgamma, HUGE_VAL, HUGE_VAL); /* overflow to inf */ - check_d1(tgamma, 7, 2*3*4*5*6); /* normal value */ - check_d1(tgamma, -0.5, -M_2_SQRT_PIl); /* normal value (testing negative points) */ - - check_d1(lgamma, -HUGE_VAL, HUGE_VAL); - //check_d1(lgamma, HUGE_VAL, NAN); - check_d1(lgamma, 0.0, HUGE_VAL); /* pole */ - check_d1(lgamma, minus_zero, HUGE_VAL); /* pole */ - check_d1(lgamma, 1.0, 0.0); - check_d1(lgamma, 2.0, 0.0); - check_d1(lgamma, DBL_MAX/2, HUGE_VAL); /* overflow to inf */ - check_d1(lgamma, DBL_MAX, HUGE_VAL); /* overflow to inf */ - check_d1(lgamma, HUGE_VAL, HUGE_VAL); /* overflow to inf */ - check_d1(lgamma, 7, log(2*3*4*5*6)); /* normal value */ - - /* In glibc, gamma == lgamma. (In BSD, it's == tgamma */ - check_d1(gamma, -HUGE_VAL, HUGE_VAL); - //check_d1(gamma, HUGE_VAL, NAN); - check_d1(gamma, 0.0, HUGE_VAL); /* pole */ - check_d1(gamma, minus_zero, HUGE_VAL); /* pole */ - check_d1(gamma, 1.0, 0.0); - check_d1(gamma, 2.0, 0.0); - check_d1(gamma, DBL_MAX/2, HUGE_VAL); /* overflow to inf */ - check_d1(gamma, DBL_MAX, HUGE_VAL); /* overflow to inf */ - check_d1(gamma, HUGE_VAL, HUGE_VAL); /* overflow to inf */ - check_d1(gamma, 7, log(2*3*4*5*6)); /* normal value */ - - printf("Errors: %d\n", errors); - return errors; -} diff --git a/test/math/gen-libm-test.pl b/test/math/gen-libm-test.pl deleted file mode 100755 index 118f352fa..000000000 --- a/test/math/gen-libm-test.pl +++ /dev/null @@ -1,737 +0,0 @@ -#!/usr/bin/env perl -# Copyright (C) 1999 Free Software Foundation, Inc. -# This file is part of the GNU C Library. -# Contributed by Andreas Jaeger , 1999. - -# The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. - -# The GNU C Library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. - -# You should have received a copy of the GNU Lesser General Public -# License along with the GNU C Library; see the file COPYING.LIB. If -# not, see . - -# This file needs to be tidied up -# Note that functions and tests share the same namespace. - -# Information about tests are stored in: %results -# $results{$test}{"kind"} is either "fct" or "test" and flags whether this -# is a maximal error of a function or a single test. -# $results{$test}{"type"} is the result type, e.g. normal or complex. -# $results{$test}{"has_ulps"} is set if deltas exist. -# $results{$test}{"has_fails"} is set if exptected failures exist. -# In the following description $type and $float are: -# - $type is either "normal", "real" (for the real part of a complex number) -# or "imag" (for the imaginary part # of a complex number). -# - $float is either of float, ifloat, double, idouble, ldouble, ildouble; -# It represents the underlying floating point type (float, double or long -# double) and if inline functions (the leading i stands for inline) -# are used. -# $results{$test}{$type}{"fail"}{$float} is defined and has a 1 if -# the test is expected to fail -# $results{$test}{$type}{"ulp"}{$float} is defined and has a delta as value - - -use Getopt::Std; - -use strict; - -use vars qw ($input $output); -use vars qw (%results); -use vars qw (@tests @functions); -use vars qw ($count); -use vars qw (%beautify @all_floats); -use vars qw ($output_dir $ulps_file); - -# all_floats is sorted and contains all recognised float types -@all_floats = ('double', 'float', 'idouble', - 'ifloat', 'ildouble', 'ldouble'); - -%beautify = - ( "minus_zero" => "-0", - "plus_zero" => "+0", - "minus_infty" => "-inf", - "plus_infty" => "inf", - "nan_value" => "NaN", - "M_El" => "e", - "M_E2l" => "e^2", - "M_E3l" => "e^3", - "M_LOG10El", "log10(e)", - "M_PIl" => "pi", - "M_PI_34l" => "3/4 pi", - "M_PI_2l" => "pi/2", - "M_PI_4l" => "pi/4", - "M_PI_6l" => "pi/6", - "M_PI_34_LOG10El" => "3/4 pi*log10(e)", - "M_PI_LOG10El" => "pi*log10(e)", - "M_PI2_LOG10El" => "pi/2*log10(e)", - "M_PI4_LOG10El" => "pi/4*log10(e)", - "M_LOG_SQRT_PIl" => "log(sqrt(pi))", - "M_LOG_2_SQRT_PIl" => "log(2*sqrt(pi))", - "M_2_SQRT_PIl" => "2 sqrt (pi)", - "M_SQRT_PIl" => "sqrt (pi)", - "INVALID_EXCEPTION" => "invalid exception", - "DIVIDE_BY_ZERO_EXCEPTION" => "division by zero exception", - "INVALID_EXCEPTION_OK" => "invalid exception allowed", - "DIVIDE_BY_ZERO_EXCEPTION_OK" => "division by zero exception allowed", - "EXCEPTIONS_OK" => "exceptions allowed", - "IGNORE_ZERO_INF_SIGN" => "sign of zero/inf not specified", -"INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN" => "invalid exception and sign of zero/inf not specified" - ); - - -# get Options -# Options: -# u: ulps-file -# h: help -# o: output-directory -# n: generate new ulps file -use vars qw($opt_u $opt_h $opt_o $opt_n); -getopts('u:o:nh'); - -$ulps_file = 'libm-test-ulps'; -$output_dir = ''; - -if ($opt_h) { - print "Usage: gen-libm-test.pl [OPTIONS]\n"; - print " -h print this help, then exit\n"; - print " -o DIR directory where generated files will be placed\n"; - print " -n only generate sorted file NewUlps from libm-test-ulps\n"; - print " -u FILE input file with ulps\n"; - exit 0; -} - -$ulps_file = $opt_u if ($opt_u); -$output_dir = $opt_o if ($opt_o); - -$input = "libm-test.inc"; -$output = "${output_dir}libm-test.c"; - -$count = 0; - -&parse_ulps ($ulps_file); -&generate_testfile ($input, $output) unless ($opt_n); -&output_ulps ("${output_dir}libm-test-ulps.h", $ulps_file) unless ($opt_n); -&print_ulps_file ("${output_dir}NewUlps") if ($opt_n); - -# Return a nicer representation -sub beautify { - my ($arg) = @_; - my ($tmp); - - if (exists $beautify{$arg}) { - return $beautify{$arg}; - } - if ($arg =~ /^-/) { - $tmp = $arg; - $tmp =~ s/^-//; - if (exists $beautify{$tmp}) { - return '-' . $beautify{$tmp}; - } - } - if ($arg =~ /[0-9]L$/) { - $arg =~ s/L$//; - } - return $arg; -} - -# Return a nicer representation of a complex number -sub build_complex_beautify { - my ($r, $i) = @_; - my ($str1, $str2); - - $str1 = &beautify ($r); - $str2 = &beautify ($i); - if ($str2 =~ /^-/) { - $str2 =~ s/^-//; - $str1 .= ' - ' . $str2; - } else { - $str1 .= ' + ' . $str2; - } - $str1 .= ' i'; - return $str1; -} - -# Return name of a variable -sub get_variable { - my ($number) = @_; - - return "x" if ($number == 1); - return "y" if ($number == 2); - return "z" if ($number == 3); - # return x1,x2,... - $number =-3; - return "x$number"; -} - -# Add a new test to internal data structures and fill in the -# ulps, failures and exception information for the C line. -sub new_test { - my ($test, $exception) = @_; - my $rest; - - # Add ulp, xfail - if (exists $results{$test}{'has_ulps'}) { - $rest = ", DELTA$count"; - } else { - $rest = ', 0'; - } - if (exists $results{$test}{'has_fails'}) { - $rest .= ", FAIL$count"; - } else { - $rest .= ', 0'; - } - if (defined $exception) { - $rest .= ", $exception"; - } else { - $rest .= ', 0'; - } - $rest .= ");\n"; - # We must increment here to keep @tests and count in sync - push @tests, $test; - ++$count; - return $rest; -} - -# Treat some functions especially. -# Currently only sincos needs extra treatment. -sub special_functions { - my ($file, $args) = @_; - my (@args, $str, $test, $cline); - - @args = split /,\s*/, $args; - - unless ($args[0] =~ /sincos/) { - die ("Don't know how to handle $args[0] extra."); - } - print $file " FUNC (sincos) ($args[1], &sin_res, &cos_res);\n"; - - $str = 'sincos (' . &beautify ($args[1]) . ', &sin_res, &cos_res)'; - # handle sin - $test = $str . ' puts ' . &beautify ($args[2]) . ' in sin_res'; - if ($#args == 4) { - $test .= " plus " . &beautify ($args[4]); - } - - $cline = " check_float (\"$test\", sin_res, $args[2]"; - $cline .= &new_test ($test, $args[4]); - print $file $cline; - - # handle cos - $test = $str . ' puts ' . &beautify ($args[3]) . ' in cos_res'; - $cline = " check_float (\"$test\", cos_res, $args[3]"; - # only tests once for exception - $cline .= &new_test ($test, undef); - print $file $cline; -} - -# Parse the arguments to TEST_x_y -sub parse_args { - my ($file, $descr, $args) = @_; - my (@args, $str, $descr_args, $descr_res, @descr); - my ($current_arg, $cline, $i); - my ($pre, $post, @special); - my ($extra_var, $call, $c_call); - - if ($descr eq 'extra') { - &special_functions ($file, $args); - return; - } - ($descr_args, $descr_res) = split /_/,$descr, 2; - - @args = split /,\s*/, $args; - - $call = "$args[0] ("; - - # Generate first the string that's shown to the user - $current_arg = 1; - $extra_var = 0; - @descr = split //,$descr_args; - for ($i = 0; $i <= $#descr; $i++) { - if ($i >= 1) { - $call .= ', '; - } - # FLOAT, int, long int, long long int - if ($descr[$i] =~ /f|i|l|L/) { - $call .= &beautify ($args[$current_arg]); - ++$current_arg; - next; - } - # &FLOAT, &int - argument is added here - if ($descr[$i] =~ /F|I/) { - ++$extra_var; - $call .= '&' . &get_variable ($extra_var); - next; - } - # complex - if ($descr[$i] eq 'c') { - $call .= &build_complex_beautify ($args[$current_arg], $args[$current_arg+1]); - $current_arg += 2; - next; - } - - die ("$descr[$i] is unknown"); - } - $call .= ')'; - $str = "$call == "; - - # Result - @descr = split //,$descr_res; - foreach (@descr) { - if ($_ =~ /f|i|l|L/) { - $str .= &beautify ($args[$current_arg]); - ++$current_arg; - } elsif ($_ eq 'c') { - $str .= &build_complex_beautify ($args[$current_arg], $args[$current_arg+1]); - $current_arg += 2; - } elsif ($_ eq 'b') { - # boolean - $str .= ($args[$current_arg] == 0) ? "false" : "true"; - ++$current_arg; - } elsif ($_ eq '1') { - ++$current_arg; - } else { - die ("$_ is unknown"); - } - } - # consistency check - if ($current_arg == $#args) { - die ("wrong number of arguments") - unless ($args[$current_arg] =~ /EXCEPTION|IGNORE_ZERO_INF_SIGN/); - } elsif ($current_arg < $#args) { - die ("wrong number of arguments"); - } elsif ($current_arg > ($#args+1)) { - die ("wrong number of arguments"); - } - - - # check for exceptions - if ($current_arg <= $#args) { - $str .= " plus " . &beautify ($args[$current_arg]); - } - - # Put the C program line together - # Reset some variables to start again - $current_arg = 1; - $extra_var = 0; - if (substr($descr_res,0,1) eq 'f') { - $cline = 'check_float' - } elsif (substr($descr_res,0,1) eq 'b') { - $cline = 'check_bool'; - } elsif (substr($descr_res,0,1) eq 'c') { - $cline = 'check_complex'; - } elsif (substr($descr_res,0,1) eq 'i') { - $cline = 'check_int'; - } elsif (substr($descr_res,0,1) eq 'l') { - $cline = 'check_long'; - } elsif (substr($descr_res,0,1) eq 'L') { - $cline = 'check_longlong'; - } - # Special handling for some macros: - $cline .= " (\"$str\", "; - if ($args[0] =~ /fpclassify|isnormal|isfinite|signbit/) { - $c_call = "$args[0] ("; - } else { - $c_call = " FUNC($args[0]) ("; - } - @descr = split //,$descr_args; - for ($i=0; $i <= $#descr; $i++) { - if ($i >= 1) { - $c_call .= ', '; - } - # FLOAT, int, long int, long long int - if ($descr[$i] =~ /f|i|l|L/) { - $c_call .= $args[$current_arg]; - $current_arg++; - next; - } - # &FLOAT, &int - if ($descr[$i] =~ /F|I/) { - ++$extra_var; - $c_call .= '&' . &get_variable ($extra_var); - next; - } - # complex - if ($descr[$i] eq 'c') { - $c_call .= "BUILD_COMPLEX ($args[$current_arg], $args[$current_arg+1])"; - $current_arg += 2; - next; - } - } - $c_call .= ')'; - $cline .= "$c_call, "; - - @descr = split //,$descr_res; - foreach (@descr) { - if ($_ =~ /b|f|i|l|L/ ) { - $cline .= $args[$current_arg]; - $current_arg++; - } elsif ($_ eq 'c') { - $cline .= "BUILD_COMPLEX ($args[$current_arg], $args[$current_arg+1])"; - $current_arg += 2; - } elsif ($_ eq '1') { - push @special, $args[$current_arg]; - ++$current_arg; - } - } - # Add ulp, xfail - $cline .= &new_test ($str, ($current_arg <= $#args) ? $args[$current_arg] : undef); - - # special treatment for some functions - if ($args[0] eq 'frexp') { - if (defined $special[0] && $special[0] ne "IGNORE") { - my ($str) = "$call sets x to $special[0]"; - $post = " check_int (\"$str\", x, $special[0]"; - $post .= &new_test ($str, undef); - } - } elsif ($args[0] eq 'gamma' || $args[0] eq 'lgamma') { - $pre = " signgam = 0;\n"; - if (defined $special[0] && $special[0] ne "IGNORE") { - my ($str) = "$call sets signgam to $special[0]"; - $post = " check_int (\"$str\", signgam, $special[0]"; - $post .= &new_test ($str, undef); - } - } elsif ($args[0] eq 'modf') { - if (defined $special[0] && $special[0] ne "IGNORE") { - my ($str) = "$call sets x to $special[0]"; - $post = " check_float (\"$str\", x, $special[0]"; - $post .= &new_test ($str, undef); - } - } elsif ($args[0] eq 'remquo') { - if (defined $special[0] && $special[0] ne "IGNORE") { - my ($str) = "$call sets x to $special[0]"; - $post = " check_int (\"$str\", x, $special[0]"; - $post .= &new_test ($str, undef); - } - } - - print $file $pre if (defined $pre); - - print $file " $cline"; - - print $file $post if (defined $post); -} - -# Generate libm-test.c -sub generate_testfile { - my ($input, $output) = @_; - my ($lasttext); - my (@args, $i, $str); - - open INPUT, $input or die ("Can't open $input: $!"); - open OUTPUT, ">$output" or die ("Can't open $output: $!"); - - # Replace the special macros - while () { - - # TEST_... - if (/^\s*TEST_/) { - my ($descr, $args); - chop; - ($descr, $args) = ($_ =~ /TEST_(\w+)\s*\((.*)\)/); - &parse_args (\*OUTPUT, $descr, $args); - next; - } - # START (function) - if (/START/) { - print OUTPUT " init_max_error ();\n"; - next; - } - # END (function) - if (/END/) { - my ($fct, $line, $type); - if (/complex/) { - s/,\s*complex\s*//; - $type = 'complex'; - } else { - $type = 'normal'; - } - ($fct) = ($_ =~ /END\s*\((.*)\)/); - if ($type eq 'complex') { - $line = " print_complex_max_error (\"$fct\", "; - } else { - $line = " print_max_error (\"$fct\", "; - } - if (exists $results{$fct}{'has_ulps'}) { - $line .= "DELTA$fct"; - } else { - $line .= '0'; - } - if (exists $results{$fct}{'has_fails'}) { - $line .= ", FAIL$fct"; - } else { - $line .= ', 0'; - } - $line .= ");\n"; - print OUTPUT $line; - push @functions, $fct; - next; - } - print OUTPUT; - } - close INPUT; - close OUTPUT; -} - - - -# Parse ulps file -sub parse_ulps { - my ($file) = @_; - my ($test, $type, $float, $eps, $kind); - - # $type has the following values: - # "normal": No complex variable - # "real": Real part of complex result - # "imag": Imaginary part of complex result - open ULP, $file or die ("Can't open $file: $!"); - while () { - chop; - # ignore comments and empty lines - next if /^#/; - next if /^\s*$/; - if (/^Test/) { - if (/Real part of:/) { - s/Real part of: //; - $type = 'real'; - } elsif (/Imaginary part of:/) { - s/Imaginary part of: //; - $type = 'imag'; - } else { - $type = 'normal'; - } - s/^.+\"(.*)\".*$/$1/; - $test = $_; - $kind = 'test'; - next; - } - if (/^Function: /) { - if (/Real part of/) { - s/Real part of //; - $type = 'real'; - } elsif (/Imaginary part of/) { - s/Imaginary part of //; - $type = 'imag'; - } else { - $type = 'normal'; - } - ($test) = ($_ =~ /^Function:\s*\"([a-zA-Z0-9_]+)\"/); - $kind = 'fct'; - next; - } - if (/^i?(float|double|ldouble):/) { - ($float, $eps) = split /\s*:\s*/,$_,2; - - if ($eps eq 'fail') { - $results{$test}{$type}{'fail'}{$float} = 1; - $results{$test}{'has_fails'} = 1; - } elsif ($eps eq "0") { - # ignore - next; - } else { - $results{$test}{$type}{'ulp'}{$float} = $eps; - $results{$test}{'has_ulps'} = 1; - } - if ($type =~ /^real|imag$/) { - $results{$test}{'type'} = 'complex'; - } elsif ($type eq 'normal') { - $results{$test}{'type'} = 'normal'; - } - $results{$test}{'kind'} = $kind; - next; - } - print "Skipping unknown entry: `$_'\n"; - } - close ULP; -} - - -# Clean up a floating point number -sub clean_up_number { - my ($number) = @_; - - # Remove trailing zeros - $number =~ s/0+$//; - $number =~ s/\.$//; - return $number; -} - -# Output a file which can be read in as ulps file. -sub print_ulps_file { - my ($file) = @_; - my ($test, $type, $float, $eps, $fct, $last_fct); - - $last_fct = ''; - open NEWULP, ">$file" or die ("Can't open $file: $!"); - print NEWULP "# Begin of automatic generation\n"; - # first the function calls - foreach $test (sort keys %results) { - next if ($results{$test}{'kind'} ne 'test'); - foreach $type ('real', 'imag', 'normal') { - if (exists $results{$test}{$type}) { - if (defined $results{$test}) { - ($fct) = ($test =~ /^(\w+)\s/); - if ($fct ne $last_fct) { - $last_fct = $fct; - print NEWULP "\n# $fct\n"; - } - } - if ($type eq 'normal') { - print NEWULP "Test \"$test\":\n"; - } elsif ($type eq 'real') { - print NEWULP "Test \"Real part of: $test\":\n"; - } elsif ($type eq 'imag') { - print NEWULP "Test \"Imaginary part of: $test\":\n"; - } - foreach $float (@all_floats) { - if (exists $results{$test}{$type}{'ulp'}{$float}) { - print NEWULP "$float: ", - &clean_up_number ($results{$test}{$type}{'ulp'}{$float}), - "\n"; - } - if (exists $results{$test}{$type}{'fail'}{$float}) { - print NEWULP "$float: fail\n"; - } - } - } - } - } - print NEWULP "\n# Maximal error of functions:\n"; - - foreach $fct (sort keys %results) { - next if ($results{$fct}{'kind'} ne 'fct'); - foreach $type ('real', 'imag', 'normal') { - if (exists $results{$fct}{$type}) { - if ($type eq 'normal') { - print NEWULP "Function: \"$fct\":\n"; - } elsif ($type eq 'real') { - print NEWULP "Function: Real part of \"$fct\":\n"; - } elsif ($type eq 'imag') { - print NEWULP "Function: Imaginary part of \"$fct\":\n"; - } - foreach $float (@all_floats) { - if (exists $results{$fct}{$type}{'ulp'}{$float}) { - print NEWULP "$float: ", - &clean_up_number ($results{$fct}{$type}{'ulp'}{$float}), - "\n"; - } - if (exists $results{$fct}{$type}{'fail'}{$float}) { - print NEWULP "$float: fail\n"; - } - } - print NEWULP "\n"; - } - } - } - print NEWULP "# end of automatic generation\n"; - close NEWULP; -} - -sub get_ulps { - my ($test, $type, $float) = @_; - - if ($type eq 'complex') { - my ($res); - # Return 0 instead of BUILD_COMPLEX (0,0) - if (!exists $results{$test}{'real'}{'ulp'}{$float} && - !exists $results{$test}{'imag'}{'ulp'}{$float}) { - return "0"; - } - $res = 'BUILD_COMPLEX ('; - $res .= (exists $results{$test}{'real'}{'ulp'}{$float} - ? $results{$test}{'real'}{'ulp'}{$float} : "0"); - $res .= ', '; - $res .= (exists $results{$test}{'imag'}{'ulp'}{$float} - ? $results{$test}{'imag'}{'ulp'}{$float} : "0"); - $res .= ')'; - return $res; - } - return (exists $results{$test}{'normal'}{'ulp'}{$float} - ? $results{$test}{'normal'}{'ulp'}{$float} : "0"); -} - -sub get_failure { - my ($test, $type, $float) = @_; - if ($type eq 'complex') { - # return x,y - my ($res); - # Return 0 instead of BUILD_COMPLEX_INT (0,0) - if (!exists $results{$test}{'real'}{'ulp'}{$float} && - !exists $results{$test}{'imag'}{'ulp'}{$float}) { - return "0"; - } - $res = 'BUILD_COMPLEX_INT ('; - $res .= (exists $results{$test}{'real'}{'fail'}{$float} - ? $results{$test}{'real'}{'fail'}{$float} : "0"); - $res .= ', '; - $res .= (exists $results{$test}{'imag'}{'fail'}{$float} - ? $results{$test}{'imag'}{'fail'}{$float} : "0"); - $res .= ')'; - return $res; - } - return (exists $results{$test}{'normal'}{'fail'}{$float} - ? $results{$test}{'normal'}{'fail'}{$float} : "0"); - -} - -# Output the defines for a single test -sub output_test { - my ($file, $test, $name) = @_; - my ($ldouble, $double, $float, $ildouble, $idouble, $ifloat); - my ($type); - - # Do we have ulps/failures? - if (!exists $results{$test}{'type'}) { - return; - } - $type = $results{$test}{'type'}; - if (exists $results{$test}{'has_ulps'}) { - # XXX use all_floats (change order!) - $ldouble = &get_ulps ($test, $type, "ldouble"); - $double = &get_ulps ($test, $type, "double"); - $float = &get_ulps ($test, $type, "float"); - $ildouble = &get_ulps ($test, $type, "ildouble"); - $idouble = &get_ulps ($test, $type, "idouble"); - $ifloat = &get_ulps ($test, $type, "ifloat"); - print $file "#define DELTA$name CHOOSE($ldouble, $double, $float, $ildouble, $idouble, $ifloat)\t/* $test */\n"; - } - - if (exists $results{$test}{'has_fails'}) { - $ldouble = &get_failure ($test, "ldouble"); - $double = &get_failure ($test, "double"); - $float = &get_failure ($test, "float"); - $ildouble = &get_failure ($test, "ildouble"); - $idouble = &get_failure ($test, "idouble"); - $ifloat = &get_failure ($test, "ifloat"); - print $file "#define FAIL$name CHOOSE($ldouble, $double, $float $ildouble, $idouble, $ifloat)\t/* $test */\n"; - } -} - -# Print include file -sub output_ulps { - my ($file, $ulps_filename) = @_; - my ($i, $fct); - - open ULP, ">$file" or die ("Can't open $file: $!"); - - print ULP "/* This file is automatically generated\n"; - print ULP " from $ulps_filename with gen-libm-test.pl.\n"; - print ULP " Don't change it - change instead the master files. */\n\n"; - - print ULP "\n/* Maximal error of functions. */\n"; - foreach $fct (@functions) { - output_test (\*ULP, $fct, $fct); - } - - print ULP "\n/* Error of single function calls. */\n"; - for ($i = 0; $i < $count; $i++) { - output_test (\*ULP, $tests[$i], $i); - } - close ULP; -} diff --git a/test/math/ilogb.c b/test/math/ilogb.c deleted file mode 100644 index 041e66b0e..000000000 --- a/test/math/ilogb.c +++ /dev/null @@ -1,52 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#define check_d1(func, param, expected) \ -do { \ - int err; hex_union ur; hex_union up; \ - double result = func(param); up.f = param; ur.f = result; \ - errors += (err = (result != (expected))); \ - err \ - ? printf("FAIL: %s(%g/"HEXFMT")=%g/"HEXFMT" (expected %g)\n", \ - #func, (double)(param), (long long)up.hex, result, (long long)ur.hex, (double)(expected)) \ - : printf("PASS: %s(%g)=%g\n", #func, (double)(param), result); \ -} while (0) - -#define check_i1(func, param, expected) \ -do { \ - int err; hex_union up; \ - long long result = func(param); up.f = param; \ - errors += (err = (result != (expected))); \ - err \ - ? printf("FAIL: %s(%g/"HEXFMT")=%lld/%llu (expected %llu)\n", \ - #func, (double)(param), (long long)up.hex, result, result, (long long)(expected)) \ - : printf("PASS: %s(%g)=%lld/%llu\n", #func, (double)(param), result, result); \ -} while (0) - -#define HEXFMT "%08llx" -typedef union { - double f; - uint64_t hex; -} hex_union; - -double nan_value = 0.0; -int errors = 0; - -int main(void) -{ - nan_value /= nan_value; - - check_i1(ilogb, 0.0, FP_ILOGB0); - check_i1(ilogb, HUGE_VAL, INT_MAX); - check_i1(ilogb, nan_value, FP_ILOGBNAN); - check_i1(ilogbf, 0.0, FP_ILOGB0); - check_i1(ilogbf, HUGE_VALF, INT_MAX); - check_i1(ilogbf, nan_value, FP_ILOGBNAN); - - printf("Errors: %d\n", errors); - return errors; -} diff --git a/test/math/libm-test-ulps-arc b/test/math/libm-test-ulps-arc deleted file mode 100644 index 46b2ac559..000000000 --- a/test/math/libm-test-ulps-arc +++ /dev/null @@ -1,145 +0,0 @@ -# Begin of automatic generation - -# cos -Test "cos (M_PI_6l * 2.0) == 0.5": -double: 1 -idouble: 1 -Test "cos (M_PI_6l * 4.0) == -0.5": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -# erf -Test "erf (0.75) == 0.711155633653515131598937834591410777": -double: 1 -idouble: 1 -Test "erf (1.25) == 0.922900128256458230136523481197281140": -double: 1 -idouble: 1 - -# erfc -Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8": -double: 1 -idouble: 1 - -# exp -Test "exp (1) == e": -double: 1 -idouble: 1 - -# expm1 -Test "expm1 (0.75) == 1.11700001661267466854536981983709561": -double: 1 -idouble: 1 - -# hypot -Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 - -# lgamma -Test "lgamma (0.7) == 0.260867246531666514385732417016759578": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# log10 -Test "log10 (0.75) == -0.124938736608299953132449886193870744": -double: 1 -idouble: 1 -Test "log10 (e) == log10(e)": -float: 1 -ifloat: 1 - -# tgamma -Test "tgamma (-0.5) == -2 sqrt (pi)": -double: 1 -idouble: 1 -Test "tgamma (0.7) == 1.29805533264755778568117117915281162": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# Maximal error of functions: -Function: "cos": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "erf": -double: 1 -idouble: 1 - -Function: "erfc": -double: 1 -idouble: 1 - -Function: "exp": -double: 1 -idouble: 1 - -Function: "expm1": -double: 1 -idouble: 1 - -Function: "hypot": -float: 1 -ifloat: 1 - -Function: "lgamma": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: "log": -float: 1 -ifloat: 1 - -Function: "log10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "tan": -double: 1 -idouble: 1 - -Function: "tgamma": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# end of automatic generation diff --git a/test/math/libm-test-ulps-arm b/test/math/libm-test-ulps-arm deleted file mode 100644 index 8528e81b4..000000000 --- a/test/math/libm-test-ulps-arm +++ /dev/null @@ -1,4989 +0,0 @@ -# Begin of automatic generation - -# acos_downward -Test "acos_downward (-0)": -float: 1 -ifloat: 1 -Test "acos_downward (-0.5)": -double: 1 -idouble: 1 -Test "acos_downward (-1)": -float: 1 -ifloat: 1 -Test "acos_downward (0)": -float: 1 -ifloat: 1 -Test "acos_downward (0.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# acos_towardzero -Test "acos_towardzero (-0)": -float: 1 -ifloat: 1 -Test "acos_towardzero (-0.5)": -double: 1 -idouble: 1 -Test "acos_towardzero (-1)": -float: 1 -ifloat: 1 -Test "acos_towardzero (0)": -float: 1 -ifloat: 1 -Test "acos_towardzero (0.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# asin_downward -Test "asin_downward (-0.5)": -double: 1 -idouble: 1 -Test "asin_downward (0.5)": -double: 1 -idouble: 1 -Test "asin_downward (1.0)": -float: 1 -ifloat: 1 - -# asin_towardzero -Test "asin_towardzero (-0.5)": -double: 1 -idouble: 1 -Test "asin_towardzero (-1.0)": -float: 1 -ifloat: 1 -Test "asin_towardzero (0.5)": -double: 1 -idouble: 1 -Test "asin_towardzero (1.0)": -float: 1 -ifloat: 1 - -# asin_upward -Test "asin_upward (-1.0)": -float: 1 -ifloat: 1 - -# atan2 -Test "atan2 (-0.75, -1.0)": -float: 1 -ifloat: 1 -Test "atan2 (-max_value, -min_value)": -float: 1 -ifloat: 1 -Test "atan2 (0.75, -1.0)": -float: 1 -ifloat: 1 -Test "atan2 (1.390625, 0.9296875)": -float: 1 -ifloat: 1 - -# atanh -Test "atanh (0.75)": -float: 1 -ifloat: 1 - -# cacos -Test "Imaginary part of: cacos (+0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (+0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (+0 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (+0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (+0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (+0 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0 - 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0.25 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0.25 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0.25 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0.25 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0.5 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0.5 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (-0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (-0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0x1.fp-100 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-100 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 + 0x0.ffffffp0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 + 1.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 - 0x0.ffffffp0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 - 1.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0x1.fp-30 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-30 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-105 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-105 + 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-105 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-105 - 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 + 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 - 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-23 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0x1p-23 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-23 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-23 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0x1p-23 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-23 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-52 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-52 + 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-52 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-52 - 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-63 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-63 + 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-63 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-63 - 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-1.0 + 0x1p50 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-1.0 - 0x1p50 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-2 - 3 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0.25 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0.25 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (0.5 + +0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 + 0x1p-63 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0.5 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 0x1p-63 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0.5 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0x0.ffffffp0 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (0x0.ffffffp0 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Real part of: cacos (0x0.ffffffp0 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (0x0.ffffffp0 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Real part of: cacos (0x1.0000000000001p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0x1.0000000000001p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0x1.000002p0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (0x1.000002p0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (1.0 + 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (1.0 + 0x1.fp-10 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (1.0 - 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (1.0 - 0x1.fp-10 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 - -# cacosh -Test "Real part of: cacosh (+0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (+0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (+0 + 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (+0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (+0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (+0 - 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (-0 + 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (-0 - 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.25 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0.25 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (-0.25 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0.25 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (-0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.5 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (-0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.5 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (-0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Real part of: cacosh (-0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Real part of: cacosh (-0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-100 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-100 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x0.ffffffp0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 1.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x0.ffffffp0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 1.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-30 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-30 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-105 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-105 + 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-105 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-105 - 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 + 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 - 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-23 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (-0x1p-23 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-23 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-23 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (-0x1p-23 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-23 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-52 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-52 + 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-52 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-52 - 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-63 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-63 + 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-63 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-63 - 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-1.0 + 0x1p50 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-1.0 - 0x1p50 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-2 - 3 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0.25 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0.25 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (0.5 + +0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1p-63 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (0.5 - 0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1p-63 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacosh (0x1.0000000000001p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0x1.0000000000001p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (0x1.000002p0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Real part of: cacosh (0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (0x1.000002p0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Real part of: cacosh (0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (1.0 + 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (1.0 + 0x1.fp-10 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacosh (1.0 - 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (1.0 - 0x1.fp-10 i)": -float: 2 -ifloat: 2 - -# casin -Test "Imaginary part of: casin (+0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (+0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (+0 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (+0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (+0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (+0 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.25 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0.25 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: casin (-0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: casin (-0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (-0x1.fp-10 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (-0x1.fp-10 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (-0x1p-23 + 0.5 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (-0x1p-23 + 0x1.000002p0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casin (-0x1p-23 - 0.5 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (-0x1p-23 - 0x1.000002p0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (-1.0 + 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (-1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (-1.0 - 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (-1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0.25 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0.25 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (0.75 + 1.25 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: casin (0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: casin (0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (0x1.fp-10 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (0x1.fp-10 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (0x1p-23 + 0.5 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (0x1p-23 + 0x1.000002p0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casin (0x1p-23 - 0.5 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (0x1p-23 - 0x1.000002p0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (1.0 + 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (1.0 - 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 - -# casinh -Test "Imaginary part of: casinh (-0.25 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (-0.25 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0.5 + +0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 + 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 + 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (-0.5 + 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 + 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 + 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (-0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (-0.5 - 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (-0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0x0.ffffffp0 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x0.ffffffp0 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (-0x1.000002p0 + 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casinh (-0x1.000002p0 - 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-0x1.fp-10 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0x1.fp-10 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0x1.fp-129 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1.fp-129 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-105 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-105 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-112 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-112 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-23 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-23 + 0x0.ffffffp0 i)": -float: 2 -ifloat: 2 -Test "Real part of: casinh (-0x1p-23 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0x1p-23 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-23 - 0x0.ffffffp0 i)": -float: 2 -ifloat: 2 -Test "Real part of: casinh (-0x1p-23 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0x1p-52 + 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-52 - 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.0 + +0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 + 0.25 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (-1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-100 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-129 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-30 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 - 0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 - 0.25 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (-1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-100 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-129 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-30 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-1.5 + +0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.5 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.5 - 0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.5 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (0.25 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (0.25 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0.5 + +0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 + 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 + 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (0.5 + 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 + 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 + 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (0.5 - 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.75 + 1.25 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (0.75 + 1.25 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (0x0.ffffffp0 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x0.ffffffp0 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (0x1.000002p0 + 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casinh (0x1.000002p0 - 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (0x1.fp-10 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0x1.fp-10 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0x1.fp-129 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1.fp-129 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-105 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-105 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-112 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-112 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-23 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-23 + 0x0.ffffffp0 i)": -float: 2 -ifloat: 2 -Test "Real part of: casinh (0x1p-23 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0x1p-23 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-23 - 0x0.ffffffp0 i)": -float: 2 -ifloat: 2 -Test "Real part of: casinh (0x1p-23 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0x1p-52 + 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-52 - 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.0 + +0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 + 0.25 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-100 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-129 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-30 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 - 0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 - 0.25 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-100 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-129 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-30 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (1.5 + +0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.5 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.5 - 0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.5 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 - -# catan -Test "Imaginary part of: catan (-0x0.fffffffffffff8p0 + 0x1p-27 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x0.ffffffp0 + 0x1p-13 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1.0000000000001p0 - 0x1p-27 i)": -double: 1 -idouble: 1 -Test "Real part of: catan (-0x1.000002p0 + 0x1p-126 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-0x1.000002p0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-0x1.000002p0 - 0x1p-126 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-0x1.000002p0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1.000002p0 - 0x1p-13 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1.fp1023 - 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1.fp127 - 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1p-1020 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1p-1020 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: catan (-0x1p-13 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-0x1p-13 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-0x1p-13 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1p-54 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1p-54 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1p-57 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1p-57 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-1.0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-1.0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-2 - 3 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x0.fffffffffffff8p0 + 0x1p-27 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x0.ffffffp0 + 0x1p-13 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1.0000000000001p0 - 0x1p-27 i)": -double: 1 -idouble: 1 -Test "Real part of: catan (0x1.000002p0 + 0x1p-126 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (0x1.000002p0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (0x1.000002p0 - 0x1p-126 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (0x1.000002p0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1.000002p0 - 0x1p-13 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1.fp1023 - 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1.fp127 - 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1p-1020 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1p-1020 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: catan (0x1p-13 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (0x1p-13 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (0x1p-13 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1p-54 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1p-54 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1p-57 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1p-57 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (1.0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (1.0 - 0x1p-13 i)": -float: 1 -ifloat: 1 - -# catanh -Test "Real part of: catanh (-0x1.000002p0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (-0x1.000002p0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-0x1.000002p0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (-0x1.000002p0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (-0x1.fp1023 - 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (-0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (-0x1.fp127 - 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (-0x1p-126 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (-0x1p-126 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-0x1p-13 + 0x1.000002p0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (-0x1p-13 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (-0x1p-13 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-0x1p-13 - 0x1.000002p0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (-0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (-0x1p-13 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-0x1p-27 + 0x1.0000000000001p0 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (-0x1p-27 - 0x1.0000000000001p0 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (-1.0 + 0x1p-1020 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (-1.0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-1.0 + 0x1p-54 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-1.0 + 0x1p-57 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-1.0 - 0x1p-1020 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (-1.0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-1.0 - 0x1p-54 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-1.0 - 0x1p-57 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-2 - 3 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (0x1.000002p0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (0x1.000002p0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (0x1.fp1023 - 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (0x1.fp127 - 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (0x1p-126 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (0x1p-126 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (0x1p-13 + 0x0.ffffffp0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: catanh (0x1p-13 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (0x1p-13 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (0x1p-13 - 0x0.ffffffp0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: catanh (0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (0x1p-13 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (0x1p-27 + 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (0x1p-27 - 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (1.0 + 0x1p-1020 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (1.0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (1.0 + 0x1p-54 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (1.0 + 0x1p-57 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (1.0 - 0x1p-1020 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (1.0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (1.0 - 0x1p-54 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (1.0 - 0x1p-57 i)": -float: 1 -ifloat: 1 - -# cbrt -Test "cbrt (-27.0)": -double: 1 -idouble: 1 -Test "cbrt (0.75)": -double: 1 -idouble: 1 -Test "cbrt (0.9921875)": -double: 1 -idouble: 1 - -# ccos -Test "Imaginary part of: ccos (-0.75 + 710.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccos (-0.75 + 89.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccos (-0.75 - 710.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccos (-0.75 - 89.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccos (-2 - 3 i)": -float: 1 -ifloat: 1 -Test "Real part of: ccos (0.75 + 1.25 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ccos (0.75 + 1.25 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccos (0.75 + 710.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccos (0.75 + 89.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccos (0.75 - 710.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccos (0.75 - 89.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccos (0x1p-1074 + 1440 i)": -double: 1 -idouble: 1 - -# ccosh -Test "Real part of: ccosh (-2 - 3 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (-2 - 3 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (-710.5 + 0.75 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccosh (-710.5 - 0.75 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccosh (-89.5 + 0.75 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (-89.5 - 0.75 i)": -float: 1 -ifloat: 1 -Test "Real part of: ccosh (0.75 + 1.25 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (0.75 + 1.25 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (1440 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccosh (710.5 + 0.75 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccosh (710.5 - 0.75 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccosh (89.5 + 0.75 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (89.5 - 0.75 i)": -float: 1 -ifloat: 1 - -# cexp -Test "Imaginary part of: cexp (-2.0 - 3.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cexp (-95 + 0.75 i)": -double: 1 -idouble: 1 -Test "Real part of: cexp (0.75 + 1.25 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cexp (1440 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Real part of: cexp (50 + 0x1p127 i)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "Imaginary part of: cexp (50 + 0x1p127 i)": -double: 1 -idouble: 1 -Test "Real part of: cexp (500 + 0x1p1023 i)": -double: 1 -idouble: 1 -Test "Real part of: cexp (709.8125 + 0.75 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cexp (709.8125 + 0.75 i)": -double: 1 -idouble: 1 -Test "Real part of: cexp (88.75 + 0.75 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cexp (88.75 + 0.75 i)": -float: 2 -ifloat: 2 - -# clog -Test "Real part of: clog (-0x1.0000000123456p0 + 0x1.2345678p-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (-0x1.0000000123456p0 + 0x1.2345678p-30 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog (-0x1.234566p-40 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (-0x1.fp+127 + 0x1p-149 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (-0x1.fp+127 - 0x1p-149 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (-0x1p-149 + 0x1.fp+127 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (-0x1p-149 + 0x1.fp+127 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (-0x1p-149 - 0x1.fp+127 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (-0x1p-149 - 0x1.fp+127 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x0.ffffffp0 + 0x0.ffffffp-100 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1.000566p0 + 0x1.234p-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1.fp+127 + 0x1p-149 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1.fp+127 - 0x1p-149 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1p-1074 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x1p-147 + 0x1p-147 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1p-149 + 0x1.fp+127 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1p-149 - 0x1.fp+127 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (0x2818p-15 + 0x798fp-15 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (1.0 + 0x1.234566p-10 i)": -float: 1 -ifloat: 1 - -# clog10 -Test "Imaginary part of: clog10 (-0 + inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-0 - inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-1000 i)": -double: 2 -idouble: 2 -Test "Imaginary part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-30 i)": -double: 2 -idouble: 2 -Test "Imaginary part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-30 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1.fp+1023 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1.fp+1023 - 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1.fp+127 + 0x1p-149 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-0x1.fp+127 - 0x1p-149 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-0x1p-1074 + 0x1.fp+1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1p-1074 - 0x1.fp+1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1p-149 + 0x1.fp+127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1p-149 - 0x1.fp+127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-1.0 + 0x1.234566p-20 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-2 - 3 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-3 + inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-3 - inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + 0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + 1 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + inf i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-inf - 0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf - 1 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0 + inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0 - inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog10 (0x0.fffffffffffff8p0 + 0x0.fffffffffffff8p-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x0.ffffffp0 + 0x0.ffffffp-100 i)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "Real part of: clog10 (0x1.000566p0 + 0x1.234p-10 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1.000566p0 + 0x1.234p-10 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x1.000566p0 + 0x1.234p-100 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1.234566p-30 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1.234566p-50 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1.234566p-60 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1.fffffep+127 + 0x1.fffffep+127 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog10 (0x1.fffffep+127 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1.fffffffffffffp+1023 + 0x1.fffffffffffffp+1023 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x10673dd0f2481p-51 + 0x7ef1d17cefbd2p-51 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x1367a310575591p-54 + 0x3cfcc0a0541f60p-54 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1367a310575591p-54 + 0x3cfcc0a0541f60p-54 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x164c74eea876p-45 + 0x16f393482f77p-45 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1a6p-10 + 0x3a5p-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-1073 + 0x1p-1073 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-1074 + 0x1.fp+1023 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x1p-1074 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-1074 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-1074 - 0x1.fp+1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-147 + 0x1p-147 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-149 + 0x1.fp+127 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-149 + 0x1p-149 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-149 - 0x1.fp+127 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-509 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-510 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-511 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-61 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-62 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-63 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog10 (0x2818p-15 + 0x798fp-15 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x2818p-15 + 0x798fp-15 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog10 (0x2dd46725bp-35 + 0x7783a1284p-35 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x2ede88p-23 + 0x771c3fp-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x2ede88p-23 + 0x771c3fp-23 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x4447d7175p-35 + 0x6c445e00ap-35 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x5b06b680ea2ccp-52 + 0xef452b965da9fp-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x9b57bp-20 + 0xcb7b4p-20 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0xf2p-10 + 0x3e3p-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0xf2p-10 + 0x3e3p-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0xfe961079616p-45 + 0x1bc37e09e6d1p-45 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (1.0 + 0x1.234566p-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (3 + inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (3 - inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (inf + inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (inf - inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# cos -Test "cos (0x1p+120)": -float: 1 -ifloat: 1 -Test "cos (0x1p+127)": -float: 1 -ifloat: 1 -Test "cos (M_PI_6l * 2.0) == 0.5": -double: 1 -idouble: 1 -ifloat: 1 -Test "cos (M_PI_6l * 4.0) == -0.5": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -# cos_downward -Test "cos_downward (1)": -float: 1 -ifloat: 1 -Test "cos_downward (2)": -float: 1 -ifloat: 1 -Test "cos_downward (3)": -float: 1 -ifloat: 1 -Test "cos_downward (4)": -float: 1 -ifloat: 1 -Test "cos_downward (5)": -float: 1 -ifloat: 1 -Test "cos_downward (7)": -float: 1 -ifloat: 1 -Test "cos_downward (8)": -float: 1 -ifloat: 1 - -# cos_tonearest -Test "cos_tonearest (7)": -float: 1 -ifloat: 1 - -# cos_towardzero -Test "cos_towardzero (2)": -float: 1 -ifloat: 1 -Test "cos_towardzero (3)": -float: 1 -ifloat: 1 -Test "cos_towardzero (5)": -float: 1 -ifloat: 1 -Test "cos_towardzero (7)": -float: 1 -ifloat: 1 -Test "cos_towardzero (8)": -float: 1 -ifloat: 1 - -# cos_upward -Test "cos_upward (10)": -float: 1 -ifloat: 1 -Test "cos_upward (6)": -float: 1 -ifloat: 1 -Test "cos_upward (7)": -float: 1 -ifloat: 1 -Test "cos_upward (9)": -float: 2 -ifloat: 2 - -# cosh_downward -Test "cosh_downward (22)": -float: 1 -ifloat: 1 -Test "cosh_downward (23)": -float: 1 -ifloat: 1 -Test "cosh_downward (24)": -float: 1 -ifloat: 1 - -# cosh_towardzero -Test "cosh_towardzero (22)": -float: 1 -ifloat: 1 -Test "cosh_towardzero (23)": -float: 1 -ifloat: 1 -Test "cosh_towardzero (24)": -float: 1 -ifloat: 1 - -# cpow -Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i)": -double: 1 -float: 4 -idouble: 1 -ifloat: 4 -Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i)": -double: 2 -float: 3 -idouble: 2 -ifloat: 3 -Test "Real part of: cpow (2 + 3 i, 4 + 0 i)": -double: 1 -float: 4 -idouble: 1 -ifloat: 4 -Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i)": -float: 2 -ifloat: 2 - -# csin -Test "Real part of: csin (-0.75 + 710.5 i)": -double: 1 -idouble: 1 -Test "Real part of: csin (-0.75 + 89.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: csin (-0.75 - 710.5 i)": -double: 1 -idouble: 1 -Test "Real part of: csin (-0.75 - 89.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: csin (0.75 + 710.5 i)": -double: 1 -idouble: 1 -Test "Real part of: csin (0.75 + 89.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: csin (0.75 - 710.5 i)": -double: 1 -idouble: 1 -Test "Real part of: csin (0.75 - 89.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: csin (0x1p-1074 + 1440 i)": -double: 1 -idouble: 1 - -# csinh -Test "Imaginary part of: csinh (-2 - 3 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csinh (-710.5 + 0.75 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csinh (-710.5 - 0.75 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csinh (-89.5 + 0.75 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: csinh (-89.5 - 0.75 i)": -float: 1 -ifloat: 1 -Test "Real part of: csinh (0.75 + 1.25 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: csinh (0.75 + 1.25 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: csinh (1440 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csinh (710.5 + 0.75 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csinh (710.5 - 0.75 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csinh (89.5 + 0.75 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: csinh (89.5 - 0.75 i)": -float: 1 -ifloat: 1 - -# csqrt -Test "Real part of: csqrt (-0x1.000002p-126 - 0x1.000002p-126 i)": -double: 1 -idouble: 1 -Test "Real part of: csqrt (-2 + 3 i)": -float: 1 -ifloat: 1 -Test "Real part of: csqrt (-2 - 3 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: csqrt (0x1.000002p-126 + 0x1.000002p-126 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csqrt (0x1.fffffep+127 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: csqrt (0x1.fffffffffffffp+1023 + 0x1.fffffffffffffp+1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csqrt (0x1.fffffffffffffp+1023 + 0x1.fffffffffffffp+1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csqrt (0x1.fffffffffffffp+1023 + 0x1p+1023 i)": -double: 1 -idouble: 1 - -# ctan -Test "Real part of: ctan (-2 - 3 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctan (-2 - 3 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctan (0.75 + 1.25 i)": -double: 1 -idouble: 1 -Test "Real part of: ctan (0x1p1023 + 1 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctan (0x1p127 + 1 i)": -double: 1 -idouble: 1 -Test "Real part of: ctan (0x3.243f6cp-1 + 0 i)": -float: 1 -ifloat: 1 - -# ctan_downward -Test "Real part of: ctan_downward (0x1.921fb6p+0 + 0x1p-149 i)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "Imaginary part of: ctan_downward (0x1.921fb6p+0 + 0x1p-149 i)": -float: 1 -ifloat: 1 - -# ctan_tonearest -Test "Real part of: ctan_tonearest (0x1.921fb6p+0 + 0x1p-149 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctan_tonearest (0x1.921fb6p+0 + 0x1p-149 i)": -float: 1 -ifloat: 1 - -# ctan_towardzero -Test "Real part of: ctan_towardzero (0x1.921fb6p+0 + 0x1p-149 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctan_towardzero (0x1.921fb6p+0 + 0x1p-149 i)": -float: 1 -ifloat: 1 - -# ctan_upward -Test "Real part of: ctan_upward (0x1.921fb54442d18p+0 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Real part of: ctan_upward (0x1.921fb6p+0 + 0x1p-149 i)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "Imaginary part of: ctan_upward (0x1.921fb6p+0 + 0x1p-149 i)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# ctanh -Test "Real part of: ctanh (-2 - 3 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctanh (-2 - 3 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctanh (0 + 0x3.243f6cp-1 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctanh (0 + pi/4 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: ctanh (0.75 + 1.25 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctanh (0.75 + 1.25 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: ctanh (1 + 0x1p1023 i)": -double: 1 -idouble: 1 -Test "Real part of: ctanh (1 + 0x1p127 i)": -double: 1 -idouble: 1 - -# ctanh_downward -Test "Real part of: ctanh_downward (0x1p-149 + 0x1.921fb6p+0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctanh_downward (0x1p-149 + 0x1.921fb6p+0 i)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -# ctanh_tonearest -Test "Real part of: ctanh_tonearest (0x1p-149 + 0x1.921fb6p+0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctanh_tonearest (0x1p-149 + 0x1.921fb6p+0 i)": -float: 1 -ifloat: 1 - -# ctanh_towardzero -Test "Real part of: ctanh_towardzero (0x1p-149 + 0x1.921fb6p+0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctanh_towardzero (0x1p-149 + 0x1.921fb6p+0 i)": -float: 1 -ifloat: 1 - -# ctanh_upward -Test "Imaginary part of: ctanh_upward (0x1p-1074 + 0x1.921fb54442d18p+0 i)": -double: 1 -idouble: 1 -Test "Real part of: ctanh_upward (0x1p-149 + 0x1.921fb6p+0 i)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "Imaginary part of: ctanh_upward (0x1p-149 + 0x1.921fb6p+0 i)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -# erf -Test "erf (0.75) == 0.711155633653515131598937834591410777": -double: 1 -idouble: 1 -Test "erf (1.25) == 0.922900128256458230136523481197281140": -double: 1 -idouble: 1 - -# erfc -Test "erfc (0x1.f7303cp+1)": -double: 1 -idouble: 1 -Test "erfc (0x1.ffa002p+2)": -float: 1 -ifloat: 1 -Test "erfc (2.0)": -double: 1 -idouble: 1 -Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8": -double: 1 -idouble: 1 - -# exp -Test "exp (1) == e": -double: 1 -idouble: 1 - -# exp10 -Test "exp10 (-1)": -double: 1 -idouble: 1 -Test "exp10 (-305)": -double: 1 -idouble: 1 -Test "exp10 (-36)": -double: 1 -idouble: 1 -Test "exp10 (3)": -double: 1 -idouble: 1 -Test "exp10 (36)": -double: 1 -idouble: 1 - -# exp_downward -Test "exp_downward (2)": -float: 1 -ifloat: 1 -Test "exp_downward (3)": -float: 1 -ifloat: 1 - -# exp_towardzero -Test "exp_towardzero (2)": -float: 1 -ifloat: 1 -Test "exp_towardzero (3)": -float: 1 -ifloat: 1 - -# exp_upward -Test "exp_upward (1)": -float: 1 -ifloat: 1 - -# expm1 -Test "expm1 (0.75) == 1.11700001661267466854536981983709561": -double: 1 -idouble: 1 -Test "expm1 (1)": -float: 1 -ifloat: 1 -Test "expm1 (500.0)": -double: 1 -idouble: 1 - -# gamma -Test "gamma (0.7)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "gamma (1.2)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# hypot -Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 - -# j0 -Test "j0 (-4.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "j0 (0.75)": -float: 1 -ifloat: 1 -Test "j0 (0x1.d7ce3ap+107)": -float: 2 -ifloat: 2 -Test "j0 (10.0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "j0 (2.0)": -float: 2 -ifloat: 2 -Test "j0 (4.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "j0 (8.0)": -float: 1 -ifloat: 1 - -# j1 -Test "j1 (0x1.3ffp+74)": -double: 1 -idouble: 1 -Test "j1 (0x1.ff00000000002p+840)": -double: 1 -idouble: 1 -Test "j1 (10.0)": -float: 2 -ifloat: 2 -Test "j1 (2.0)": -double: 1 -idouble: 1 -Test "j1 (8.0)": -double: 1 -idouble: 1 - -# jn -Test "jn (0, -4.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (0, 0.75)": -float: 1 -ifloat: 1 -Test "jn (0, 10.0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "jn (0, 2.0)": -float: 2 -ifloat: 2 -Test "jn (0, 4.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (0, 8.0)": -float: 1 -ifloat: 1 -Test "jn (1, 10.0)": -float: 2 -ifloat: 2 -Test "jn (1, 2.0)": -double: 1 -idouble: 1 -Test "jn (1, 8.0)": -double: 1 -idouble: 1 -Test "jn (10, 0.125)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (10, 0.75)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (10, 10.0)": -double: 4 -float: 3 -idouble: 4 -ifloat: 3 -Test "jn (10, 2.0)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "jn (2, 0x1.ffff62p+99)": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -Test "jn (2, 2.4048255576957729)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "jn (3, 0.125)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (3, 0.75)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (3, 10.0)": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "jn (3, 2.0)": -float: 1 -ifloat: 1 -Test "jn (3, 2.4048255576957729)": -double: 3 -idouble: 3 -Test "jn (4, 2.4048255576957729)": -double: 1 -idouble: 1 -Test "jn (5, 2.4048255576957729)": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "jn (6, 2.4048255576957729)": -double: 4 -float: 3 -idouble: 4 -ifloat: 3 -Test "jn (7, 2.4048255576957729)": -double: 3 -float: 5 -idouble: 3 -ifloat: 5 -Test "jn (8, 2.4048255576957729)": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -Test "jn (9, 2.4048255576957729)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# lgamma -Test "lgamma (0.7) == 0.260867246531666514385732417016759578": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# log10 -Test "log10 (0.75) == -0.124938736608299953132449886193870744": -double: 1 -idouble: 1 -Test "log10 (e) == log10(e)": -float: 1 -ifloat: 1 - -# log1p -Test "log1p (-0.25)": -float: 1 -ifloat: 1 - -# pow -Test "pow (0x0.ffffffp0, -0x1p24)": -float: 1 -ifloat: 1 -Test "pow (0x0.ffffffp0, 0x1p24)": -float: 1 -ifloat: 1 -Test "pow (0x1.000002p0, 0x1p24)": -float: 1 -ifloat: 1 - -# pow10 -Test "pow10 (-1)": -double: 1 -idouble: 1 -Test "pow10 (-305)": -double: 1 -idouble: 1 -Test "pow10 (-36)": -double: 1 -idouble: 1 -Test "pow10 (3)": -double: 1 -idouble: 1 -Test "pow10 (36)": -double: 1 -idouble: 1 - -# pow_downward -Test "pow_downward (1.5, 1.03125)": -float: 1 -ifloat: 1 - -# pow_towardzero -Test "pow_towardzero (1.5, 1.03125)": -float: 1 -ifloat: 1 - -# pow_upward -Test "pow_upward (1.0625, 1.125)": -float: 1 -ifloat: 1 - -# sin_downward -Test "sin_downward (10)": -float: 1 -ifloat: 1 -Test "sin_downward (3)": -float: 1 -ifloat: 1 -Test "sin_downward (5)": -float: 1 -ifloat: 1 -Test "sin_downward (6)": -float: 1 -ifloat: 1 - -# sin_tonearest -Test "sin_tonearest (1)": -float: 1 -ifloat: 1 - -# sin_towardzero -Test "sin_towardzero (1)": -float: 1 -ifloat: 1 -Test "sin_towardzero (10)": -float: 1 -ifloat: 1 -Test "sin_towardzero (4)": -float: 1 -ifloat: 1 -Test "sin_towardzero (5)": -float: 1 -ifloat: 1 -Test "sin_towardzero (9)": -float: 1 -ifloat: 1 - -# sin_upward -Test "sin_upward (1)": -float: 1 -ifloat: 1 -Test "sin_upward (2)": -float: 2 -ifloat: 2 -Test "sin_upward (4)": -float: 1 -ifloat: 1 -Test "sin_upward (9)": -float: 1 -ifloat: 1 - -# sincos -Test "sincos (0x1p+120) extra output 2": -float: 1 -ifloat: 1 -Test "sincos (0x1p+127) extra output 2": -float: 1 -ifloat: 1 -Test "sincos (M_PI_6l*2.0) extra output 1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "sincos (M_PI_6l*2.0) extra output 2": -double: 1 -idouble: 1 -Test "sincos (pi/6) extra output 2": -float: 1 -ifloat: 1 - -# sinh_downward -Test "sinh_downward (22)": -float: 1 -ifloat: 1 -Test "sinh_downward (23)": -float: 1 -ifloat: 1 -Test "sinh_downward (24)": -float: 1 -ifloat: 1 - -# sinh_towardzero -Test "sinh_towardzero (22)": -float: 1 -ifloat: 1 -Test "sinh_towardzero (23)": -float: 1 -ifloat: 1 -Test "sinh_towardzero (24)": -float: 1 -ifloat: 1 - -# tan_downward -Test "tan_downward (1)": -float: 1 -ifloat: 1 -Test "tan_downward (10)": -float: 1 -ifloat: 1 -Test "tan_downward (2)": -float: 1 -ifloat: 1 -Test "tan_downward (6)": -float: 1 -ifloat: 1 -Test "tan_downward (8)": -float: 1 -ifloat: 1 -Test "tan_downward (9)": -float: 1 -ifloat: 1 - -# tan_towardzero -Test "tan_towardzero (10)": -float: 1 -ifloat: 1 -Test "tan_towardzero (3)": -float: 1 -ifloat: 1 -Test "tan_towardzero (4)": -float: 1 -ifloat: 1 -Test "tan_towardzero (5)": -float: 1 -ifloat: 1 -Test "tan_towardzero (9)": -float: 1 -ifloat: 1 - -# tan_upward -Test "tan_upward (1)": -float: 1 -ifloat: 1 -Test "tan_upward (10)": -float: 1 -ifloat: 1 -Test "tan_upward (3)": -float: 1 -ifloat: 1 -Test "tan_upward (5)": -float: 1 -ifloat: 1 - -# tgamma -Test "tgamma (-0.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0.5) == -2 sqrt (pi)": -double: 1 -idouble: 1 -Test "tgamma (-0x0.fffffffffffff8p0)": -double: 1 -idouble: 1 -Test "tgamma (-0x0.ffffffp0)": -float: 1 -ifloat: 1 -Test "tgamma (-0x1.000002p0)": -double: 2 -idouble: 2 -Test "tgamma (-0x1.0a32a2p+5)": -float: 2 -ifloat: 2 -Test "tgamma (-0x13.ffffep0)": -float: 2 -ifloat: 2 -Test "tgamma (-0x14.000000000001p0)": -double: 1 -idouble: 1 -Test "tgamma (-0x14.00002p0)": -float: 1 -ifloat: 1 -Test "tgamma (-0x1d.ffffep0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x1e.000000000001p0)": -double: 3 -idouble: 3 -Test "tgamma (-0x1e.00002p0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x2.0000000000002p0)": -double: 1 -idouble: 1 -Test "tgamma (-0x2.000004p0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "tgamma (-0x2.fffffcp0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x27.fffffffffffep0)": -double: 1 -idouble: 1 -Test "tgamma (-0x28.000000000002p0)": -double: 1 -idouble: 1 -Test "tgamma (-0x28.00004p0)": -double: 2 -idouble: 2 -Test "tgamma (-0x29.00004p0)": -double: 1 -idouble: 1 -Test "tgamma (-0x29.ffffcp0)": -double: 1 -idouble: 1 -Test "tgamma (-0x3.000004p0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "tgamma (-0x3.fffffcp0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x3.ffffffffffffep0)": -double: 2 -idouble: 2 -Test "tgamma (-0x31.fffffffffffep0)": -double: 3 -idouble: 3 -Test "tgamma (-0x4.000008p0)": -float: 1 -ifloat: 1 -Test "tgamma (-0x4.fffff8p0)": -double: 1 -idouble: 1 -Test "tgamma (-0x4.ffffffffffffcp0)": -double: 1 -idouble: 1 -Test "tgamma (-0x5.000008p0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x5.ffffffffffffcp0)": -double: 1 -idouble: 1 -Test "tgamma (-0x6.000008p0)": -float: 2 -ifloat: 2 -Test "tgamma (-0x6.fffff8p0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "tgamma (-0x6.ffffffffffffcp0)": -double: 4 -idouble: 4 -Test "tgamma (-0x63.fffffffffffcp0)": -double: 2 -idouble: 2 -Test "tgamma (-0x64.000000000004p0)": -double: 1 -idouble: 1 -Test "tgamma (-0x7.0000000000004p0)": -double: 3 -idouble: 3 -Test "tgamma (-0x7.000008p0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x7.fffff8p0)": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "tgamma (-0x7.ffffffffffffcp0)": -double: 3 -idouble: 3 -Test "tgamma (-0x8.00001p0)": -double: 2 -idouble: 2 -Test "tgamma (-0x9.ffffffffffff8p0)": -double: 1 -idouble: 1 -Test "tgamma (-0x9.fffffp0)": -float: 1 -ifloat: 1 -Test "tgamma (-0x96.000000000008p0)": -double: 1 -idouble: 1 -Test "tgamma (-0xa.00001p0)": -double: 1 -idouble: 1 -Test "tgamma (-2.5)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "tgamma (-3.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-4.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-5.5)": -double: 1 -idouble: 1 -Test "tgamma (-6.5)": -float: 1 -ifloat: 1 -Test "tgamma (-7.5)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "tgamma (-8.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-9.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0.5)": -float: 1 -ifloat: 1 -Test "tgamma (0.7)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0.7) == 1.29805533264755778568117117915281162": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0x1.fffffep0)": -float: 1 -ifloat: 1 -Test "tgamma (0x1.fffffffffffffp0)": -double: 1 -idouble: 1 -Test "tgamma (0x1p-24)": -float: 1 -ifloat: 1 -Test "tgamma (0x1p-53)": -double: 1 -idouble: 1 -Test "tgamma (0x2.30a43cp+4)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "tgamma (0x2.fffffcp0)": -float: 3 -ifloat: 3 -Test "tgamma (0x3.fffffcp0)": -float: 1 -ifloat: 1 -Test "tgamma (0x3.ffffffffffffep0)": -double: 1 -idouble: 1 -Test "tgamma (0x4.0000000000004p0)": -double: 1 -idouble: 1 -Test "tgamma (0x4.ffffffffffffcp0)": -double: 1 -idouble: 1 -Test "tgamma (0x5.0000000000004p0)": -double: 1 -idouble: 1 -Test "tgamma (0x5.000008p0)": -float: 2 -ifloat: 2 -Test "tgamma (0x5.fffff8p0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0x6.0000000000004p0)": -double: 1 -idouble: 1 -Test "tgamma (0x6.000008p0)": -float: 2 -ifloat: 2 -Test "tgamma (0x6.fffff8p0)": -double: 1 -idouble: 1 -Test "tgamma (0x6.ffffffffffffcp0)": -double: 4 -idouble: 4 -Test "tgamma (0x7.0000000000004p0)": -double: 4 -idouble: 4 -Test "tgamma (0x7.000008p0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0x7.fffff8p0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "tgamma (0x7.ffffffffffffcp0)": -double: 2 -idouble: 2 -Test "tgamma (0x8.00001p0)": -double: 2 -idouble: 2 -Test "tgamma (0xa.b9fd72b0fb238p+4)": -double: 1 -idouble: 1 -Test "tgamma (10)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (18.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (19.5)": -double: 2 -idouble: 2 -Test "tgamma (2.5)": -float: 2 -ifloat: 2 -Test "tgamma (23.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (29.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (3)": -float: 1 -ifloat: 1 -Test "tgamma (3.5)": -float: 2 -ifloat: 2 -Test "tgamma (30.5)": -float: 1 -ifloat: 1 -Test "tgamma (33.5)": -float: 1 -ifloat: 1 -Test "tgamma (34.5)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "tgamma (4)": -float: 1 -ifloat: 1 -Test "tgamma (4.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (6)": -float: 1 -ifloat: 1 -Test "tgamma (6.5)": -float: 1 -ifloat: 1 -Test "tgamma (7)": -double: 1 -idouble: 1 -Test "tgamma (7.5)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "tgamma (8)": -double: 1 -idouble: 1 -Test "tgamma (8.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (9)": -double: 1 -idouble: 1 -Test "tgamma (9.5)": -double: 1 -idouble: 1 - -# y0 -Test "y0 (0x1.3ffp+74)": -double: 1 -idouble: 1 -Test "y0 (0x1.ff00000000002p+840)": -double: 1 -idouble: 1 -Test "y0 (0x1p-10)": -double: 1 -idouble: 1 -Test "y0 (0x1p-110)": -double: 1 -idouble: 1 -Test "y0 (0x1p-20)": -float: 1 -ifloat: 1 -Test "y0 (0x1p-30)": -float: 1 -ifloat: 1 -Test "y0 (0x1p-40)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "y0 (0x1p-50)": -float: 1 -ifloat: 1 -Test "y0 (0x1p-70)": -double: 1 -idouble: 1 -Test "y0 (0x1p-80)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "y0 (1.0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "y0 (1.5)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "y0 (10.0)": -float: 1 -ifloat: 1 -Test "y0 (8.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# y1 -Test "y1 (0.125)": -double: 1 -idouble: 1 -Test "y1 (0x1.27e204p+99)": -double: 1 -idouble: 1 -Test "y1 (0x1p-10)": -double: 1 -idouble: 1 -Test "y1 (1.5)": -float: 1 -ifloat: 1 -Test "y1 (10.0)": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "y1 (2.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "y1 (8.0)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# yn -Test "yn (0, 1.0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "yn (0, 1.5)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "yn (0, 10.0)": -float: 1 -ifloat: 1 -Test "yn (0, 8.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (1, 0.125)": -double: 1 -idouble: 1 -Test "yn (1, 1.5)": -float: 1 -ifloat: 1 -Test "yn (1, 10.0)": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "yn (1, 2.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (1, 8.0)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "yn (10, 0.125)": -double: 1 -idouble: 1 -Test "yn (10, 0.75)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (10, 1.0)": -double: 1 -idouble: 1 -Test "yn (10, 10.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (10, 2.0)": -double: 2 -idouble: 2 -Test "yn (3, 0.125)": -double: 1 -idouble: 1 -Test "yn (3, 0.75)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (3, 10.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (3, 2.0)": -double: 1 -idouble: 1 - -# Maximal error of functions: -Function: "acos_downward": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "acos_towardzero": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "asin_downward": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "asin_towardzero": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "asin_upward": -float: 1 -ifloat: 1 - -Function: "atan2": -float: 1 -ifloat: 1 - -Function: "atanh": -float: 1 -ifloat: 1 - -Function: Real part of "cacos": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Imaginary part of "cacos": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Real part of "cacosh": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Imaginary part of "cacosh": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Real part of "casin": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "casin": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Real part of "casinh": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Imaginary part of "casinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "catan": -float: 1 -ifloat: 1 - -Function: Imaginary part of "catan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "catanh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "catanh": -float: 1 -ifloat: 1 - -Function: "cbrt": -double: 1 -idouble: 1 - -Function: Real part of "ccos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "ccos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "cexp": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: Imaginary part of "cexp": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Real part of "clog": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "clog": -float: 1 -ifloat: 1 - -Function: Real part of "clog10": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: Imaginary part of "clog10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "cos": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "cos_downward": -float: 1 -ifloat: 1 - -Function: "cos_tonearest": -float: 1 -ifloat: 1 - -Function: "cos_towardzero": -float: 1 -ifloat: 1 - -Function: "cos_upward": -float: 2 -ifloat: 2 - -Function: "cosh_downward": -float: 1 -ifloat: 1 - -Function: "cosh_towardzero": -float: 1 -ifloat: 1 - -Function: Real part of "cpow": -double: 2 -float: 4 -idouble: 2 -ifloat: 4 - -Function: Imaginary part of "cpow": -float: 2 -ifloat: 2 - -Function: Real part of "csin": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "csinh": -float: 1 -ifloat: 1 - -Function: Imaginary part of "csinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "csqrt": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "csqrt": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "ctan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "ctan": -double: 1 -idouble: 1 - -Function: Real part of "ctan_downward": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: Imaginary part of "ctan_downward": -float: 1 -ifloat: 1 - -Function: Real part of "ctan_tonearest": -float: 1 -ifloat: 1 - -Function: Imaginary part of "ctan_tonearest": -float: 1 -ifloat: 1 - -Function: Real part of "ctan_towardzero": -float: 1 -ifloat: 1 - -Function: Imaginary part of "ctan_towardzero": -float: 1 -ifloat: 1 - -Function: Real part of "ctan_upward": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: Imaginary part of "ctan_upward": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Real part of "ctanh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "ctanh": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Real part of "ctanh_downward": -float: 1 -ifloat: 1 - -Function: Imaginary part of "ctanh_downward": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: Real part of "ctanh_tonearest": -float: 1 -ifloat: 1 - -Function: Imaginary part of "ctanh_tonearest": -float: 1 -ifloat: 1 - -Function: Real part of "ctanh_towardzero": -float: 1 -ifloat: 1 - -Function: Imaginary part of "ctanh_towardzero": -float: 1 -ifloat: 1 - -Function: Real part of "ctanh_upward": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Imaginary part of "ctanh_upward": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "erf": -double: 1 -idouble: 1 - -Function: "erfc": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "exp": -double: 1 -idouble: 1 - -Function: "exp10": -double: 1 -idouble: 1 - -Function: "exp_downward": -float: 1 -ifloat: 1 - -Function: "exp_towardzero": -float: 1 -ifloat: 1 - -Function: "exp_upward": -float: 1 -ifloat: 1 - -Function: "expm1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "gamma": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: "hypot": -float: 1 -ifloat: 1 - -Function: "j0": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: "j1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: "jn": -double: 4 -float: 5 -idouble: 4 -ifloat: 5 - -Function: "lgamma": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: "log": -float: 1 -ifloat: 1 - -Function: "log10": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: "log1p": -float: 1 -ifloat: 1 - -Function: "pow": -float: 1 -ifloat: 1 - -Function: "pow10": -double: 1 -idouble: 1 - -Function: "pow_downward": -float: 1 -ifloat: 1 - -Function: "pow_towardzero": -float: 1 -ifloat: 1 - -Function: "pow_upward": -float: 1 -ifloat: 1 - -Function: "sin_downward": -float: 1 -ifloat: 1 - -Function: "sin_tonearest": -float: 1 -ifloat: 1 - -Function: "sin_towardzero": -float: 1 -ifloat: 1 - -Function: "sin_upward": -float: 2 -ifloat: 2 - -Function: "sincos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "sinh_downward": -float: 1 -ifloat: 1 - -Function: "sinh_towardzero": -float: 1 -ifloat: 1 - -Function: "tan": -double: 1 -idouble: 1 - -Function: "tan_downward": -float: 1 -ifloat: 1 - -Function: "tan_towardzero": -float: 1 -ifloat: 1 - -Function: "tan_upward": -float: 1 -ifloat: 1 - -Function: "tgamma": -double: 4 -float: 3 -idouble: 4 -ifloat: 3 - -Function: "y0": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "y1": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 - -Function: "yn": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 - -# end of automatic generation diff --git a/test/math/libm-test-ulps-cris b/test/math/libm-test-ulps-cris deleted file mode 100644 index 46b2ac559..000000000 --- a/test/math/libm-test-ulps-cris +++ /dev/null @@ -1,145 +0,0 @@ -# Begin of automatic generation - -# cos -Test "cos (M_PI_6l * 2.0) == 0.5": -double: 1 -idouble: 1 -Test "cos (M_PI_6l * 4.0) == -0.5": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -# erf -Test "erf (0.75) == 0.711155633653515131598937834591410777": -double: 1 -idouble: 1 -Test "erf (1.25) == 0.922900128256458230136523481197281140": -double: 1 -idouble: 1 - -# erfc -Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8": -double: 1 -idouble: 1 - -# exp -Test "exp (1) == e": -double: 1 -idouble: 1 - -# expm1 -Test "expm1 (0.75) == 1.11700001661267466854536981983709561": -double: 1 -idouble: 1 - -# hypot -Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 - -# lgamma -Test "lgamma (0.7) == 0.260867246531666514385732417016759578": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# log10 -Test "log10 (0.75) == -0.124938736608299953132449886193870744": -double: 1 -idouble: 1 -Test "log10 (e) == log10(e)": -float: 1 -ifloat: 1 - -# tgamma -Test "tgamma (-0.5) == -2 sqrt (pi)": -double: 1 -idouble: 1 -Test "tgamma (0.7) == 1.29805533264755778568117117915281162": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# Maximal error of functions: -Function: "cos": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "erf": -double: 1 -idouble: 1 - -Function: "erfc": -double: 1 -idouble: 1 - -Function: "exp": -double: 1 -idouble: 1 - -Function: "expm1": -double: 1 -idouble: 1 - -Function: "hypot": -float: 1 -ifloat: 1 - -Function: "lgamma": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: "log": -float: 1 -ifloat: 1 - -Function: "log10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "tan": -double: 1 -idouble: 1 - -Function: "tgamma": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# end of automatic generation diff --git a/test/math/libm-test-ulps-generic b/test/math/libm-test-ulps-generic deleted file mode 100644 index 7cfa1f828..000000000 --- a/test/math/libm-test-ulps-generic +++ /dev/null @@ -1,5 +0,0 @@ -# File with deltas for math/libm-test -# This file is the fallback and contains -# no data -# You can create a new file with e.g. `test-double -u' -# followed by `gen-libm-test.pl -u ULPs -n'. diff --git a/test/math/libm-test-ulps-i386 b/test/math/libm-test-ulps-i386 deleted file mode 100644 index a6fd6ac24..000000000 --- a/test/math/libm-test-ulps-i386 +++ /dev/null @@ -1,1261 +0,0 @@ -# Begin of automatic generation - -# acos -Test "acos (0.75) == 0.722734247813415611178377352641333362": -ildouble: 1 -ldouble: 1 - -# asin -Test "asin (-0.5) == -pi/6": -ildouble: 1 -ldouble: 1 -Test "asin (-1.0) == -pi/2": -ildouble: 1 -ldouble: 1 -Test "asin (0.5) == pi/6": -ildouble: 1 -ldouble: 1 -Test "asin (0.75) == 0.848062078981481008052944338998418080": -ildouble: 1 -ldouble: 1 -Test "asin (1.0) == pi/2": -ildouble: 1 -ldouble: 1 - -# atanh -Test "atanh (0.75) == 0.972955074527656652552676371721589865": -ildouble: 2 -ldouble: 1 - -# cacos -Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -# cacosh -Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": -double: 1 -float: 9 -idouble: 1 -ifloat: 9 -ildouble: 6 -ldouble: 6 -Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": -double: 1 -float: 4 -idouble: 1 -ifloat: 4 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0.75 + 1.25 i) == 1.13239363160530819522266333696834467 + 1.11752014915610270578240049553777969 i": -ildouble: 1 -ldouble: 1 - -# casin -Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -# casinh -Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i": -double: 5 -float: 1 -idouble: 5 -ifloat: 1 -ildouble: 5 -ldouble: 5 -Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i": -double: 3 -float: 6 -idouble: 3 -ifloat: 6 -ildouble: 5 -ldouble: 5 -Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# catan -Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# catanh -Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": -double: 1 -idouble: 1 - -# cbrt -Test "cbrt (-27.0) == -3.0": -ildouble: 1 -ldouble: 1 -Test "cbrt (0.75) == 0.908560296416069829445605878163630251": -ildouble: 1 -ldouble: 1 - -# ccos -Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": -ildouble: 1 -ldouble: 1 - -# ccosh -Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# cexp -Test "Real part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i": -ildouble: 1 -ldouble: 1 -Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i": -ildouble: 1 -ldouble: 1 - -# clog -Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# clog10 -Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-3 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + 0 i) == inf + pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + 1 i) == inf + pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + inf i) == inf + 3/4 pi*log10(e) i": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-inf - 0 i) == inf - pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf - 1 i) == inf - pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (3 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (inf + inf i) == inf + pi/4*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (inf - inf i) == inf - pi/4*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# cos -Test "cos (M_PI_6l * 2.0) == 0.5": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "cos (M_PI_6l * 4.0) == -0.5": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "cos (pi/2) == 0": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# cosh -Test "cosh (0.75) == 1.29468328467684468784170818539018176": -ildouble: 1 - -# cpow -Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": -ildouble: 1 -ldouble: 1 -Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i": -float: 3 -ifloat: 3 -ildouble: 6 -ldouble: 6 -Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i": -float: 1 -ifloat: 1 -Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i) == 0.0846958290317209430433805274189191353 + 0.513285749182902449043287190519090481 i": -double: 1 -float: 3 -idouble: 1 -ifloat: 3 -ildouble: 3 -ldouble: 3 -Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": -double: 1 -float: 4 -idouble: 1 -ifloat: 4 -Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i": -double: 2 -float: 3 -idouble: 2 -ifloat: 3 -ildouble: 1 -ldouble: 1 - -# csin -Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i": -float: 1 -ifloat: 1 - -# csinh -Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i": -double: 1 -idouble: 1 -Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i": -float: 1 -ifloat: 1 - -# ctan -Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": -double: 1 -idouble: 1 -ildouble: 439 -ldouble: 439 -Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Real part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 - -# ctanh -Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": -ildouble: 5 -ldouble: 5 -Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": -float: 1 -ifloat: 1 -ildouble: 25 -ldouble: 25 -Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i": -float: 1 -ifloat: 1 -Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# erf -Test "erf (1.25) == 0.922900128256458230136523481197281140": -double: 1 -idouble: 1 - -# erfc -Test "erfc (0.75) == 0.288844366346484868401062165408589223": -float: 1 -ifloat: 1 -Test "erfc (1.25) == 0.0770998717435417698634765188027188596": -ildouble: 1 -ldouble: 1 -Test "erfc (2.0) == 0.00467773498104726583793074363274707139": -double: 1 -idouble: 1 -Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -# exp -Test "exp (0.75) == 2.11700001661267466854536981983709561": -ildouble: 1 -Test "exp (1000.0) == 0.197007111401704699388887935224332313e435": -ildouble: 754 -Test "exp (50.0) == 5184705528587072464087.45332293348538": -ildouble: 16 - -# exp10 -Test "exp10 (-1) == 0.1": -ildouble: 1 -ldouble: 1 -Test "exp10 (0.75) == 5.62341325190349080394951039776481231": -ildouble: 2 -ldouble: 2 -Test "exp10 (3) == 1000": -ildouble: 8 -ldouble: 8 - -# expm1 -Test "expm1 (1) == M_El - 1.0": -ildouble: 1 - -# gamma -Test "gamma (-0.5) == log(2*sqrt(pi))": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -# hypot -Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 - -# j0 -Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "j0 (10.0) == -0.245935764451348335197760862485328754": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "j0 (2.0) == 0.223890779141235668051827454649948626": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "j0 (8.0) == 0.171650807137553906090869407851972001": -float: 1 -ifloat: 1 - -# j1 -Test "j1 (0.75) == 0.349243602174862192523281016426251335": -double: 1 -idouble: 1 -Test "j1 (10.0) == 0.0434727461688614366697487680258592883": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "j1 (2.0) == 0.576724807756873387202448242269137087": -double: 1 -idouble: 1 -Test "j1 (8.0) == 0.234636346853914624381276651590454612": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# jn -Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "jn (0, 10.0) == -0.245935764451348335197760862485328754": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "jn (0, 2.0) == 0.223890779141235668051827454649948626": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "jn (0, 8.0) == 0.171650807137553906090869407851972001": -float: 1 -ifloat: 1 -Test "jn (1, 0.75) == 0.349243602174862192523281016426251335": -double: 1 -idouble: 1 -Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (1, 2.0) == 0.576724807756873387202448242269137087": -double: 1 -idouble: 1 -Test "jn (1, 8.0) == 0.234636346853914624381276651590454612": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (10, -1.0) == 0.263061512368745320699785368779050294e-9": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "jn (10, 1.0) == 0.263061512368745320699785368779050294e-9": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (10, 10.0) == 0.207486106633358857697278723518753428": -double: 5 -float: 2 -idouble: 5 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6": -double: 2 -idouble: 2 -ildouble: 1 -ldouble: 1 -Test "jn (3, -1.0) == -0.0195633539826684059189053216217515083": -ildouble: 1 -ldouble: 1 -Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (3, 1.0) == 0.0195633539826684059189053216217515083": -ildouble: 1 -ldouble: 1 -Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563": -double: 5 -float: 2 -idouble: 5 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "jn (3, 2.0) == 0.128943249474402051098793332969239835": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -# lgamma -Test "lgamma (-0.5) == log(2*sqrt(pi))": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "lgamma (0.7) == 0.260867246531666514385732417016759578": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -# log -Test "log (e) == 1": -float: 1 -ifloat: 1 - -# log10 -Test "log10 (0.75) == -0.124938736608299953132449886193870744": -ildouble: 1 -ldouble: 1 -Test "log10 (e) == log10(e)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# sincos -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# sin -Test "sin (0.80190127184058835) == 0.71867942238767868": -double: 1 -idouble: 1 - -# sinh -Test "sinh (0.75) == 0.822316731935829980703661634446913849": -double: 1 -ildouble: 1 - -# tan -Test "tan (pi/4) == 1": -double: 1 -idouble: 1 - -# tgamma -Test "tgamma (-0.5) == -2 sqrt (pi)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (0.5) == sqrt (pi)": -float: 1 -ifloat: 1 -Test "tgamma (0.7) == 1.29805533264755778568117117915281162": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (4) == 6": -ildouble: 1 -ldouble: 1 - -# y0 -Test "y0 (0.125) == -1.38968062514384052915582277745018693": -ildouble: 1 -ldouble: 1 -Test "y0 (0.75) == -0.137172769385772397522814379396581855": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "y0 (1.0) == 0.0882569642156769579829267660235151628": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "y0 (1.5) == 0.382448923797758843955068554978089862": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "y0 (10.0) == 0.0556711672835993914244598774101900481": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "y0 (8.0) == 0.223521489387566220527323400498620359": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# y1 -Test "y1 (0.125) == -5.19993611253477499595928744876579921": -ildouble: 1 -ldouble: 1 -Test "y1 (1.0) == -0.781212821300288716547150000047964821": -double: 1 -idouble: 1 -Test "y1 (10.0) == 0.249015424206953883923283474663222803": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -Test "y1 (2.0) == -0.107032431540937546888370772277476637": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "y1 (8.0) == -0.158060461731247494255555266187483550": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -# yn -Test "yn (0, 0.125) == -1.38968062514384052915582277745018693": -ildouble: 1 -ldouble: 1 -Test "yn (0, 0.75) == -0.137172769385772397522814379396581855": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "yn (0, 1.5) == 0.382448923797758843955068554978089862": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "yn (0, 8.0) == 0.223521489387566220527323400498620359": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "yn (1, 0.125) == -5.19993611253477499595928744876579921": -ildouble: 1 -ldouble: 1 -Test "yn (1, 1.0) == -0.781212821300288716547150000047964821": -double: 1 -idouble: 1 -Test "yn (1, 10.0) == 0.249015424206953883923283474663222803": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -Test "yn (1, 2.0) == -0.107032431540937546888370772277476637": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "yn (1, 8.0) == -0.158060461731247494255555266187483550": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "yn (10, 0.125) == -127057845771019398.252538486899753195": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "yn (10, 0.75) == -2133501638.90573424452445412893839236": -float: 1 -ifloat: 1 -ildouble: 4 -ldouble: 4 -Test "yn (10, 1.0) == -121618014.278689189288130426667971145": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "yn (10, 10.0) == -0.359814152183402722051986577343560609": -double: 1 -float: 3 -idouble: 1 -ifloat: 3 -Test "yn (10, 2.0) == -129184.542208039282635913145923304214": -double: 2 -float: 3 -idouble: 2 -ifloat: 3 -Test "yn (3, 0.125) == -2612.69757350066712600220955744091741": -ildouble: 1 -ldouble: 1 -Test "yn (3, 0.75) == -12.9877176234475433186319774484809207": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "yn (3, 10.0) == -0.251362657183837329779204747654240998": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (3, 2.0) == -1.12778377684042778608158395773179238": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# Maximal error of functions: -Function: "acos": -ildouble: 622 -ldouble: 622 - -Function: "asin": -ildouble: 1 -ldouble: 1 - -Function: "atanh": -ildouble: 2 -ldouble: 1 - -Function: Imaginary part of "cacos": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Real part of "cacosh": -double: 1 -float: 9 -idouble: 1 -ifloat: 9 -ildouble: 6 -ldouble: 6 - -Function: Imaginary part of "cacosh": -double: 1 -float: 4 -idouble: 1 -ifloat: 4 -ildouble: 1 -ldouble: 1 - -Function: Real part of "casin": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Imaginary part of "casin": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Real part of "casinh": -double: 5 -float: 1 -idouble: 5 -ifloat: 1 -ildouble: 5 -ldouble: 5 - -Function: Imaginary part of "casinh": -double: 3 -float: 6 -idouble: 3 -ifloat: 6 -ildouble: 5 -ldouble: 5 - -Function: Imaginary part of "catan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "catanh": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "cbrt": -ildouble: 1 -ldouble: 1 - -Function: Real part of "ccos": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "ccos": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "cexp": -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "cexp": -ildouble: 1 -ldouble: 1 - -Function: Real part of "clog": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "clog10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "clog10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "cos": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "cosh": -ildouble: 1 - -Function: Real part of "cpow": -double: 1 -float: 4 -idouble: 1 -ifloat: 4 -ildouble: 763 -ldouble: 763 - -Function: Imaginary part of "cpow": -double: 2 -float: 3 -idouble: 2 -ifloat: 3 -ildouble: 2 -ldouble: 2 - -Function: Real part of "csin": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "csin": -float: 1 -ifloat: 1 - -Function: Real part of "csinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "csinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Real part of "ctan": -double: 1 -idouble: 1 -ildouble: 439 -ldouble: 439 - -Function: Imaginary part of "ctan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 - -Function: Real part of "ctanh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 5 -ldouble: 5 - -Function: Imaginary part of "ctanh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 25 -ldouble: 25 - -Function: "erf": -double: 1 -idouble: 1 - -Function: "erfc": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "exp": -ildouble: 754 - -Function: "exp10": -ildouble: 8 -ldouble: 8 - -Function: "expm1": -ildouble: 1 - -Function: "gamma": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: "hypot": -float: 1 -ifloat: 1 - -Function: "j0": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "j1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "jn": -double: 5 -float: 2 -idouble: 5 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -Function: "lgamma": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "log": -float: 1 -ifloat: 1 - -Function: "log10": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "sincos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "sin": -double: 1 -idouble: 1 - -Function: "sinh": -double: 1 -ildouble: 1 - -Function: "tan": -double: 1 -idouble: 1 - -Function: "tgamma": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "y0": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "y1": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "yn": -double: 2 -float: 3 -idouble: 2 -ifloat: 3 -ildouble: 4 -ldouble: 4 - -# end of automatic generation diff --git a/test/math/libm-test-ulps-ia64 b/test/math/libm-test-ulps-ia64 deleted file mode 100644 index c5a2a0854..000000000 --- a/test/math/libm-test-ulps-ia64 +++ /dev/null @@ -1,1146 +0,0 @@ -# Begin of automatic generation - -# cacos -Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -# cacosh -Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": -double: 1 -float: 7 -idouble: 1 -ifloat: 7 -ildouble: 7 -ldouble: 7 -Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -# casin -Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -# casinh -Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i": -double: 5 -float: 1 -idouble: 5 -ifloat: 1 -ildouble: 5 -ldouble: 5 -Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i": -double: 3 -float: 6 -idouble: 3 -ifloat: 6 -ildouble: 5 -ldouble: 5 -Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# catan -Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# catanh -Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": -double: 4 -idouble: 4 -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": -double: 1 -idouble: 1 - -# ccos -Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": -ildouble: 1 -ldouble: 1 - -# ccosh -Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i": -float: 1 -ifloat: 1 - -# cexp -Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i": -float: 1 -ifloat: 1 -Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i": -float: 1 -ifloat: 1 -Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i": -ildouble: 1 -ldouble: 1 - -# clog -Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# clog10 -Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-3 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + 0 i) == inf + pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + 1 i) == inf + pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + inf i) == inf + 3/4 pi*log10(e) i": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-inf - 0 i) == inf - pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf - 1 i) == inf - pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (3 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (inf + inf i) == inf + pi/4*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (inf - inf i) == inf - pi/4*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# cos -Test "cos (0.80190127184058835) == 0.69534156199418473": -double: 1 -idouble: 1 -Test "cos (M_PI_6l * 2.0) == 0.5": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "cos (M_PI_6l * 4.0) == -0.5": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "cos (pi/2) == 0": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# cpow -Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": -float: 1 -ifloat: 1 -Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i": -double: 1 -float: 4 -idouble: 1 -ifloat: 4 -ildouble: 6 -ldouble: 6 -Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i": -ildouble: 1 -ldouble: 1 -Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i": -ildouble: 1 -ldouble: 1 -Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i) == 0.0846958290317209430433805274189191353 + 0.513285749182902449043287190519090481 i": -double: 2 -float: 3 -idouble: 2 -ifloat: 3 -ildouble: 3 -ldouble: 3 -Test "Real part of: cpow (2 + 0 i, 10 + 0 i) == 1024.0 + 0.0 i": -ildouble: 1 -ldouble: 1 -Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": -double: 1 -float: 5 -idouble: 1 -ifloat: 5 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": -float: 2 -ifloat: 2 -ildouble: 4 -ldouble: 4 -Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i": -double: 2 -float: 3 -idouble: 2 -ifloat: 3 -ildouble: 1 -ldouble: 1 - -# csin -Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i": -float: 1 -ifloat: 1 - -# csinh -Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i": -double: 1 -idouble: 1 -Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i": -float: 1 -ifloat: 1 - -# csqrt -Test "Real part of: csqrt (-2 + 3 i) == 0.89597747612983812471573375529004348 + 1.6741492280355400404480393008490519 i": -float: 1 -ifloat: 1 -Test "Real part of: csqrt (-2 - 3 i) == 0.89597747612983812471573375529004348 - 1.6741492280355400404480393008490519 i": -float: 1 -ifloat: 1 - -# ctan -Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": -double: 1 -idouble: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# ctanh -Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": -float: 1 -ifloat: 1 -ildouble: 24 -ldouble: 24 -Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i": -float: 1 -ifloat: 1 -Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i": -double: 1 -idouble: 1 -Test "Imaginary part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -# erf -Test "erf (1.25) == 0.922900128256458230136523481197281140": -double: 1 -idouble: 1 - -# erfc -Test "erfc (0.75) == 0.288844366346484868401062165408589223": -float: 1 -ifloat: 1 -Test "erfc (1.25) == 0.0770998717435417698634765188027188596": -ildouble: 1 -ldouble: 1 -Test "erfc (2.0) == 0.00467773498104726583793074363274707139": -double: 1 -idouble: 1 -Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -# exp10 -Test "exp10 (-1) == 0.1": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "exp10 (0.75) == 5.62341325190349080394951039776481231": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "exp10 (3) == 1000": -double: 6 -float: 2 -idouble: 6 -ifloat: 2 -ildouble: 3 -ldouble: 3 - -# expm1 -Test "expm1 (1) == M_El - 1.0": -ildouble: 1 -ldouble: 1 - -# gamma -Test "gamma (-0.5) == log(2*sqrt(pi))": -ildouble: 1 -ldouble: 1 - -# hypot -Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 - -# j0 -Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "j0 (10.0) == -0.245935764451348335197760862485328754": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "j0 (2.0) == 0.223890779141235668051827454649948626": -float: 2 -ifloat: 2 -Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "j0 (8.0) == 0.171650807137553906090869407851972001": -float: 1 -ifloat: 1 - -# j1 -Test "j1 (10.0) == 0.0434727461688614366697487680258592883": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "j1 (2.0) == 0.576724807756873387202448242269137087": -double: 1 -idouble: 1 -Test "j1 (8.0) == 0.234636346853914624381276651590454612": -double: 1 -idouble: 1 - -# jn -Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "jn (0, 10.0) == -0.245935764451348335197760862485328754": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (0, 2.0) == 0.223890779141235668051827454649948626": -float: 2 -ifloat: 2 -Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "jn (0, 8.0) == 0.171650807137553906090869407851972001": -float: 1 -ifloat: 1 -Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "jn (1, 2.0) == 0.576724807756873387202448242269137087": -double: 1 -idouble: 1 -Test "jn (1, 8.0) == 0.234636346853914624381276651590454612": -double: 1 -idouble: 1 -Test "jn (10, -1.0) == 0.263061512368745320699785368779050294e-9": -ildouble: 1 -ldouble: 1 -Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "jn (10, 1.0) == 0.263061512368745320699785368779050294e-9": -ildouble: 1 -ldouble: 1 -Test "jn (10, 10.0) == 0.207486106633358857697278723518753428": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6": -float: 4 -ifloat: 4 -ildouble: 1 -ldouble: 1 -Test "jn (3, -1.0) == -0.0195633539826684059189053216217515083": -ildouble: 1 -ldouble: 1 -Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2": -double: 1 -idouble: 1 -Test "jn (3, 1.0) == 0.0195633539826684059189053216217515083": -ildouble: 1 -ldouble: 1 -Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "jn (3, 2.0) == 0.128943249474402051098793332969239835": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -# lgamma -Test "lgamma (-0.5) == log(2*sqrt(pi))": -ildouble: 1 -ldouble: 1 -Test "lgamma (0.7) == 0.260867246531666514385732417016759578": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -# log -Test "log (e) == 1": -float: 1 -ifloat: 1 - -# log10 -Test "log10 (e) == log10(e)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# sincos -Test "sincos (0.80190127184058835, &sin_res, &cos_res) puts 0.69534156199418473 in cos_res": -double: 1 -idouble: 1 -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# tan -Test "tan (pi/4) == 1": -double: 1 -idouble: 1 - -# tgamma -Test "tgamma (-0.5) == -2 sqrt (pi)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (0.5) == sqrt (pi)": -float: 1 -ifloat: 1 -Test "tgamma (0.7) == 1.29805533264755778568117117915281162": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# y0 -Test "y0 (0.125) == -1.38968062514384052915582277745018693": -ildouble: 1 -ldouble: 1 -Test "y0 (1.0) == 0.0882569642156769579829267660235151628": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "y0 (1.5) == 0.382448923797758843955068554978089862": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "y0 (10.0) == 0.0556711672835993914244598774101900481": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "y0 (2.0) == 0.510375672649745119596606592727157873": -double: 1 -idouble: 1 -Test "y0 (8.0) == 0.223521489387566220527323400498620359": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# y1 -Test "y1 (0.125) == -5.19993611253477499595928744876579921": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "y1 (10.0) == 0.249015424206953883923283474663222803": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "y1 (1.5) == -0.412308626973911295952829820633445323"; -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "y1 (2.0) == -0.107032431540937546888370772277476637": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "y1 (8.0) == -0.158060461731247494255555266187483550": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# yn -Test "yn (0, 0.125) == -1.38968062514384052915582277745018693": -ildouble: 1 -ldouble: 1 -Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "yn (0, 1.5) == 0.382448923797758843955068554978089862": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (0, 2.0) == 0.510375672649745119596606592727157873": -double: 1 -idouble: 1 -Test "yn (0, 8.0) == 0.223521489387566220527323400498620359": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "yn (1, 0.125) == -5.19993611253477499595928744876579921": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "yn (1, 10.0) == 0.249015424206953883923283474663222803": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "yn (1, 1.5) == -0.412308626973911295952829820633445323"; -float: 1 -ifloat: 1 -ldouble: 1 -ildouble: 1 -Test "yn (1, 2.0) == -0.107032431540937546888370772277476637": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "yn (1, 8.0) == -0.158060461731247494255555266187483550": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "yn (10, 0.125) == -127057845771019398.252538486899753195": -double: 1 -idouble: 1 -ildouble: 2 -ldouble: 2 -Test "yn (10, 0.75) == -2133501638.90573424452445412893839236": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "yn (10, 1.0) == -121618014.278689189288130426667971145": -float: 2 -ifloat: 2 -Test "yn (10, 10.0) == -0.359814152183402722051986577343560609": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -Test "yn (10, 2.0) == -129184.542208039282635913145923304214": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "yn (3, 0.125) == -2612.69757350066712600220955744091741": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "yn (3, 0.75) == -12.9877176234475433186319774484809207": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "yn (3, 10.0) == -0.251362657183837329779204747654240998": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (3, 2.0) == -1.12778377684042778608158395773179238": -double: 1 -idouble: 1 - -# Maximal error of functions: -Function: Imaginary part of "cacos": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Real part of "cacosh": -double: 1 -float: 7 -idouble: 1 -ifloat: 7 -ildouble: 7 -ldouble: 7 - -Function: Imaginary part of "cacosh": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "casin": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Imaginary part of "casin": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Real part of "casinh": -double: 5 -float: 1 -idouble: 5 -ifloat: 1 -ildouble: 5 -ldouble: 5 - -Function: Imaginary part of "casinh": -double: 3 -float: 6 -idouble: 3 -ifloat: 6 -ildouble: 5 -ldouble: 5 - -Function: Imaginary part of "catan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "catanh": -double: 4 -idouble: 4 -ildouble: 1 -ldouble: 1 - -Function: Real part of "ccos": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "ccos": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "cexp": -float: 1 -ifloat: 1 - -Function: Imaginary part of "cexp": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "clog": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "clog10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "clog10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "cos": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "cpow": -double: 2 -float: 5 -idouble: 2 -ifloat: 5 -ildouble: 6 -ldouble: 6 - -Function: Imaginary part of "cpow": -double: 2 -float: 3 -idouble: 2 -ifloat: 3 -ildouble: 4 -ldouble: 4 - -Function: Real part of "csin": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "csin": -float: 1 -ifloat: 1 - -Function: Real part of "csinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "csinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Real part of "csqrt": -float: 1 -ifloat: 1 - -Function: Real part of "ctan": -double: 1 -idouble: 1 -ildouble: 2 -ldouble: 2 - -Function: Imaginary part of "ctan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "ctanh": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "ctanh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 24 -ldouble: 24 - -Function: "erf": -double: 1 -idouble: 1 - -Function: "erfc": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "exp10": -double: 6 -float: 2 -idouble: 6 -ifloat: 2 -ildouble: 3 -ldouble: 3 - -Function: "expm1": -ildouble: 1 -ldouble: 1 - -Function: "gamma": -ildouble: 1 -ldouble: 1 - -Function: "hypot": -float: 1 -ifloat: 1 - -Function: "j0": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -Function: "j1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "jn": -double: 3 -float: 4 -idouble: 3 -ifloat: 4 -ildouble: 2 -ldouble: 2 - -Function: "lgamma": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "log": -float: 1 -ifloat: 1 - -Function: "log10": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "sincos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "tan": -double: 1 -idouble: 1 - -Function: "tgamma": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "y0": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "y1": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "yn": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -# end of automatic generation diff --git a/test/math/libm-test-ulps-microblaze b/test/math/libm-test-ulps-microblaze deleted file mode 100644 index 46b2ac559..000000000 --- a/test/math/libm-test-ulps-microblaze +++ /dev/null @@ -1,145 +0,0 @@ -# Begin of automatic generation - -# cos -Test "cos (M_PI_6l * 2.0) == 0.5": -double: 1 -idouble: 1 -Test "cos (M_PI_6l * 4.0) == -0.5": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -# erf -Test "erf (0.75) == 0.711155633653515131598937834591410777": -double: 1 -idouble: 1 -Test "erf (1.25) == 0.922900128256458230136523481197281140": -double: 1 -idouble: 1 - -# erfc -Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8": -double: 1 -idouble: 1 - -# exp -Test "exp (1) == e": -double: 1 -idouble: 1 - -# expm1 -Test "expm1 (0.75) == 1.11700001661267466854536981983709561": -double: 1 -idouble: 1 - -# hypot -Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 - -# lgamma -Test "lgamma (0.7) == 0.260867246531666514385732417016759578": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# log10 -Test "log10 (0.75) == -0.124938736608299953132449886193870744": -double: 1 -idouble: 1 -Test "log10 (e) == log10(e)": -float: 1 -ifloat: 1 - -# tgamma -Test "tgamma (-0.5) == -2 sqrt (pi)": -double: 1 -idouble: 1 -Test "tgamma (0.7) == 1.29805533264755778568117117915281162": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# Maximal error of functions: -Function: "cos": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "erf": -double: 1 -idouble: 1 - -Function: "erfc": -double: 1 -idouble: 1 - -Function: "exp": -double: 1 -idouble: 1 - -Function: "expm1": -double: 1 -idouble: 1 - -Function: "hypot": -float: 1 -ifloat: 1 - -Function: "lgamma": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: "log": -float: 1 -ifloat: 1 - -Function: "log10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "tan": -double: 1 -idouble: 1 - -Function: "tgamma": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# end of automatic generation diff --git a/test/math/libm-test-ulps-mips32 b/test/math/libm-test-ulps-mips32 deleted file mode 100644 index 46b2ac559..000000000 --- a/test/math/libm-test-ulps-mips32 +++ /dev/null @@ -1,145 +0,0 @@ -# Begin of automatic generation - -# cos -Test "cos (M_PI_6l * 2.0) == 0.5": -double: 1 -idouble: 1 -Test "cos (M_PI_6l * 4.0) == -0.5": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -# erf -Test "erf (0.75) == 0.711155633653515131598937834591410777": -double: 1 -idouble: 1 -Test "erf (1.25) == 0.922900128256458230136523481197281140": -double: 1 -idouble: 1 - -# erfc -Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8": -double: 1 -idouble: 1 - -# exp -Test "exp (1) == e": -double: 1 -idouble: 1 - -# expm1 -Test "expm1 (0.75) == 1.11700001661267466854536981983709561": -double: 1 -idouble: 1 - -# hypot -Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 - -# lgamma -Test "lgamma (0.7) == 0.260867246531666514385732417016759578": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# log10 -Test "log10 (0.75) == -0.124938736608299953132449886193870744": -double: 1 -idouble: 1 -Test "log10 (e) == log10(e)": -float: 1 -ifloat: 1 - -# tgamma -Test "tgamma (-0.5) == -2 sqrt (pi)": -double: 1 -idouble: 1 -Test "tgamma (0.7) == 1.29805533264755778568117117915281162": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# Maximal error of functions: -Function: "cos": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "erf": -double: 1 -idouble: 1 - -Function: "erfc": -double: 1 -idouble: 1 - -Function: "exp": -double: 1 -idouble: 1 - -Function: "expm1": -double: 1 -idouble: 1 - -Function: "hypot": -float: 1 -ifloat: 1 - -Function: "lgamma": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: "log": -float: 1 -ifloat: 1 - -Function: "log10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "tan": -double: 1 -idouble: 1 - -Function: "tgamma": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# end of automatic generation diff --git a/test/math/libm-test-ulps-mips64 b/test/math/libm-test-ulps-mips64 deleted file mode 100644 index dc065e563..000000000 --- a/test/math/libm-test-ulps-mips64 +++ /dev/null @@ -1,9633 +0,0 @@ -# Begin of automatic generation - -# acos_downward -Test "acos_downward (-0)": -float: 1 -ifloat: 1 -Test "acos_downward (-0.5)": -double: 1 -idouble: 1 -Test "acos_downward (-1)": -float: 1 -ifloat: 1 -Test "acos_downward (0)": -float: 1 -ifloat: 1 -Test "acos_downward (0.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# acos_towardzero -Test "acos_towardzero (-0)": -float: 1 -ifloat: 1 -Test "acos_towardzero (-0.5)": -double: 1 -idouble: 1 -Test "acos_towardzero (-1)": -float: 1 -ifloat: 1 -Test "acos_towardzero (0)": -float: 1 -ifloat: 1 -Test "acos_towardzero (0.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# asin_downward -Test "asin_downward (-0.5)": -double: 1 -idouble: 1 -Test "asin_downward (0.5)": -double: 1 -idouble: 1 -Test "asin_downward (1.0)": -float: 1 -ifloat: 1 - -# asin_towardzero -Test "asin_towardzero (-0.5)": -double: 1 -idouble: 1 -Test "asin_towardzero (-1.0)": -float: 1 -ifloat: 1 -Test "asin_towardzero (0.5)": -double: 1 -idouble: 1 -Test "asin_towardzero (1.0)": -float: 1 -ifloat: 1 - -# asin_upward -Test "asin_upward (-1.0)": -float: 1 -ifloat: 1 - -# atan2 -Test "atan2 (-0.00756827042671106339, -.001792735857538728036)": -ildouble: 1 -ldouble: 1 -Test "atan2 (-0.75, -1.0)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "atan2 (-max_value, -min_value)": -float: 1 -ifloat: 1 -Test "atan2 (0.75, -1.0)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "atan2 (1.390625, 0.9296875)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# atanh -Test "atanh (0.75)": -float: 1 -ifloat: 1 - -# cacos -Test "Imaginary part of: cacos (+0 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (+0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (+0 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (+0 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (+0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (+0 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.0 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.0 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.0 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.0 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.0 + 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.0 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.0 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.0 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.0 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.0 - 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.25 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0.25 + 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.25 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0.25 - 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.5 + +0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.5 + 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.5 + 0x1.fp-129 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0.5 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.5 + 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.5 + 0x1p-112 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.5 + 0x1p-52 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.5 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.5 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0.5 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.5 - 0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.5 - 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.5 - 0x1.fp-129 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0.5 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.5 - 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.5 - 0x1p-112 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.5 - 0x1p-52 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.5 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0.5 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0.5 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x0.ffffffffffffffffp0 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x0.ffffffffffffffffp0 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (-0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (-0x1.0000000000000000000000000001p0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.0000000000000000000000000001p0 + 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.0000000000000000000000000001p0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.0000000000000000000000000001p0 - 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0x1.fp-100 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1.fp-100 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-10000 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-10000 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 + 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 - 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1.fp-129 + 0x0.ffffffp0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1.fp-129 + 1.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1.fp-129 - 0x0.ffffffp0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1.fp-129 - 1.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-16385 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-16385 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-16385 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-16385 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-16385 + 1.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-16385 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-16385 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-16385 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-16385 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-16385 - 1.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1.fp-30 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1.fp-30 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1p-105 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1p-105 + 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-105 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1p-105 - 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 + 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 - 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-113 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1p-113 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1p-113 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1p-113 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1p-23 + 0.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: cacos (-0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0x1p-23 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1p-23 + 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1p-23 - 0.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: cacos (-0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0x1p-23 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1p-23 - 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1p-52 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1p-52 + 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-52 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1p-52 - 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-63 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-63 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1p-63 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1p-63 + 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-63 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-63 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1p-63 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-0x1p-63 - 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p500 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1p500 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1p5000 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-0x1p5000 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-1.0 + 0x1.fp-30 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-1.0 + 0x1p50 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-1.0 + 0x1p500 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-1.0 + 0x1p5000 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-1.0 - 0x1.fp-30 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-1.0 - 0x1p50 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-1.0 - 0x1p500 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (-1.0 - 0x1p5000 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (-2 - 3 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0.0 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0.0 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0.0 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0.0 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0.0 + 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0.0 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0.0 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0.0 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0.0 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0.0 - 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0.25 + 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0.25 - 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0.5 + +0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0.5 + 0x1p-52 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0.5 + 0x1p-63 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0.5 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0.5 - 0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0.5 - 0x1p-52 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0.5 - 0x1p-63 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0.5 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0x0.ffffffffffffffffffffffffffcp0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x0.ffffffffffffffffffffffffffcp0 + 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x0.ffffffffffffffffffffffffffcp0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x0.ffffffffffffffffffffffffffcp0 - 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x0.ffffffffffffffffffffffffffff8p0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x0.ffffffffffffffffffffffffffff8p0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x0.ffffffffffffffffffffffffffff8p0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x0.ffffffffffffffffffffffffffff8p0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x0.ffffffp0 + 0.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x0.ffffffp0 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Real part of: cacos (0x0.ffffffp0 - 0.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x0.ffffffp0 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (0x1.0000000000000000000000000001p0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.0000000000000000000000000001p0 + 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.0000000000000000000000000001p0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.0000000000000000000000000001p0 - 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x1.0000000000000002p0 + 0x1p-63 i)": -ildouble: 2 -ldouble: 2 -Test "Real part of: cacos (0x1.0000000000000002p0 - 0x1p-63 i)": -ildouble: 2 -ldouble: 2 -Test "Real part of: cacos (0x1.0000000000001p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x1.0000000000001p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x1.000002p0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x1.000002p0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0x1.fp-100 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x1.fp-100 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-10000 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-10000 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 + 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 - 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-16385 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-16385 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-16385 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-16385 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-16385 + 1.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-16385 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-16385 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-16385 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-16385 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-16385 - 1.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp16383 + 0x1.fp16383 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (0x1p-112 + 0x0.ffffffffffffffffffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (0x1p-112 - 0x0.ffffffffffffffffffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p-113 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p-113 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: cacos (0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0x1p-23 + 0x1.000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: cacos (0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0x1p-23 - 0x1.000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x1p-52 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x1p-52 + 0x0.fffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x1p-52 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x1p-52 - 0x0.fffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x1p-63 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-63 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p-63 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (0x1p-63 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-63 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p-63 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p500 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p500 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p5000 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (0x1p5000 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (1.0 + 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (1.0 + 0x1.fp-10 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (1.0 + 0x1.fp-100 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (1.0 + 0x1.fp-30 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (1.0 + 0x1p500 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (1.0 + 0x1p5000 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (1.0 - 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (1.0 - 0x1.fp-10 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacos (1.0 - 0x1.fp-100 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (1.0 - 0x1.fp-30 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (1.0 - 0x1p500 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacos (1.0 - 0x1p5000 i)": -ildouble: 1 -ldouble: 1 - -# cacosh -Test "Real part of: cacosh (+0 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (+0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (+0 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (+0 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (+0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (+0 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.0 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.0 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.0 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.0 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.0 + 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.0 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.0 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.0 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.0 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.0 - 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.25 + 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0.25 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (-0.25 - 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0.25 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0.5 + +0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0.5 + 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (-0.5 + 0x1.fp-129 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0.5 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0.5 + 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0.5 + 0x1p-112 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0.5 + 0x1p-52 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.5 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0.5 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.5 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0.5 - 0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0.5 - 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (-0.5 - 0x1.fp-129 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0.5 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0.5 - 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0.5 - 0x1p-112 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0.5 - 0x1p-52 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.5 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0.5 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0.5 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x0.ffffffffffffffffp0 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x0.ffffffffffffffffp0 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Real part of: cacosh (-0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Real part of: cacosh (-0x1.0000000000000000000000000001p0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.0000000000000000000000000001p0 + 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.0000000000000000000000000001p0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.0000000000000000000000000001p0 - 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1.fp-100 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1.fp-100 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-10000 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-10000 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 + 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 - 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x0.ffffffp0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 1.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x0.ffffffp0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 1.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-16385 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-16385 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-16385 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-16385 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-16385 + 1.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-16385 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-16385 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-16385 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-16385 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-16385 - 1.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1.fp-30 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1.fp-30 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-105 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1p-105 + 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-105 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1p-105 - 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 + 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 - 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-113 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1p-113 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1p-113 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1p-113 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1p-23 + 0.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: cacosh (-0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (-0x1p-23 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1p-23 + 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1p-23 - 0.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: cacosh (-0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (-0x1p-23 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1p-23 - 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1p-52 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-52 + 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-52 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-52 - 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-63 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-63 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1p-63 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1p-63 + 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-63 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-63 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1p-63 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-0x1p-63 - 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p500 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1p500 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1p5000 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-0x1p5000 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-1.0 + 0x1.fp-30 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-1.0 + 0x1p50 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-1.0 + 0x1p500 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-1.0 + 0x1p5000 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-1.0 - 0x1.fp-30 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-1.0 - 0x1p50 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-1.0 - 0x1p500 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (-1.0 - 0x1p5000 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (-2 - 3 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0.0 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0.0 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0.0 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0.0 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0.0 + 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0.0 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0.0 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0.0 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0.0 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0.0 - 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0.25 + 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0.25 - 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0.5 + +0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1p-52 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0.5 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1p-63 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (0.5 - 0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1p-52 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0.5 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1p-63 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0x0.ffffffffffffffffffffffffffcp0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x0.ffffffffffffffffffffffffffcp0 + 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x0.ffffffffffffffffffffffffffcp0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x0.ffffffffffffffffffffffffffcp0 - 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x0.ffffffffffffffffffffffffffff8p0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x0.ffffffffffffffffffffffffffff8p0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x0.ffffffffffffffffffffffffffff8p0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x0.ffffffffffffffffffffffffffff8p0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x0.ffffffffffffffffp0 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x0.ffffffffffffffffp0 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.0000000000000000000000000001p0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.0000000000000000000000000001p0 + 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.0000000000000000000000000001p0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.0000000000000000000000000001p0 - 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x1.0000000000000002p0 + 0x1p-63 i)": -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: cacosh (0x1.0000000000000002p0 - 0x1p-63 i)": -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: cacosh (0x1.0000000000001p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x1.0000000000001p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x1.000002p0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x1.000002p0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x1.fp-100 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x1.fp-100 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-10000 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-10000 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 + 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 - 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-16385 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-16385 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-16385 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-16385 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-16385 + 1.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-16385 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-16385 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-16385 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-16385 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-16385 - 1.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp16383 + 0x1.fp16383 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (0x1p-112 + 0x0.ffffffffffffffffffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (0x1p-112 - 0x0.ffffffffffffffffffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p-113 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p-113 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Real part of: cacosh (0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0x1p-23 + 0x1.000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Real part of: cacosh (0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0x1p-23 - 0x1.000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x1p-52 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x1p-52 + 0x0.fffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x1p-52 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (0x1p-52 - 0x0.fffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (0x1p-63 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p-63 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p-63 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (0x1p-63 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p-63 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p-63 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p500 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p500 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p5000 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0x1p5000 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (1.0 + 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (1.0 + 0x1.fp-10 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacosh (1.0 + 0x1.fp-100 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (1.0 + 0x1.fp-30 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (1.0 + 0x1p500 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (1.0 + 0x1p5000 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (1.0 - 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cacosh (1.0 - 0x1.fp-10 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacosh (1.0 - 0x1.fp-100 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (1.0 - 0x1.fp-30 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (1.0 - 0x1p500 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (1.0 - 0x1p5000 i)": -ildouble: 1 -ldouble: 1 - -# casin -Test "Imaginary part of: casin (+0 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (+0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (+0 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (+0 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (+0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (+0 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.0 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.0 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.0 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.0 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.0 + 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.0 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.0 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.0 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.0 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.0 - 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.25 + 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.25 - 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0.5 + 0x1p-112 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0.5 + 0x1p-23 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.5 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0.5 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.5 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0.5 - 0x1p-112 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0.5 - 0x1p-23 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.5 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0.5 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0.5 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x0.fffffffffffff8p0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x0.fffffffffffff8p0 + 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (-0x0.fffffffffffff8p0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x0.fffffffffffff8p0 - 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (-0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x0.ffffffffffffffffffffffffffff8p0 + 0x1p-112 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x0.ffffffffffffffffffffffffffff8p0 - 0x1p-112 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x0.ffffffffffffffffp0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x0.ffffffffffffffffp0 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x0.ffffffffffffffffp0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x0.ffffffffffffffffp0 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x0.ffffffp0 + 0x1p-23 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Real part of: casin (-0x0.ffffffp0 - 0x1p-23 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: casin (-0x1.0000000000000000000000000001p0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.0000000000000000000000000001p0 + 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.0000000000000000000000000001p0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.0000000000000000000000000001p0 - 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x1.fp-10 + 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (-0x1.fp-10 - 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-10000 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-10000 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x1.fp-1025 + 0x0.fffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 + 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x1.fp-1025 - 0x0.fffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 - 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-16385 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-16385 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-16385 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-16385 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-16385 + 1.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-16385 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-16385 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-16385 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-16385 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-16385 - 1.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x1.fp-30 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x1.fp-30 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (-0x1p-113 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1p-113 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x1p-113 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1p-113 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x1p-23 + 0.5 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: casin (-0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: casin (-0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (-0x1p-23 + 0x1.000002p0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x1p-23 - 0.5 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: casin (-0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: casin (-0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (-0x1p-23 - 0x1.000002p0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x1p-52 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x1p-52 + 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x1p-52 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x1p-52 - 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-63 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x1p-63 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1p-63 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-63 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-0x1p-63 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1p-63 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1p500 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1p500 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1p5000 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-0x1p5000 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-1.0 + 0.25 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-1.0 + 0x1.fp-129 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-1.0 + 0x1.fp-30 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-1.0 + 0x1p500 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-1.0 + 0x1p5000 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-1.0 - 0.25 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (-1.0 - 0x1.fp-129 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-1.0 - 0x1.fp-30 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-1.0 - 0x1p500 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (-1.0 - 0x1p5000 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.0 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.0 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.0 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.0 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.0 + 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.0 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.0 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.0 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.0 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.0 - 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.25 + 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.25 - 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0.5 + 0x1p-112 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0.5 + 0x1p-23 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.5 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0.5 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.5 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0.5 - 0x1p-112 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0.5 - 0x1p-23 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.5 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0.5 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0.5 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0.75 + 1.25 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casin (0x0.fffffffffffff8p0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x0.fffffffffffff8p0 + 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (0x0.fffffffffffff8p0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x0.fffffffffffff8p0 - 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x0.ffffffffffffffffffffffffffff8p0 + 0x1p-112 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x0.ffffffffffffffffffffffffffff8p0 - 0x1p-112 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x0.ffffffffffffffffp0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x0.ffffffffffffffffp0 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x0.ffffffffffffffffp0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x0.ffffffffffffffffp0 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x0.ffffffp0 + 0x1p-23 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Real part of: casin (0x0.ffffffp0 - 0x1p-23 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: casin (0x1.0000000000000000000000000001p0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.0000000000000000000000000001p0 + 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.0000000000000000000000000001p0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.0000000000000000000000000001p0 - 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x1.fp-10 + 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (0x1.fp-10 - 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-10000 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-10000 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x1.fp-1025 + 0x0.fffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 + 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x1.fp-1025 - 0x0.fffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 - 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-16385 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-16385 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-16385 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-16385 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-16385 + 1.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-16385 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-16385 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-16385 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-16385 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-16385 - 1.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x1.fp-30 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x1.fp-30 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp16383 + 0x1.fp16383 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (0x1p-113 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1p-113 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x1p-113 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1p-113 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x1p-23 + 0.5 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: casin (0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: casin (0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (0x1p-23 + 0x1.000002p0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x1p-23 - 0.5 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: casin (0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: casin (0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (0x1p-23 - 0x1.000002p0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x1p-52 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x1p-52 + 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x1p-52 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x1p-52 - 0x1.0000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-63 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x1p-63 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1p-63 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-63 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0x1p-63 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1p-63 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1p500 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1p500 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1p5000 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (0x1p5000 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (1.0 + 0.25 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (1.0 + 0x1.fp-129 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (1.0 + 0x1.fp-30 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (1.0 + 0x1p500 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (1.0 + 0x1p5000 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (1.0 - 0.25 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (1.0 - 0x1.fp-129 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (1.0 - 0x1.fp-30 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (1.0 - 0x1p500 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casin (1.0 - 0x1p5000 i)": -ildouble: 1 -ldouble: 1 - -# casinh -Test "Imaginary part of: casinh (-0.0 + 0x0.fffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0.0 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0.0 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0.0 - 0x0.fffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0.0 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0.0 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0.25 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0.25 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0.5 + +0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0.5 + 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0.5 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0.5 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0.5 + 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 + 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 + 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: casinh (-0.5 + 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Real part of: casinh (-0.5 + 0x1p-52 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0.5 + 0x1p-52 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0.5 + 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (-0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0.5 - 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0.5 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0.5 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0.5 - 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: casinh (-0.5 - 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Real part of: casinh (-0.5 - 0x1p-52 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0.5 - 0x1p-52 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0.5 - 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (-0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (-0x0.fffffffffffff8p0 + 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x0.fffffffffffff8p0 - 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x0.ffffffffffffffffffffffffffcp0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x0.ffffffffffffffffffffffffffcp0 + 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x0.ffffffffffffffffffffffffffcp0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x0.ffffffffffffffffffffffffffcp0 - 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x0.ffffffffffffffffp0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x0.ffffffffffffffffp0 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x0.ffffffffffffffffp0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x0.ffffffffffffffffp0 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x0.ffffffp0 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x0.ffffffp0 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1.0000000000000000000000000001p0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.0000000000000000000000000001p0 + 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1.0000000000000000000000000001p0 + 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.0000000000000000000000000001p0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.0000000000000000000000000001p0 - 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1.0000000000000000000000000001p0 - 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.0000000000000002p0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.0000000000000002p0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.0000000000000002p0 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1.0000000000000002p0 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.0000000000000002p0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.0000000000000002p0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.0000000000000002p0 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1.0000000000000002p0 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.0000000000001p0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.0000000000001p0 + 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1.0000000000001p0 + 0x1p-52 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.0000000000001p0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.0000000000001p0 - 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1.0000000000001p0 - 0x1p-52 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1.000002p0 + 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1.000002p0 - 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.fp-10 + 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.fp-10 - 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1.fp-1025 + 0x0.fffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1.fp-1025 - 0x0.fffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.fp-129 + 0.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (-0x1.fp-129 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.fp-129 - 0.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (-0x1.fp-129 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.fp-16385 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.fp-16385 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.fp-30 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1.fp-30 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-105 + 0.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-105 - 0.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-112 + 0.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1p-112 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1p-112 + 0x0.ffffffffffffffffffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-112 - 0.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1p-112 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1p-112 - 0x0.ffffffffffffffffffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-113 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-113 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-23 + 0.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1p-23 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-23 + 0x0.ffffffp0 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: casinh (-0x1p-23 + 0x0.ffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-23 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-23 - 0.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-0x1p-23 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-23 - 0x0.ffffffp0 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: casinh (-0x1p-23 - 0x0.ffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-23 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-52 + 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-52 - 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-63 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-63 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-63 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p-63 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p500 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p500 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p5000 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-0x1p5000 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 + +0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 + 0.25 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 + 0.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-1.0 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (-1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-100 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-1000 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-10000 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-129 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-30 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-1.0 + 0x1.fp-30 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 + 0x1p500 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 + 0x1p5000 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 - 0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 - 0.25 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 - 0.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-1.0 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (-1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-100 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-1000 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-10000 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-129 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-30 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (-1.0 - 0x1.fp-30 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 - 0x1p500 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.0 - 0x1p5000 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.5 + +0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.5 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.5 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.5 - 0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.5 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (-1.5 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0.0 + 0x0.fffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0.0 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0.0 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0.0 - 0x0.fffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0.0 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0.0 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0.25 + 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0.25 - 1.0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0.5 + +0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0.5 + 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0.5 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0.5 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0.5 + 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 + 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 + 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: casinh (0.5 + 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Real part of: casinh (0.5 + 0x1p-52 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0.5 + 0x1p-52 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0.5 + 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0.5 - 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0.5 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0.5 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0.5 - 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 0x1p-23 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: casinh (0.5 - 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Real part of: casinh (0.5 - 0x1p-52 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0.5 - 0x1p-52 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0.5 - 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.75 + 1.25 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0.75 + 1.25 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x0.fffffffffffff8p0 + 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x0.fffffffffffff8p0 - 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x0.ffffffffffffffffffffffffffcp0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x0.ffffffffffffffffffffffffffcp0 + 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x0.ffffffffffffffffffffffffffcp0 + 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x0.ffffffffffffffffffffffffffcp0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x0.ffffffffffffffffffffffffffcp0 - 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x0.ffffffffffffffffffffffffffcp0 - 0x1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x0.ffffffffffffffffp0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x0.ffffffffffffffffp0 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x0.ffffffffffffffffp0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x0.ffffffffffffffffp0 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x0.ffffffp0 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x0.ffffffp0 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1.0000000000000000000000000001p0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.0000000000000000000000000001p0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.0000000000000000000000000001p0 + 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1.0000000000000000000000000001p0 + 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.0000000000000000000000000001p0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.0000000000000000000000000001p0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.0000000000000000000000000001p0 - 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1.0000000000000000000000000001p0 - 0x1p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.0000000000000002p0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.0000000000000002p0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.0000000000000002p0 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1.0000000000000002p0 + 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.0000000000000002p0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.0000000000000002p0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.0000000000000002p0 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1.0000000000000002p0 - 0x1p-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.0000000000001p0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.0000000000001p0 + 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1.0000000000001p0 + 0x1p-52 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.0000000000001p0 - 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.0000000000001p0 - 0x1.fp-1025 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1.0000000000001p0 - 0x1p-52 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1.000002p0 + 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1.000002p0 - 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.fp-10 + 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.fp-10 - 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1.fp-1025 + 0x0.fffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1.fp-1025 - 0x0.fffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.fp-129 + 0.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (0x1.fp-129 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.fp-129 - 0.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (0x1.fp-129 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.fp-16385 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.fp-16385 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.fp-30 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.fp-30 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1.fp16383 + 0x1.fp16383 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-105 + 0.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1p-105 + 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-105 - 0.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1p-105 - 0x0.ffffffffffffffffffffffffffcp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-112 + 0.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1p-112 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1p-112 + 0x0.ffffffffffffffffffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-112 - 0.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1p-112 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1p-112 - 0x0.ffffffffffffffffffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-113 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-113 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-23 + 0.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1p-23 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-23 + 0x0.ffffffp0 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: casinh (0x1p-23 + 0x0.ffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-23 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-23 - 0.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0x1p-23 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-23 - 0x0.ffffffp0 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: casinh (0x1p-23 - 0x0.ffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-23 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-52 + 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-52 - 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-63 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-63 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-63 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p-63 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p500 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p500 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p5000 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0x1p5000 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 + +0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 + 0.25 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 + 0.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (1.0 + 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-100 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-1000 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-10000 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-129 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-30 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (1.0 + 0x1.fp-30 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 + 0x1p500 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 + 0x1p5000 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 - 0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 - 0.25 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 - 0.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (1.0 - 0.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-100 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-1000 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-10000 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-129 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-30 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (1.0 - 0x1.fp-30 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 - 0x1p500 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.0 - 0x1p5000 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.5 + +0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.5 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.5 + 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.5 - 0 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.5 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (1.5 - 0x1.fp-16385 i)": -ildouble: 1 -ldouble: 1 - -# catan -Test "Imaginary part of: catan (-0x0.fffffffffffff8p0 + 0x1p-27 i)": -double: 1 -idouble: 1 -Test "Real part of: catan (-0x0.ffffffffffffffffffffffffffff8p0 + 0x1p-16382 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (-0x0.ffffffffffffffffffffffffffff8p0 + 0x1p-57 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (-0x0.ffffffffffffffffffffffffffff8p0 - 0x1p-16382 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (-0x0.ffffffp0 + 0x1p-126 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (-0x0.ffffffp0 + 0x1p-13 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (-0x0.ffffffp0 - 0x1p-126 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (-0x1.0000000000000000000000000001p0 + 0x1p-16382 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (-0x1.0000000000000000000000000001p0 - 0x1p-16382 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (-0x1.0000000000000000000000000001p0 - 0x1p-57 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (-0x1.0000000000001p0 - 0x1p-27 i)": -double: 1 -idouble: 1 -Test "Real part of: catan (-0x1.000002p0 + 0x1p-126 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (-0x1.000002p0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-0x1.000002p0 - 0x1p-126 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (-0x1.000002p0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1.000002p0 - 0x1p-13 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1.fp1023 - 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1.fp127 - 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1.fp16383 + 0x1.fp16383 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (-0x1.fp16383 - 0x1.fp16383 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (-0x1p-1020 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1p-1020 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: catan (-0x1p-13 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-0x1p-13 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-0x1p-13 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1p-16380 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (-0x1p-16380 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (-0x1p-33 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (-0x1p-33 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (-0x1p-33 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (-0x1p-33 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (-0x1p-54 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1p-54 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1p-57 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1p-57 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-1.0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (-1.0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (-2 - 3 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: catan (0.75 + 1.25 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (0x0.fffffffffffff8p0 + 0x1p-27 i)": -double: 1 -idouble: 1 -Test "Real part of: catan (0x0.ffffffffffffffffffffffffffff8p0 + 0x1p-16382 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (0x0.ffffffffffffffffffffffffffff8p0 + 0x1p-57 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (0x0.ffffffffffffffffffffffffffff8p0 - 0x1p-16382 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (0x0.ffffffp0 + 0x1p-126 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (0x0.ffffffp0 + 0x1p-13 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (0x0.ffffffp0 - 0x1p-126 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (0x1.0000000000000000000000000001p0 + 0x1p-16382 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (0x1.0000000000000000000000000001p0 - 0x1p-16382 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (0x1.0000000000000000000000000001p0 - 0x1p-57 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (0x1.0000000000001p0 - 0x1p-27 i)": -double: 1 -idouble: 1 -Test "Real part of: catan (0x1.000002p0 + 0x1p-126 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (0x1.000002p0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (0x1.000002p0 - 0x1p-126 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (0x1.000002p0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1.000002p0 - 0x1p-13 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1.fp1023 - 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1.fp127 - 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1.fp16383 + 0x1.fp16383 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (0x1.fp16383 - 0x1.fp16383 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (0x1p-1020 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1p-1020 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: catan (0x1p-13 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (0x1p-13 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (0x1p-13 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1p-16380 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (0x1p-16380 - 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (0x1p-33 + 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (0x1p-33 + 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (0x1p-33 - 0x0.ffffffffffffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (0x1p-33 - 0x1.0000000000000002p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (0x1p-54 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1p-54 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1p-57 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1p-57 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (1.0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: catan (1.0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# catanh -Test "Imaginary part of: catanh (-0x0.ffffffffffffffffp0 + 0x1p-33 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (-0x0.ffffffffffffffffp0 - 0x1p-33 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (-0x1.0000000000000002p0 + 0x1p-33 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (-0x1.0000000000000002p0 - 0x1p-33 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (-0x1.000002p0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (-0x1.000002p0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-0x1.000002p0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (-0x1.000002p0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (-0x1.fp1023 - 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (-0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (-0x1.fp127 - 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (-0x1.fp16383 + 0x1.fp16383 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (-0x1.fp16383 - 0x1.fp16383 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (-0x1p-126 + 0x0.ffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (-0x1p-126 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (-0x1p-126 - 0x0.ffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (-0x1p-126 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (-0x1p-13 + 0x1.000002p0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (-0x1p-13 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (-0x1p-13 + 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (-0x1p-13 - 0x1.000002p0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (-0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (-0x1p-13 - 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (-0x1p-16382 + 0x0.ffffffffffffffffffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (-0x1p-16382 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (-0x1p-16382 - 0x0.ffffffffffffffffffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (-0x1p-16382 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (-0x1p-27 + 0x1.0000000000001p0 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (-0x1p-27 - 0x1.0000000000001p0 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (-0x1p-57 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (-0x1p-57 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (-1.0 + 0x1p-1020 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (-1.0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-1.0 + 0x1p-16380 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (-1.0 + 0x1p-54 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-1.0 + 0x1p-57 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-1.0 - 0x1p-1020 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (-1.0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-1.0 - 0x1p-16380 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (-1.0 - 0x1p-54 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-1.0 - 0x1p-57 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-2 - 3 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (0.75 + 1.25 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (0.75 + 1.25 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (0x0.ffffffffffffffffp0 + 0x1p-33 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (0x0.ffffffffffffffffp0 - 0x1p-33 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (0x1.0000000000000002p0 + 0x1p-33 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (0x1.0000000000000002p0 - 0x1p-33 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (0x1.000002p0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (0x1.000002p0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (0x1.fp1023 - 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (0x1.fp127 - 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (0x1.fp16383 + 0x1.fp16383 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (0x1.fp16383 - 0x1.fp16383 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (0x1p-126 + 0x0.ffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (0x1p-126 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (0x1p-126 - 0x0.ffffffp0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (0x1p-126 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (0x1p-13 + 0x0.ffffffp0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (0x1p-13 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (0x1p-13 + 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (0x1p-13 - 0x0.ffffffp0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (0x1p-13 - 1.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (0x1p-16382 + 0x0.ffffffffffffffffffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (0x1p-16382 + 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (0x1p-16382 - 0x0.ffffffffffffffffffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (0x1p-16382 - 0x1.0000000000000000000000000001p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (0x1p-27 + 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (0x1p-27 - 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (0x1p-57 + 0x0.ffffffffffffffffffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (0x1p-57 - 0x0.ffffffffffffffffffffffffffff8p0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (1.0 + 0x1p-1020 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (1.0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (1.0 + 0x1p-16380 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (1.0 + 0x1p-54 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (1.0 + 0x1p-57 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (1.0 - 0x1p-1020 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (1.0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (1.0 - 0x1p-16380 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: catanh (1.0 - 0x1p-54 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (1.0 - 0x1p-57 i)": -float: 1 -ifloat: 1 - -# cbrt -Test "cbrt (-0.001)": -ildouble: 1 -ldouble: 1 -Test "cbrt (-27.0)": -double: 1 -idouble: 1 -Test "cbrt (0.75)": -double: 1 -idouble: 1 -Test "cbrt (0.9921875)": -double: 1 -idouble: 1 - -# ccos -Test "Imaginary part of: ccos (-0.75 + 11357.25 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccos (-0.75 + 710.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccos (-0.75 + 89.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccos (-0.75 + 89.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccos (-0.75 - 11357.25 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccos (-0.75 - 710.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccos (-0.75 - 89.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccos (-0.75 - 89.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccos (-2 - 3 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccos (-2 - 3 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccos (0.75 + 1.25 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ccos (0.75 + 1.25 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccos (0.75 + 11357.25 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccos (0.75 + 710.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccos (0.75 + 89.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccos (0.75 + 89.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccos (0.75 - 11357.25 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccos (0.75 - 710.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccos (0.75 - 89.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccos (0.75 - 89.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccos (0x1p-1074 + 1440 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccos (0x1p-16434 + 22730 i)": -ildouble: 1 -ldouble: 1 - -# ccosh -Test "Imaginary part of: ccosh (-11357.25 + 0.75 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccosh (-11357.25 - 0.75 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: ccosh (-2 - 3 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccosh (-2 - 3 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccosh (-710.5 + 0.75 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccosh (-710.5 - 0.75 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccosh (-89.5 + 0.75 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccosh (-89.5 + 0.75 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccosh (-89.5 - 0.75 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccosh (-89.5 - 0.75 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccosh (0.75 + 1.25 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (0.75 + 1.25 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (11357.25 + 0.75 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccosh (11357.25 - 0.75 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccosh (1440 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccosh (22730 + 0x1p-16434 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccosh (710.5 + 0.75 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccosh (710.5 - 0.75 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccosh (89.5 + 0.75 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccosh (89.5 + 0.75 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccosh (89.5 - 0.75 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccosh (89.5 - 0.75 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# cexp -Test "Imaginary part of: cexp (-10000 + 0x1p16383 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cexp (-2.0 - 3.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cexp (-2.0 - 3.0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cexp (-720 + 0.75 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cexp (-95 + 0.75 i)": -double: 1 -idouble: 1 -Test "Real part of: cexp (0.75 + 1.25 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cexp (0.75 + 1.25 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cexp (1440 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cexp (22730 + 0x1p-16434 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cexp (50 + 0x1p127 i)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cexp (50 + 0x1p127 i)": -double: 1 -idouble: 1 -Test "Real part of: cexp (500 + 0x1p1023 i)": -double: 1 -idouble: 1 -Test "Real part of: cexp (709.8125 + 0.75 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cexp (709.8125 + 0.75 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cexp (88.75 + 0.75 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cexp (88.75 + 0.75 i)": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -# clog -Test "Real part of: clog (-0x1.0000000123456p0 + 0x1.2345678p-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (-0x1.0000000123456p0 + 0x1.2345678p-30 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog (-0x1.234566p-40 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (-0x1.fp+127 + 0x1p-149 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (-0x1.fp+127 - 0x1p-149 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (-0x1.fp+16383 + 0x1p-16445 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (-0x1.fp+16383 + 0x1p-16494 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (-0x1.fp+16383 - 0x1p-16445 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (-0x1.fp+16383 - 0x1p-16494 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (-0x1p-149 + 0x1.fp+127 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (-0x1p-149 + 0x1.fp+127 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (-0x1p-149 - 0x1.fp+127 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (-0x1p-149 - 0x1.fp+127 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (-0x1p-16445 + 0x1.fp+16383 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (-0x1p-16445 - 0x1.fp+16383 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (-0x1p-16494 + 0x1.fp+16383 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (-0x1p-16494 - 0x1.fp+16383 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (0x0.ffffffp0 + 0x0.ffffffp-100 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1.000566p0 + 0x1.234p-10 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (0x1.000566p0 + 0x1.234p-10 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (0x1.fp+127 + 0x1p-149 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1.fp+127 - 0x1p-149 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1.fp+16383 + 0x1.fp+16383 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (0x1.fp+16383 + 0x1p-16445 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (0x1.fp+16383 + 0x1p-16494 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (0x1.fp+16383 - 0x1p-16445 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (0x1.fp+16383 - 0x1p-16494 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog (0x10673dd0f2481p-51 + 0x7ef1d17cefbd2p-51 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (0x1p-1074 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x1p-147 + 0x1p-147 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1p-149 + 0x1.fp+127 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1p-149 - 0x1.fp+127 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1p-16445 + 0x1.fp+16383 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (0x1p-16445 - 0x1.fp+16383 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (0x1p-16494 + 0x1.fp+16383 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (0x1p-16494 - 0x1.fp+16383 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog (0x2818p-15 + 0x798fp-15 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog (0x298c62cb546588a7p-63 + 0x7911b1dfcc4ecdaep-63 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog (0x2ede88p-23 + 0x771c3fp-23 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog (0x3f96469050f650869c2p-75 + 0x6f16b2c9c8b05988335p-75 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog (0x55cb6d0c83af5p-55 + 0x7fe33c0c7c4e90p-55 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog (0x5b06b680ea2ccp-52 + 0xef452b965da9fp-52 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog (0x659feap-24 + 0xeaf6f9p-24 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog (0x6771f22c64ed551b857c128b4cp-105 + 0x1f570e7a13cc3cf2f44fd793ea1p-105 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog (0x6b10b4f3520217b6p-64 + 0xe8893cbb449253a1p-64 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (0x8ecbf810c4ae6p-52 + 0xd479468b09a37p-52 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog (0x9b57bp-20 + 0xcb7b4p-20 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog (0xdb85c467ee2aadd5f425fe0f4b8dp-114 + 0x3e83162a0f95f1dcbf97dddf410eap-114 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog (0xfd95243681c055c2632286921092p-113 + 0x1bccabcd29ca2152860ec29e34ef7p-113 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog (0xfe961079616p-45 + 0x1bc37e09e6d1p-45 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (1.0 + 0x1.234566p-10 i)": -float: 1 -ifloat: 1 - -# clog10 -Test "Imaginary part of: clog10 (-0 + inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-0 - inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-1000 i)": -double: 2 -idouble: 2 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-30 i)": -double: 2 -idouble: 2 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-30 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1.fp+1023 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1.fp+1023 - 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1.fp+127 + 0x1p-149 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-0x1.fp+127 - 0x1p-149 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-0x1p-1074 + 0x1.fp+1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1p-1074 - 0x1.fp+1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1p-149 + 0x1.fp+127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1p-149 - 0x1.fp+127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-1.0 + 0x1.234566p-20 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (-2 - 3 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (-2 - 3 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (-3 + inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-3 - inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + 0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + 1 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + inf i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-inf - 0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf - 1 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0 + inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0 - inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0.75 + 1.25 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog10 (0x0.fffffffffffff8p0 + 0x0.fffffffffffff8p-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x0.ffffffp0 + 0x0.ffffffp-100 i)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "Real part of: clog10 (0x1.00000000000000123456789abcp0 + 0x1.23456789p-1000 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0x1.00000000000000123456789abcp0 + 0x1.23456789p-1000 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0x1.00000000000000123456789abcp0 + 0x1.23456789p-60 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog10 (0x1.000566p0 + 0x1.234p-10 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1.000566p0 + 0x1.234p-10 i)": -double: 1 -idouble: 1 -ildouble: 2 -ldouble: 2 -Test "Real part of: clog10 (0x1.000566p0 + 0x1.234p-100 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1.000566p0 + 0x1.234p-100 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0x1.234566p-30 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog10 (0x1.234566p-50 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0x1.234566p-50 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog10 (0x1.234566p-60 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0x1.234566p-60 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1.fffffep+127 + 0x1.fffffep+127 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog10 (0x1.fffffep+127 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1.fffffffffffffp+1023 + 0x1.fffffffffffffp+1023 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x1.fp+16383 + 0x1.fp+16383 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog10 (0x1.fp+16383 + 0x1p+16383 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog10 (0x10673dd0f2481p-51 + 0x7ef1d17cefbd2p-51 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: clog10 (0x1367a310575591p-54 + 0x3cfcc0a0541f60p-54 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0x1367a310575591p-54 + 0x3cfcc0a0541f60p-54 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x1415bcaf2105940d49a636e98ae59p-115 + 0x7e6a150adfcd1b0921d44b31f40f4p-115 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0x15cfbd1990d1ffp-53 + 0x176a3973e09a9ap-53 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0x164c74eea876p-45 + 0x16f393482f77p-45 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1a6p-10 + 0x3a5p-10 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x1df515eb171a808b9e400266p-95 + 0x7c71eb0cd4688dfe98581c77p-95 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0x1df515eb171a808b9e400266p-95 + 0x7c71eb0cd4688dfe98581c77p-95 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0x1p-1073 + 0x1p-1073 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-1074 + 0x1.fp+1023 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x1p-1074 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-1074 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-1074 - 0x1.fp+1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-147 + 0x1p-147 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-149 + 0x1.fp+127 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-149 + 0x1p-149 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-149 - 0x1.fp+127 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-509 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-510 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-511 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-61 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-62 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-63 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog10 (0x2818p-15 + 0x798fp-15 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0x2818p-15 + 0x798fp-15 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: clog10 (0x2dd46725bp-35 + 0x7783a1284p-35 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: clog10 (0x2ede88p-23 + 0x771c3fp-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x2ede88p-23 + 0x771c3fp-23 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0x3f96469050f650869c2p-75 + 0x6f16b2c9c8b05988335p-75 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog10 (0x4447d7175p-35 + 0x6c445e00ap-35 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x4d4ep-15 + 0x6605p-15 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog10 (0x4d9c37e2b5cb4533p-63 + 0x65c98be2385a042ep-63 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog10 (0x55cb6d0c83af5p-55 + 0x7fe33c0c7c4e90p-55 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0x5b06b680ea2ccp-52 + 0xef452b965da9fp-52 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: clog10 (0x602fd5037c4792efp-64 + 0xed3e2086dcca80b8p-64 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog10 (0x6241ef0da53f539f02fad67dabp-106 + 0x3fb46641182f7efd9caa769dac0p-106 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog10 (0x659feap-24 + 0xeaf6f9p-24 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0x659feap-24 + 0xeaf6f9p-24 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0x6b10b4f3520217b6p-64 + 0xe8893cbb449253a1p-64 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0x9b57bp-20 + 0xcb7b4p-20 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: clog10 (0xdb85c467ee2aadd5f425fe0f4b8dp-114 + 0x3e83162a0f95f1dcbf97dddf410eap-114 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: clog10 (0xf2p-10 + 0x3e3p-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0xf2p-10 + 0x3e3p-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0xfd95243681c055c2632286921092p-113 + 0x1bccabcd29ca2152860ec29e34ef7p-113 i)": -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: clog10 (0xfe961079616p-45 + 0x1bc37e09e6d1p-45 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (1.0 + 0x1.234566p-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (3 + inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (3 - inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (inf + inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (inf - inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# cos -Test "cos (0x1p+120)": -float: 1 -ifloat: 1 -Test "cos (0x1p+127)": -float: 1 -ifloat: 1 -Test "cos (M_PI_6l * 2.0)": -double: 1 -idouble: 1 -Test "cos (M_PI_6l * 4.0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# cos_downward -Test "cos_downward (1)": -float: 1 -ifloat: 1 -Test "cos_downward (2)": -float: 1 -ifloat: 1 -Test "cos_downward (3)": -float: 1 -ifloat: 1 -Test "cos_downward (4)": -float: 1 -ifloat: 1 -Test "cos_downward (5)": -float: 1 -ifloat: 1 -Test "cos_downward (7)": -float: 1 -ifloat: 1 -Test "cos_downward (8)": -float: 1 -ifloat: 1 - -# cos_tonearest -Test "cos_tonearest (7)": -float: 1 -ifloat: 1 - -# cos_towardzero -Test "cos_towardzero (2)": -float: 1 -ifloat: 1 -Test "cos_towardzero (3)": -float: 1 -ifloat: 1 -Test "cos_towardzero (5)": -float: 1 -ifloat: 1 -Test "cos_towardzero (7)": -float: 1 -ifloat: 1 -Test "cos_towardzero (8)": -float: 1 -ifloat: 1 - -# cos_upward -Test "cos_upward (10)": -float: 1 -ifloat: 1 -Test "cos_upward (6)": -float: 1 -ifloat: 1 -Test "cos_upward (7)": -float: 1 -ifloat: 1 -Test "cos_upward (9)": -float: 2 -ifloat: 2 - -# cosh_downward -Test "cosh_downward (22)": -float: 1 -ifloat: 1 -Test "cosh_downward (23)": -float: 1 -ifloat: 1 -Test "cosh_downward (24)": -float: 1 -ifloat: 1 - -# cosh_tonearest -Test "cosh_tonearest (22)": -ildouble: 1 -ldouble: 1 - -# cosh_towardzero -Test "cosh_towardzero (22)": -float: 1 -ifloat: 1 -Test "cosh_towardzero (23)": -float: 1 -ifloat: 1 -Test "cosh_towardzero (24)": -float: 1 -ifloat: 1 - -# cpow -Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i)": -double: 1 -float: 4 -idouble: 1 -ifloat: 4 -ildouble: 4 -ldouble: 4 -Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i)": -double: 2 -float: 3 -idouble: 2 -ifloat: 3 -ildouble: 2 -ldouble: 2 -Test "Real part of: cpow (2 + 0 i, 10 + 0 i)": -ildouble: 2 -ldouble: 2 -Test "Real part of: cpow (2 + 3 i, 4 + 0 i)": -double: 1 -float: 4 -idouble: 1 -ifloat: 4 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i)": -float: 2 -ifloat: 2 - -# csin -Test "Real part of: csin (-0.75 + 11357.25 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: csin (-0.75 + 710.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: csin (-0.75 + 89.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csin (-0.75 + 89.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: csin (-0.75 - 11357.25 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: csin (-0.75 - 710.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: csin (-0.75 - 89.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csin (-0.75 - 89.5 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csin (-2 - 3 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: csin (0.75 + 1.25 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: csin (0.75 + 11357.25 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: csin (0.75 + 710.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: csin (0.75 + 89.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csin (0.75 + 89.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: csin (0.75 - 11357.25 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: csin (0.75 - 710.5 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: csin (0.75 - 89.5 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csin (0.75 - 89.5 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: csin (0x1p-1074 + 1440 i)": -double: 1 -idouble: 1 -Test "Real part of: csin (0x1p-16434 + 22730 i)": -ildouble: 1 -ldouble: 1 - -# csinh -Test "Imaginary part of: csinh (-11357.25 + 0.75 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csinh (-11357.25 - 0.75 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: csinh (-2 - 3 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csinh (-2 - 3 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csinh (-710.5 + 0.75 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csinh (-710.5 - 0.75 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: csinh (-89.5 + 0.75 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csinh (-89.5 + 0.75 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: csinh (-89.5 - 0.75 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csinh (-89.5 - 0.75 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: csinh (0.75 + 1.25 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: csinh (0.75 + 1.25 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: csinh (11357.25 + 0.75 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csinh (11357.25 - 0.75 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csinh (1440 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csinh (22730 + 0x1p-16434 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csinh (710.5 + 0.75 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csinh (710.5 - 0.75 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: csinh (89.5 + 0.75 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csinh (89.5 + 0.75 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: csinh (89.5 - 0.75 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csinh (89.5 - 0.75 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# csqrt -Test "Real part of: csqrt (-0x1.0000000000000000000000000001p-16382 - 0x1.0000000000000000000000000001p-16382 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: csqrt (-0x1.0000000000000002p-16382 - 0x1.0000000000000002p-16382 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csqrt (-0x1.0000000000000002p-16382 - 0x1.0000000000000002p-16382 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: csqrt (-0x1.0000000000001p-1022 - 0x1.0000000000001p-1022 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: csqrt (-0x1.000002p-126 - 0x1.000002p-126 i)": -double: 1 -idouble: 1 -Test "Real part of: csqrt (-2 + 3 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: csqrt (-2 - 3 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csqrt (0.75 + 1.25 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csqrt (0x1.0000000000000000000000000001p-16382 + 0x1.0000000000000000000000000001p-16382 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: csqrt (0x1.0000000000000002p-16382 + 0x1.0000000000000002p-16382 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csqrt (0x1.0000000000000002p-16382 + 0x1.0000000000000002p-16382 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csqrt (0x1.0000000000001p-1022 + 0x1.0000000000001p-1022 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csqrt (0x1.000002p-126 + 0x1.000002p-126 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csqrt (0x1.fffffep+127 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: csqrt (0x1.fffffffffffffp+1023 + 0x1.fffffffffffffp+1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csqrt (0x1.fffffffffffffp+1023 + 0x1.fffffffffffffp+1023 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csqrt (0x1.fffffffffffffp+1023 + 0x1p+1023 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: csqrt (0x1.fp+16383 + 0x1.fp+16383 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csqrt (0x1.fp+16383 + 0x1.fp+16383 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csqrt (0x1.fp+16383 + 0x1p+16383 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csqrt (0x1p-16440 + 0x1p-16441 i)": -ildouble: 1 -ldouble: 1 - -# ctan -Test "Real part of: ctan (-2 - 3 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctan (-2 - 3 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ctan (0.75 + 1.25 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ctan (0.75 + 1.25 i)": -double: 1 -idouble: 1 -ildouble: 2 -ldouble: 2 -Test "Real part of: ctan (0x1p1023 + 1 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctan (0x1p1023 + 1 i)": -ildouble: 2 -ldouble: 2 -Test "Real part of: ctan (0x1p127 + 1 i)": -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: ctan (0x1p127 + 1 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ctan (0x1p16383 + 1 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ctan (0x1p16383 + 1 i)": -ildouble: 2 -ldouble: 2 -Test "Real part of: ctan (0x3.243f6cp-1 + 0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ctan (1 + 355 i)": -ildouble: 2 -ldouble: 2 -Test "Real part of: ctan (1 + 365 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: ctan (1 + 45 i)": -ildouble: 2 -ldouble: 2 -Test "Real part of: ctan (1 + 47 i)": -ildouble: 1 -ldouble: 1 - -# ctan_downward -Test "Real part of: ctan_downward (0x1.921fb6p+0 + 0x1p-149 i)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "Imaginary part of: ctan_downward (0x1.921fb6p+0 + 0x1p-149 i)": -float: 1 -ifloat: 1 - -# ctan_tonearest -Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d1846ap+0 + 0x1p-16445 i)": -ildouble: 1 -ldouble: 1 -Test "Real part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x1p-1074 i)": -ildouble: 3 -ldouble: 3 -Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x1p-1074 i)": -ildouble: 3 -ldouble: 3 -Test "Real part of: ctan_tonearest (0x1.921fb6p+0 + 0x1p-149 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ctan_tonearest (0x1.921fb6p+0 + 0x1p-149 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -# ctan_towardzero -Test "Real part of: ctan_towardzero (0x1.921fb6p+0 + 0x1p-149 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctan_towardzero (0x1.921fb6p+0 + 0x1p-149 i)": -float: 1 -ifloat: 1 - -# ctan_upward -Test "Real part of: ctan_upward (0x1.921fb54442d18p+0 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Real part of: ctan_upward (0x1.921fb6p+0 + 0x1p-149 i)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "Imaginary part of: ctan_upward (0x1.921fb6p+0 + 0x1p-149 i)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# ctanh -Test "Real part of: ctanh (-2 - 3 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctanh (-2 - 3 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctanh (0 + 0x3.243f6cp-1 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ctanh (0 + pi/4 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ctanh (0.75 + 1.25 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctanh (0.75 + 1.25 i)": -float: 2 -ifloat: 2 -Test "Real part of: ctanh (1 + 0x1p1023 i)": -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: ctanh (1 + 0x1p1023 i)": -double: 1 -idouble: 1 -Test "Real part of: ctanh (1 + 0x1p127 i)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ctanh (1 + 0x1p127 i)": -ildouble: 2 -ldouble: 2 -Test "Real part of: ctanh (1 + 0x1p16383 i)": -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: ctanh (1 + 0x1p16383 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ctanh (355 + 1 i)": -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: ctanh (365 + 1 i)": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ctanh (45 + 1 i)": -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: ctanh (47 + 1 i)": -ildouble: 1 -ldouble: 1 - -# ctanh_downward -Test "Real part of: ctanh_downward (0x1p-149 + 0x1.921fb6p+0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctanh_downward (0x1p-149 + 0x1.921fb6p+0 i)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -# ctanh_tonearest -Test "Real part of: ctanh_tonearest (0x1p-1074 + 0x1.921fb54442d18p+0 i)": -ildouble: 3 -ldouble: 3 -Test "Imaginary part of: ctanh_tonearest (0x1p-1074 + 0x1.921fb54442d18p+0 i)": -ildouble: 3 -ldouble: 3 -Test "Real part of: ctanh_tonearest (0x1p-149 + 0x1.921fb6p+0 i)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: ctanh_tonearest (0x1p-149 + 0x1.921fb6p+0 i)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ctanh_tonearest (0x1p-16445 + 0x1.921fb54442d1846ap+0 i)": -ildouble: 1 -ldouble: 1 - -# ctanh_towardzero -Test "Real part of: ctanh_towardzero (0x1p-149 + 0x1.921fb6p+0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctanh_towardzero (0x1p-149 + 0x1.921fb6p+0 i)": -float: 1 -ifloat: 1 - -# ctanh_upward -Test "Imaginary part of: ctanh_upward (0x1p-1074 + 0x1.921fb54442d18p+0 i)": -double: 1 -idouble: 1 -Test "Real part of: ctanh_upward (0x1p-149 + 0x1.921fb6p+0 i)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "Imaginary part of: ctanh_upward (0x1p-149 + 0x1.921fb6p+0 i)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -# erf -Test "erf (1.25)": -double: 1 -idouble: 1 - -# erfc -Test "erfc (0x1.f7303cp+1)": -double: 1 -idouble: 1 -Test "erfc (0x1.ffa002p+2)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "erfc (0x1.ffffc8p+2)": -ildouble: 1 -ldouble: 1 -Test "erfc (2.0)": -double: 1 -idouble: 1 -Test "erfc (27.0)": -ildouble: 1 -ldouble: 1 -Test "erfc (4.125)": -double: 1 -idouble: 1 - -# exp10 -Test "exp10 (-1)": -double: 1 -idouble: 1 -Test "exp10 (-305)": -double: 1 -idouble: 1 -Test "exp10 (-36)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "exp10 (3)": -double: 1 -idouble: 1 -Test "exp10 (36)": -double: 1 -idouble: 1 -Test "exp10 (4932)": -ildouble: 1 -ldouble: 1 - -# exp2 -Test "exp2 (100.5)": -ildouble: 1 -ldouble: 1 - -# exp_downward -Test "exp_downward (2)": -float: 1 -ifloat: 1 -Test "exp_downward (3)": -float: 1 -ifloat: 1 - -# exp_towardzero -Test "exp_towardzero (2)": -float: 1 -ifloat: 1 -Test "exp_towardzero (3)": -float: 1 -ifloat: 1 - -# exp_upward -Test "exp_upward (1)": -float: 1 -ifloat: 1 - -# expm1 -Test "expm1 (-79.0)": -ildouble: 1 -ldouble: 1 -Test "expm1 (0.75)": -double: 1 -idouble: 1 -Test "expm1 (1)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "expm1 (500.0)": -double: 1 -idouble: 1 - -# gamma -Test "gamma (-0.5)": -ildouble: 1 -ldouble: 1 -Test "gamma (0.7)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "gamma (1.2)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -# hypot -Test "hypot (-0.7, -12.4)": -float: 1 -ifloat: 1 -Test "hypot (-0.7, 12.4)": -float: 1 -ifloat: 1 -Test "hypot (-12.4, -0.7)": -float: 1 -ifloat: 1 -Test "hypot (-12.4, 0.7)": -float: 1 -ifloat: 1 -Test "hypot (0.7, -12.4)": -float: 1 -ifloat: 1 -Test "hypot (0.7, 12.4)": -float: 1 -ifloat: 1 -Test "hypot (12.4, -0.7)": -float: 1 -ifloat: 1 -Test "hypot (12.4, 0.7)": -float: 1 -ifloat: 1 - -# j0 -Test "j0 (-0x1.001000001p+593)": -ildouble: 1 -ldouble: 1 -Test "j0 (-4.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "j0 (0.75)": -float: 1 -ifloat: 1 -Test "j0 (0x1.d7ce3ap+107)": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "j0 (0x1p1023)": -ildouble: 1 -ldouble: 1 -Test "j0 (0x1p16383)": -ildouble: 2 -ldouble: 2 -Test "j0 (10.0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "j0 (2.0)": -float: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "j0 (4.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "j0 (8.0)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# j1 -Test "j1 (-1.0)": -ildouble: 1 -ldouble: 1 -Test "j1 (0.75)": -ildouble: 1 -ldouble: 1 -Test "j1 (0x1.3ffp+74)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "j1 (0x1.ff00000000002p+840)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "j1 (0x1p1023)": -ildouble: 1 -ldouble: 1 -Test "j1 (0x1p16382)": -ildouble: 1 -ldouble: 1 -Test "j1 (0x1p16383)": -ildouble: 2 -ldouble: 2 -Test "j1 (1.0)": -ildouble: 1 -ldouble: 1 -Test "j1 (10.0)": -float: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "j1 (2.0)": -double: 1 -idouble: 1 -Test "j1 (8.0)": -double: 1 -idouble: 1 -ildouble: 4 -ldouble: 4 - -# jn -Test "jn (0, -4.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (0, 0.75)": -float: 1 -ifloat: 1 -Test "jn (0, 10.0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "jn (0, 2.0)": -float: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "jn (0, 4.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (0, 8.0)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (1, -1.0)": -ildouble: 1 -ldouble: 1 -Test "jn (1, 0.75)": -ildouble: 1 -ldouble: 1 -Test "jn (1, 1.0)": -ildouble: 1 -ldouble: 1 -Test "jn (1, 10.0)": -float: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "jn (1, 2.0)": -double: 1 -idouble: 1 -Test "jn (1, 8.0)": -double: 1 -idouble: 1 -ildouble: 4 -ldouble: 4 -Test "jn (10, -1.0)": -ildouble: 1 -ldouble: 1 -Test "jn (10, 0.125)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (10, 0.75)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (10, 1.0)": -ildouble: 1 -ldouble: 1 -Test "jn (10, 10.0)": -double: 4 -float: 3 -idouble: 4 -ifloat: 3 -ildouble: 2 -ldouble: 2 -Test "jn (10, 2.0)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "jn (2, 0x1.ffff62p+99)": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -Test "jn (2, 2.4048255576957729)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (3, 0.125)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (3, 0.75)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (3, 10.0)": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "jn (3, 2.0)": -float: 1 -ifloat: 1 -Test "jn (3, 2.4048255576957729)": -double: 3 -idouble: 3 -ildouble: 1 -ldouble: 1 -Test "jn (4, 2.4048255576957729)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "jn (5, 2.4048255576957729)": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "jn (6, 2.4048255576957729)": -double: 4 -float: 3 -idouble: 4 -ifloat: 3 -ildouble: 5 -ldouble: 5 -Test "jn (7, 2.4048255576957729)": -double: 3 -float: 5 -idouble: 3 -ifloat: 5 -ildouble: 3 -ldouble: 3 -Test "jn (8, 2.4048255576957729)": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -ildouble: 8 -ldouble: 8 -Test "jn (9, 2.4048255576957729)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 3 -ldouble: 3 - -# lgamma -Test "lgamma (-0.5)": -ildouble: 1 -ldouble: 1 -Test "lgamma (0.7)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "lgamma (1.2)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -# log10 -Test "log10 (0.75)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "log10 (e)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# log1p -Test "log1p (-0.25)": -float: 1 -ifloat: 1 - -# log2 -Test "log2 (0.75)": -ildouble: 1 -ldouble: 1 - -# pow -Test "pow (0x0.fffffffffffff8p0, -0x1.23456789abcdfp62)": -ildouble: 1 -ldouble: 1 -Test "pow (0x0.ffffffp0, -0x1p24)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "pow (0x0.ffffffp0, 0x1p24)": -float: 1 -ifloat: 1 -Test "pow (0x1.000002p0, 0x1p24)": -float: 1 -ifloat: 1 -Test "pow (10.0, -4930.0)": -ildouble: 1 -ldouble: 1 -Test "pow (10.0, 4929.0)": -ildouble: 1 -ldouble: 1 -Test "pow (10.0, 4930.0)": -ildouble: 1 -ldouble: 1 -Test "pow (10.0, 4931.0)": -ildouble: 1 -ldouble: 1 -Test "pow (10.0, 4932.0)": -ildouble: 1 -ldouble: 1 -Test "pow (1e4932, 0.75)": -ildouble: 1 -ldouble: 1 - -# pow10 -Test "pow10 (-1)": -double: 1 -idouble: 1 -Test "pow10 (-305)": -double: 1 -idouble: 1 -Test "pow10 (-36)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "pow10 (3)": -double: 1 -idouble: 1 -Test "pow10 (36)": -double: 1 -idouble: 1 -Test "pow10 (4932)": -ildouble: 1 -ldouble: 1 - -# pow_downward -Test "pow_downward (1.5, 1.03125)": -float: 1 -ifloat: 1 - -# pow_towardzero -Test "pow_towardzero (1.5, 1.03125)": -float: 1 -ifloat: 1 - -# pow_upward -Test "pow_upward (1.0625, 1.125)": -float: 1 -ifloat: 1 - -# sin_downward -Test "sin_downward (10)": -float: 1 -ifloat: 1 -Test "sin_downward (3)": -float: 1 -ifloat: 1 -Test "sin_downward (5)": -float: 1 -ifloat: 1 -Test "sin_downward (6)": -float: 1 -ifloat: 1 - -# sin_tonearest -Test "sin_tonearest (1)": -float: 1 -ifloat: 1 -Test "sin_tonearest (3)": -ildouble: 1 -ldouble: 1 - -# sin_towardzero -Test "sin_towardzero (1)": -float: 1 -ifloat: 1 -Test "sin_towardzero (10)": -float: 1 -ifloat: 1 -Test "sin_towardzero (4)": -float: 1 -ifloat: 1 -Test "sin_towardzero (5)": -float: 1 -ifloat: 1 -Test "sin_towardzero (9)": -float: 1 -ifloat: 1 - -# sin_upward -Test "sin_upward (1)": -float: 1 -ifloat: 1 -Test "sin_upward (2)": -float: 2 -ifloat: 2 -Test "sin_upward (4)": -float: 1 -ifloat: 1 -Test "sin_upward (9)": -float: 1 -ifloat: 1 - -# sincos -Test "sincos (0x1p+120) extra output 2": -float: 1 -ifloat: 1 -Test "sincos (0x1p+127) extra output 2": -float: 1 -ifloat: 1 -Test "sincos (M_PI_6l*2.0) extra output 1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "sincos (M_PI_6l*2.0) extra output 2": -double: 1 -idouble: 1 -Test "sincos (pi/6) extra output 2": -float: 1 -ifloat: 1 - -# sinh_downward -Test "sinh_downward (22)": -float: 1 -ifloat: 1 -Test "sinh_downward (23)": -float: 1 -ifloat: 1 -Test "sinh_downward (24)": -float: 1 -ifloat: 1 - -# sinh_towardzero -Test "sinh_towardzero (22)": -float: 1 -ifloat: 1 -Test "sinh_towardzero (23)": -float: 1 -ifloat: 1 -Test "sinh_towardzero (24)": -float: 1 -ifloat: 1 - -# tan_downward -Test "tan_downward (1)": -float: 1 -ifloat: 1 -Test "tan_downward (10)": -float: 1 -ifloat: 1 -Test "tan_downward (2)": -float: 1 -ifloat: 1 -Test "tan_downward (6)": -float: 1 -ifloat: 1 -Test "tan_downward (8)": -float: 1 -ifloat: 1 -Test "tan_downward (9)": -float: 1 -ifloat: 1 - -# tan_towardzero -Test "tan_towardzero (10)": -float: 1 -ifloat: 1 -Test "tan_towardzero (3)": -float: 1 -ifloat: 1 -Test "tan_towardzero (4)": -float: 1 -ifloat: 1 -Test "tan_towardzero (5)": -float: 1 -ifloat: 1 -Test "tan_towardzero (9)": -float: 1 -ifloat: 1 - -# tan_upward -Test "tan_upward (1)": -float: 1 -ifloat: 1 -Test "tan_upward (10)": -float: 1 -ifloat: 1 -Test "tan_upward (3)": -float: 1 -ifloat: 1 -Test "tan_upward (5)": -float: 1 -ifloat: 1 - -# tanh -Test "tanh (-0.75)": -ildouble: 1 -ldouble: 1 -Test "tanh (-1.0)": -ildouble: 1 -ldouble: 1 -Test "tanh (0.75)": -ildouble: 1 -ldouble: 1 -Test "tanh (1.0)": -ildouble: 1 -ldouble: 1 - -# tgamma -Test "tgamma (-0.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x0.fffffffffffff8p0)": -double: 1 -idouble: 1 -Test "tgamma (-0x0.ffffffffffffffffffffffffffff8p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x0.ffffffp0)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x1.0000000000000002p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x1.0000000000001p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x1.000002p0)": -double: 2 -idouble: 2 -Test "tgamma (-0x1.0a32a2p+5)": -float: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x1.5800000080001p+7)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x1.fffffffffffffffep0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x1.fffffffffffffp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x13.ffffep0)": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x13.ffffffffffffffep0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x13.fffffffffffffffffffffffff8p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x13.ffffffffffffp0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x14.000000000000000000000000001p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x14.000000000001p0)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x14.00002p0)": -float: 1 -ifloat: 1 -ildouble: 4 -ldouble: 4 -Test "tgamma (-0x1d.ffffep0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x1d.fffffffffffffffffffffffff8p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x1d.ffffffffffffp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x1e.000000000000000000000000001p0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x1e.00000000000000000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x1e.000000000000002p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x1e.000000000001p0)": -double: 3 -idouble: 3 -Test "tgamma (-0x1e.00002p0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x1f3.ffffffffffffffffffffffffffp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x1p-24)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x2.0000000000000000000000000002p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x2.0000000000002p0)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x2.000004p0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x2.fffffcp0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x2.ffffffffffffep0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x27.fffffffffffep0)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x27.ffffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x27.ffffffffffffffffffffffffffep0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x27.fffffffffffffffffffffffffp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x28.0000000000000000000000001p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x28.000000000002p0)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x28.00004p0)": -double: 2 -idouble: 2 -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x28.ffffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x28.ffffffffffffffffffffffffffep0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x28.fffffffffffffffffffffffffp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x29.000000000000000000000000002p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x29.0000000000000000000000001p0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x29.00004p0)": -double: 1 -idouble: 1 -Test "tgamma (-0x29.ffffcp0)": -double: 1 -idouble: 1 -Test "tgamma (-0x29.fffffffffffep0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x29.ffffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x29.ffffffffffffffffffffffffffep0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x29.fffffffffffffffffffffffffp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x2a.000000000000000000000000002p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x2a.0000000000000000000000001p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x2a.000000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x2a.000000000002p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x2ed.fffffffffffffffffffffffffep0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x2ee.00000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x3.00000000000000000000000001p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x3.000004p0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "tgamma (-0x3.fffffcp0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x3.ffffffffffffep0)": -double: 2 -idouble: 2 -Test "tgamma (-0x3.fffffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x3.fffffffffffffffffffffffffffep0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x31.fffffffffffep0)": -double: 3 -idouble: 3 -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x31.ffffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x31.ffffffffffffffffffffffffffep0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x31.fffffffffffffffffffffffffp0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x32.000000000000000000000000002p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x32.0000000000000000000000001p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x32.000000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x3e7.fffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x3e7.fffffffffffffffffffffffffep0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x3e8.00000000000000000000000002p0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x3e8.00000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x4.0000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x4.000008p0)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x4.fffff8p0)": -double: 1 -idouble: 1 -Test "tgamma (-0x4.ffffffffffffcp0)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x4.fffffffffffffffffffffffffep0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x4.fffffffffffffffffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x5.0000000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x5.0000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x5.000008p0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x5.fffff8p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x5.ffffffffffffcp0)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x5.fffffffffffffff8p0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x5.fffffffffffffffffffffffffep0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x5.fffffffffffffffffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x5db.fffffffffffff8p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x5db.fffffffffffffffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x5dc.00000000000000000000000004p0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x6.0000000000000000000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x6.00000000000000000000000002p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x6.0000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x6.000008p0)": -float: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x6.fffff8p0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x6.ffffffffffffcp0)": -double: 4 -idouble: 4 -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x6.fffffffffffffff8p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x6.fffffffffffffffffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x63.fffffffffffcp0)": -double: 2 -idouble: 2 -Test "tgamma (-0x63.ffffffffffffff8p0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x63.ffffffffffffffffffffffffep0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x64.000000000000000000000000004p0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x64.0000000000000000000000002p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x64.000000000004p0)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x6d5.fffffffffffff8p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x6d6.00000000000000000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x6e3.00000000000000000000000004p0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x7.0000000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x7.0000000000004p0)": -double: 3 -idouble: 3 -Test "tgamma (-0x7.000008p0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x7.fffff8p0)": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "tgamma (-0x7.ffffffffffffcp0)": -double: 3 -idouble: 3 -Test "tgamma (-0x7.fffffffffffffff8p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x7.fffffffffffffffffffffffffep0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x7.fffffffffffffffffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x8.0000000000000000000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x8.00000000000000000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x8.0000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x8.00001p0)": -double: 2 -idouble: 2 -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x9.ffffffffffff8p0)": -double: 1 -idouble: 1 -Test "tgamma (-0x9.fffffffffffffffffffffffffff8p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x9.fffffp0)": -float: 1 -ifloat: 1 -Test "tgamma (-0x95.ffffffffffffffp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x96.000000000000000000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x96.0000000000000000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0x96.00000000000001p0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0x96.000000000008p0)": -double: 1 -idouble: 1 -Test "tgamma (-0xa.0000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xa.00001p0)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xb4.ffffffffffffffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xb4.ffffffffffffffp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xb5.0000000000000000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xb5.00000000000001p0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0xb5.000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xb5.ffffffffffffffffffffffffff8p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xb6.00000000000001p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xb6.000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xb6.fffffffffff8p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xb6.ffffffffffffffffffffffffff8p0)": -ildouble: 3 -ldouble: 3 -Test "tgamma (-0xb7.000000000000000000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xb7.00000000000001p0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0xb7.000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xb7.ffffffffffffffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xb7.ffffffffffffffffffffffffff8p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xb8.00000000000001p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xbb.ffffffffffffffffffffffffcp0)": -ildouble: 3 -ldouble: 3 -Test "tgamma (-0xbb.ffffffffffffffffffffffffff8p0)": -ildouble: 4 -ldouble: 4 -Test "tgamma (-0xbc.000000000000000000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xbc.0000000000000000000000004p0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0xbc.00000000000001p0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0xbc.ffffffffffffffp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xbd.000000000000000000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xbd.00000000000001p0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0xbd.ffffffffffffffp0)": -ildouble: 2 -ldouble: 2 -Test "tgamma (-0xbe.000000000000000000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xbe.0000000000000000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xbe.ffffffffffffffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xbe.ffffffffffffffp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xbf.000000000000000000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xbf.0000000000000000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xbf.00000000000001p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xf9.ffffffffffffffp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-0xfa.000000000000000000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (-2.5)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "tgamma (-3.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (-4.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-5.5)": -double: 1 -idouble: 1 -Test "tgamma (-6.5)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (-7.5)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "tgamma (-8.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-9.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0.5)": -float: 1 -ifloat: 1 -Test "tgamma (0.7)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0x1.fffffep0)": -float: 1 -ifloat: 1 -Test "tgamma (0x1.fffffffffffffffep0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x1.ffffffffffffffffffffffffffffp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x1.fffffffffffffp0)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (0x1p-113)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x1p-24)": -float: 1 -ifloat: 1 -Test "tgamma (0x1p-53)": -double: 1 -idouble: 1 -Test "tgamma (0x2.30a43cp+4)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "tgamma (0x2.fffffcp0)": -float: 3 -ifloat: 3 -Test "tgamma (0x2.ffffffffffffep0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x3.0000000000002p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x3.fffffcp0)": -float: 1 -ifloat: 1 -Test "tgamma (0x3.ffffffffffffep0)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (0x3.fffffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x3.fffffffffffffffffffffffffffep0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x4.0000000000000000000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x4.0000000000004p0)": -double: 1 -idouble: 1 -Test "tgamma (0x4.000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x4.ffffffffffffcp0)": -double: 1 -idouble: 1 -Test "tgamma (0x4.fffffffffffffffffffffffffep0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x4.fffffffffffffffffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x5.0000000000000000000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x5.0000000000004p0)": -double: 1 -idouble: 1 -Test "tgamma (0x5.000008p0)": -float: 2 -ifloat: 2 -Test "tgamma (0x5.fffff8p0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0x5.ffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x5.fffffffffffffff8p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x5.fffffffffffffffffffffffffep0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x6.0000000000000000000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x6.0000000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x6.0000000000004p0)": -double: 1 -idouble: 1 -Test "tgamma (0x6.000008p0)": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "tgamma (0x6.fffff8p0)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (0x6.ffffffffffffcp0)": -double: 4 -idouble: 4 -Test "tgamma (0x6.fffffffffffffff8p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x7.0000000000000000000000000004p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x7.0000000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x7.0000000000004p0)": -double: 4 -idouble: 4 -Test "tgamma (0x7.000008p0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0x7.fffff8p0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "tgamma (0x7.ffffffffffffcp0)": -double: 2 -idouble: 2 -ildouble: 1 -ldouble: 1 -Test "tgamma (0x7.fffffffffffffffffffffffffffcp0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x8.0000000000000000000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x8.0000000000008p0)": -ildouble: 1 -ldouble: 1 -Test "tgamma (0x8.00001p0)": -double: 2 -idouble: 2 -Test "tgamma (0xa.b9fd72b0fb238p+4)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (0xa.b9fd72b0fb23a9ddbf0d3804f8p+4)": -ildouble: 2 -ldouble: 2 -Test "tgamma (10)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (18.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (19.5)": -double: 2 -idouble: 2 -ildouble: 1 -ldouble: 1 -Test "tgamma (2.5)": -float: 2 -ifloat: 2 -Test "tgamma (23.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (29.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (3)": -float: 1 -ifloat: 1 -Test "tgamma (3.5)": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "tgamma (30.5)": -float: 1 -ifloat: 1 -Test "tgamma (32.5)": -ildouble: 1 -ldouble: 1 -Test "tgamma (33.5)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (34.5)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "tgamma (4)": -float: 1 -ifloat: 1 -Test "tgamma (4.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (6)": -float: 1 -ifloat: 1 -Test "tgamma (6.5)": -float: 1 -ifloat: 1 -Test "tgamma (7)": -double: 1 -idouble: 1 -Test "tgamma (7.5)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "tgamma (8)": -double: 1 -idouble: 1 -Test "tgamma (8.5)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (9)": -double: 1 -idouble: 1 -Test "tgamma (9.5)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -# y0 -Test "y0 (0x1.3ffp+74)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "y0 (0x1.ff00000000002p+840)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "y0 (0x1p-10)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "y0 (0x1p-110)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "y0 (0x1p-20)": -float: 1 -ifloat: 1 -Test "y0 (0x1p-30)": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "y0 (0x1p-40)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "y0 (0x1p-50)": -float: 1 -ifloat: 1 -Test "y0 (0x1p-60)": -ildouble: 1 -ldouble: 1 -Test "y0 (0x1p-70)": -double: 1 -idouble: 1 -Test "y0 (0x1p-80)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "y0 (0x1p1023)": -ildouble: 1 -ldouble: 1 -Test "y0 (0x1p16382)": -ildouble: 1 -ldouble: 1 -Test "y0 (0x1p16383)": -ildouble: 2 -ldouble: 2 -Test "y0 (1.0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "y0 (1.5)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "y0 (10.0)": -float: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 -Test "y0 (8.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 - -# y1 -Test "y1 (0.125)": -double: 1 -idouble: 1 -Test "y1 (0.75)": -ildouble: 1 -ldouble: 1 -Test "y1 (0x1.001000001p+593)": -ildouble: 1 -ldouble: 1 -Test "y1 (0x1.27e204p+99)": -double: 1 -idouble: 1 -Test "y1 (0x1p-10)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "y1 (0x1p-30)": -ildouble: 1 -ldouble: 1 -Test "y1 (0x1p1023)": -ildouble: 1 -ldouble: 1 -Test "y1 (0x1p16383)": -ildouble: 2 -ldouble: 2 -Test "y1 (1.5)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "y1 (10.0)": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "y1 (2.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "y1 (8.0)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -# yn -Test "yn (0, 1.0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "yn (0, 1.5)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "yn (0, 10.0)": -float: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 -Test "yn (0, 8.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 -Test "yn (1, 0.125)": -double: 1 -idouble: 1 -Test "yn (1, 0.75)": -ildouble: 1 -ldouble: 1 -Test "yn (1, 1.5)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "yn (1, 10.0)": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "yn (1, 2.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "yn (1, 8.0)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "yn (10, 0.125)": -double: 1 -idouble: 1 -ildouble: 2 -ldouble: 2 -Test "yn (10, 0.75)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 5 -ldouble: 5 -Test "yn (10, 1.0)": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "yn (10, 10.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "yn (10, 2.0)": -double: 2 -idouble: 2 -ildouble: 2 -ldouble: 2 -Test "yn (3, 0.125)": -double: 1 -idouble: 1 -Test "yn (3, 0.75)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "yn (3, 10.0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "yn (3, 2.0)": -double: 1 -idouble: 1 - -# Maximal error of functions: -Function: "acos_downward": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "acos_towardzero": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "asin_downward": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "asin_towardzero": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "asin_upward": -float: 1 -ifloat: 1 - -Function: "atan2": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "atanh": -float: 1 -ifloat: 1 - -Function: Real part of "cacos": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -Function: Imaginary part of "cacos": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -Function: Real part of "cacosh": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -Function: Imaginary part of "cacosh": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -Function: Real part of "casin": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Imaginary part of "casin": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -Function: Real part of "casinh": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -Function: Imaginary part of "casinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Real part of "catan": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "catan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "catanh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "catanh": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "cbrt": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "ccos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "ccos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "cexp": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "cexp": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: Real part of "clog": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "clog": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "clog10": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "clog10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: "cos": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "cos_downward": -float: 1 -ifloat: 1 - -Function: "cos_tonearest": -float: 1 -ifloat: 1 - -Function: "cos_towardzero": -float: 1 -ifloat: 1 - -Function: "cos_upward": -float: 2 -ifloat: 2 - -Function: "cosh_downward": -float: 1 -ifloat: 1 - -Function: "cosh_tonearest": -ildouble: 1 -ldouble: 1 - -Function: "cosh_towardzero": -float: 1 -ifloat: 1 - -Function: Real part of "cpow": -double: 2 -float: 4 -idouble: 2 -ifloat: 4 -ildouble: 4 -ldouble: 4 - -Function: Imaginary part of "cpow": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: Real part of "csin": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "csin": -ildouble: 1 -ldouble: 1 - -Function: Real part of "csinh": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "csinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "csqrt": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "csqrt": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "ctan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Imaginary part of "ctan": -double: 1 -idouble: 1 -ildouble: 2 -ldouble: 2 - -Function: Real part of "ctan_downward": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: Imaginary part of "ctan_downward": -float: 1 -ifloat: 1 - -Function: Real part of "ctan_tonearest": -float: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 - -Function: Imaginary part of "ctan_tonearest": -float: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 - -Function: Real part of "ctan_towardzero": -float: 1 -ifloat: 1 - -Function: Imaginary part of "ctan_towardzero": -float: 1 -ifloat: 1 - -Function: Real part of "ctan_upward": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: Imaginary part of "ctan_upward": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Real part of "ctanh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Imaginary part of "ctanh": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -Function: Real part of "ctanh_downward": -float: 1 -ifloat: 1 - -Function: Imaginary part of "ctanh_downward": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: Real part of "ctanh_tonearest": -float: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 - -Function: Imaginary part of "ctanh_tonearest": -float: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 - -Function: Real part of "ctanh_towardzero": -float: 1 -ifloat: 1 - -Function: Imaginary part of "ctanh_towardzero": -float: 1 -ifloat: 1 - -Function: Real part of "ctanh_upward": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Imaginary part of "ctanh_upward": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "erf": -double: 1 -idouble: 1 - -Function: "erfc": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "exp10": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: "exp2": -ildouble: 1 -ldouble: 1 - -Function: "exp_downward": -float: 1 -ifloat: 1 - -Function: "exp_towardzero": -float: 1 -ifloat: 1 - -Function: "exp_upward": -float: 1 -ifloat: 1 - -Function: "expm1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "gamma": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "hypot": -float: 1 -ifloat: 1 - -Function: "j0": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -Function: "j1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 4 -ldouble: 4 - -Function: "jn": -double: 4 -float: 5 -idouble: 4 -ifloat: 5 -ildouble: 8 -ldouble: 8 - -Function: "lgamma": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "log10": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "log1p": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "log2": -ildouble: 1 -ldouble: 1 - -Function: "pow": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "pow10": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: "pow_downward": -float: 1 -ifloat: 1 - -Function: "pow_towardzero": -float: 1 -ifloat: 1 - -Function: "pow_upward": -float: 1 -ifloat: 1 - -Function: "sin_downward": -float: 1 -ifloat: 1 - -Function: "sin_tonearest": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "sin_towardzero": -float: 1 -ifloat: 1 - -Function: "sin_upward": -float: 2 -ifloat: 2 - -Function: "sincos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "sinh_downward": -float: 1 -ifloat: 1 - -Function: "sinh_towardzero": -float: 1 -ifloat: 1 - -Function: "tan": -double: 1 -idouble: 1 - -Function: "tan_downward": -float: 1 -ifloat: 1 - -Function: "tan_towardzero": -float: 1 -ifloat: 1 - -Function: "tan_upward": -float: 1 -ifloat: 1 - -Function: "tanh": -ildouble: 1 -ldouble: 1 - -Function: "tgamma": -double: 4 -float: 3 -idouble: 4 -ifloat: 3 -ildouble: 4 -ldouble: 4 - -Function: "y0": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 3 -ldouble: 3 - -Function: "y1": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -Function: "yn": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -ildouble: 5 -ldouble: 5 - -# end of automatic generation diff --git a/test/math/libm-test-ulps-nds32 b/test/math/libm-test-ulps-nds32 deleted file mode 100644 index 46b2ac559..000000000 --- a/test/math/libm-test-ulps-nds32 +++ /dev/null @@ -1,145 +0,0 @@ -# Begin of automatic generation - -# cos -Test "cos (M_PI_6l * 2.0) == 0.5": -double: 1 -idouble: 1 -Test "cos (M_PI_6l * 4.0) == -0.5": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -# erf -Test "erf (0.75) == 0.711155633653515131598937834591410777": -double: 1 -idouble: 1 -Test "erf (1.25) == 0.922900128256458230136523481197281140": -double: 1 -idouble: 1 - -# erfc -Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8": -double: 1 -idouble: 1 - -# exp -Test "exp (1) == e": -double: 1 -idouble: 1 - -# expm1 -Test "expm1 (0.75) == 1.11700001661267466854536981983709561": -double: 1 -idouble: 1 - -# hypot -Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 - -# lgamma -Test "lgamma (0.7) == 0.260867246531666514385732417016759578": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# log10 -Test "log10 (0.75) == -0.124938736608299953132449886193870744": -double: 1 -idouble: 1 -Test "log10 (e) == log10(e)": -float: 1 -ifloat: 1 - -# tgamma -Test "tgamma (-0.5) == -2 sqrt (pi)": -double: 1 -idouble: 1 -Test "tgamma (0.7) == 1.29805533264755778568117117915281162": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# Maximal error of functions: -Function: "cos": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "erf": -double: 1 -idouble: 1 - -Function: "erfc": -double: 1 -idouble: 1 - -Function: "exp": -double: 1 -idouble: 1 - -Function: "expm1": -double: 1 -idouble: 1 - -Function: "hypot": -float: 1 -ifloat: 1 - -Function: "lgamma": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: "log": -float: 1 -ifloat: 1 - -Function: "log10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "tan": -double: 1 -idouble: 1 - -Function: "tgamma": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# end of automatic generation diff --git a/test/math/libm-test-ulps-powerpc b/test/math/libm-test-ulps-powerpc deleted file mode 100644 index 8516e915e..000000000 --- a/test/math/libm-test-ulps-powerpc +++ /dev/null @@ -1,1336 +0,0 @@ -# Begin of automatic generation - -# acos -Test "acos (2e-17) == 1.57079632679489659923132169163975144": -ildouble: 1 -ldouble: 1 - -# asin -Test "asin (0.75) == 0.848062078981481008052944338998418080": -ildouble: 2 -ldouble: 2 - -# atan2 -Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994379639112": -ildouble: 1 -ldouble: 1 -Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025": -float: 1 -ifloat: 1 -Test "atan2 (0.75, -1.0) == 2.49809154479650885165983415456218025": -float: 1 -ifloat: 1 -Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# atanh -Test "atanh (0.75) == 0.972955074527656652552676371721589865": -float: 1 -ifloat: 1 - -# cabs -Test "cabs (0.75 + 1.25 i) == 1.45773797371132511771853821938639577": -ildouble: 1 -ldouble: 1 - -# cacosh -Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": -double: 1 -float: 7 -idouble: 1 -ifloat: 7 -Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": -double: 1 -float: 3 -idouble: 1 -ifloat: 3 - -# casin -Test "Real part of: casin (-2 - 3 i) == -0.57065278432109940071028387968566963 - 1.9833870299165354323470769028940395 i": -ildouble: 1 -ldouble: 1 -Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# casinh -Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i": -double: 5 -float: 1 -idouble: 5 -ifloat: 1 -ildouble: 4 -ldouble: 4 -Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i": -double: 3 -float: 6 -idouble: 3 -ifloat: 6 -ildouble: 1 -ldouble: 1 -Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# catan -Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": -float: 3 -ifloat: 3 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i": -float: 4 -ifloat: 4 - -# catanh -Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": -double: 4 -idouble: 4 -Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": -float: 4 -ifloat: 4 -Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": -float: 6 -ifloat: 6 - -# cbrt -Test "cbrt (-27.0) == -3.0": -double: 1 -idouble: 1 -Test "cbrt (0.9921875) == 0.997389022060725270579075195353955217": -double: 1 -idouble: 1 - -# ccos -Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i": -float: 1 -ifloat: 1 -Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": -float: 1 -ifloat: 1 - -# ccosh -Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i": -float: 1 -ifloat: 1 -Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -# cexp -Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i": -float: 1 -ifloat: 1 -Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i": -ildouble: 1 -ldouble: 1 - -# clog -Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i": -float: 3 -ifloat: 3 -ildouble: 1 -ldouble: 1 -Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i": -ildouble: 1 -ldouble: 1 - -# clog10 -Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i": -double: 1 -float: 5 -idouble: 1 -ifloat: 5 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (-3 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (-inf + 0 i) == inf + pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (-inf + 1 i) == inf + pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (-inf + inf i) == inf + 3/4 pi*log10(e) i": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-inf - 0 i) == inf - pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (-inf - 1 i) == inf - pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (0 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i": -float: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 -Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (3 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (inf + inf i) == inf + pi/4*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (inf - inf i) == inf - pi/4*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# cos -Test "cos (M_PI_6l * 2.0) == 0.5": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "cos (M_PI_6l * 4.0) == -0.5": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "cos (pi/2) == 0": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "cos (16.0) == -0.9576594803233846418996372326511034717803" -ildouble: 2 -ldouble: 2 - -# cpow -Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i": -double: 1 -float: 4 -idouble: 1 -ifloat: 4 -Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i": -ildouble: 2 -ldouble: 2 -Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i) == 0.0846958290317209430433805274189191353 + 0.513285749182902449043287190519090481 i": -double: 2 -float: 3 -idouble: 2 -ifloat: 3 -Test "Real part of: cpow (2 + 0 i, 10 + 0 i) == 1024.0 + 0.0 i": -ildouble: 1 -ldouble: 1 -Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": -double: 1 -float: 5 -idouble: 1 -ifloat: 5 -Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": -float: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -# csinh -Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# csqrt -Test "Real part of: csqrt (-2 + 3 i) == 0.89597747612983812471573375529004348 + 1.6741492280355400404480393008490519 i": -float: 1 -ifloat: 1 -Test "Real part of: csqrt (-2 - 3 i) == 0.89597747612983812471573375529004348 - 1.6741492280355400404480393008490519 i": -float: 1 -ifloat: 1 - -# ctan -Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": -double: 1 -idouble: 1 -Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": -double: 1 -idouble: 1 - -# ctanh -Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i": -float: 1 -ifloat: 1 -Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -# erf -Test "erf (1.25) == 0.922900128256458230136523481197281140": -double: 1 -idouble: 1 - -# erfc -Test "erfc (0.75) == 0.288844366346484868401062165408589223": -float: 1 -ifloat: 1 -Test "erfc (2.0) == 0.00467773498104726583793074363274707139": -double: 1 -idouble: 1 -Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8": -double: 1 -idouble: 1 - -# exp -Test "exp (0.75) == 2.11700001661267466854536981983709561": -ildouble: 1 -ldouble: 1 -Test "exp (50.0) == 5184705528587072464087.45332293348538": -ildouble: 1 -ldouble: 1 - -# exp10 -Test "exp10 (-1) == 0.1": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "exp10 (0.75) == 5.62341325190349080394951039776481231": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "exp10 (3) == 1000": -double: 6 -float: 2 -idouble: 6 -ifloat: 2 -ildouble: 8 -ldouble: 8 - -# exp2 -Test "exp2 (10) == 1024": -ildouble: 2 -ldouble: 2 - -# expm1 -Test "expm1 (0.75) == 1.11700001661267466854536981983709561": -double: 1 -idouble: 1 -Test "expm1 (1) == M_El - 1.0": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# hypot -Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.75, 1.25) == 1.45773797371132511771853821938639577": -ildouble: 1 -ldouble: 1 -Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 - -# j0 -Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "j0 (10.0) == -0.245935764451348335197760862485328754": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "j0 (2.0) == 0.223890779141235668051827454649948626": -float: 2 -ifloat: 2 -Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "j0 (8.0) == 0.171650807137553906090869407851972001": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# j1 -Test "j1 (10.0) == 0.0434727461688614366697487680258592883": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "j1 (2.0) == 0.576724807756873387202448242269137087": -double: 1 -idouble: 1 -Test "j1 (8.0) == 0.234636346853914624381276651590454612": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -# jn -Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "jn (0, 10.0) == -0.245935764451348335197760862485328754": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (0, 2.0) == 0.223890779141235668051827454649948626": -float: 2 -ifloat: 2 -Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "jn (0, 8.0) == 0.171650807137553906090869407851972001": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "jn (1, 2.0) == 0.576724807756873387202448242269137087": -double: 1 -idouble: 1 -Test "jn (1, 8.0) == 0.234636346853914624381276651590454612": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "jn (10, -1.0) == 0.263061512368745320699785368779050294e-9": -ildouble: 1 -ldouble: 1 -Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (10, 1.0) == 0.263061512368745320699785368779050294e-9": -ildouble: 1 -ldouble: 1 -Test "jn (10, 10.0) == 0.207486106633358857697278723518753428": -float: 1 -ifloat: 1 -ildouble: 4 -ldouble: 4 -Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6": -float: 4 -ifloat: 4 -Test "jn (3, -1.0) == -0.0195633539826684059189053216217515083": -ildouble: 1 -ldouble: 1 -Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2": -double: 1 -idouble: 1 -Test "jn (3, 1.0) == 0.0195633539826684059189053216217515083": -ildouble: 1 -ldouble: 1 -Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "jn (3, 2.0) == 0.128943249474402051098793332969239835": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -# lgamma -Test "lgamma (0.7) == 0.260867246531666514385732417016759578": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 3 -ldouble: 3 - -# log10 -Test "log10 (0.75) == -0.124938736608299953132449886193870744": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "log10 (e) == log10(e)": -float: 1 -ifloat: 1 - -# log1p -Test "log1p (-0.25) == -0.287682072451780927439219005993827432": -float: 1 -ifloat: 1 - -# log2 -Test "log2 (e) == M_LOG2El": -ildouble: 1 -ldouble: 1 - -# sin -Test "sin (16.0) == -0.2879033166650652947844562482186175296207" -ildouble: 2 -ldouble: 2 - -# sincos -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": -float: 1 -ifloat: 1 - -# sinh -Test "sinh (0.75) == 0.822316731935829980703661634446913849": -ildouble: 1 -ldouble: 1 - -# tan -Test "tan (pi/4) == 1": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -# tanh -Test "tanh (-0.75) == -0.635148952387287319214434357312496495": -ildouble: 1 -ldouble: 1 -Test "tanh (0.75) == 0.635148952387287319214434357312496495": -ildouble: 1 -ldouble: 1 - -# tgamma -Test "tgamma (-0.5) == -2 sqrt (pi)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0.5) == sqrt (pi)": -float: 1 -ifloat: 1 -Test "tgamma (0.7) == 1.29805533264755778568117117915281162": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# y0 -Test "y0 (0.125) == -1.38968062514384052915582277745018693": -ildouble: 1 -ldouble: 1 -Test "y0 (0.75) == -0.137172769385772397522814379396581855": -ildouble: 1 -ldouble: 1 -Test "y0 (1.0) == 0.0882569642156769579829267660235151628": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "y0 (1.5) == 0.382448923797758843955068554978089862": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "y0 (10.0) == 0.0556711672835993914244598774101900481": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "y0 (2.0) == 0.510375672649745119596606592727157873": -double: 1 -idouble: 1 -Test "y0 (8.0) == 0.223521489387566220527323400498620359": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# y1 -Test "y1 (0.125) == -5.19993611253477499595928744876579921": -double: 1 -idouble: 1 -Test "y1 (1.5) == -0.412308626973911295952829820633445323": -float: 1 -ifloat: 1 -Test "y1 (10.0) == 0.249015424206953883923283474663222803": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "y1 (2.0) == -0.107032431540937546888370772277476637": -double: 1 -float: 1 -idouble: 2 -ifloat: 2 -Test "y1 (8.0) == -0.158060461731247494255555266187483550": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -# yn -Test "yn (0, 0.125) == -1.38968062514384052915582277745018693": -ildouble: 1 -ldouble: 1 -Test "yn (0, 0.75) == -0.137172769385772397522814379396581855": -ildouble: 1 -ldouble: 1 -Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "yn (0, 1.5) == 0.382448923797758843955068554978089862": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "yn (0, 2.0) == 0.510375672649745119596606592727157873": -double: 1 -idouble: 1 -Test "yn (0, 8.0) == 0.223521489387566220527323400498620359": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "yn (1, 0.125) == -5.19993611253477499595928744876579921": -double: 1 -idouble: 1 -Test "yn (1, 1.5) == -0.412308626973911295952829820633445323": -float: 2 -ifloat: 2 -Test "yn (1, 10.0) == 0.249015424206953883923283474663222803": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "yn (1, 2.0) == -0.107032431540937546888370772277476637": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (1, 8.0) == -0.158060461731247494255555266187483550": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "yn (3, 0.125) == -2612.69757350066712600220955744091741": -double: 1 -idouble: 1 -Test "yn (10, 0.125) == -127057845771019398.252538486899753195": -double: 1 -idouble: 1 -Test "yn (10, 0.75) == -2133501638.90573424452445412893839236": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "yn (10, 1.0) == -121618014.278689189288130426667971145": -float: 2 -ifloat: 2 -Test "yn (10, 10.0) == -0.359814152183402722051986577343560609": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "yn (10, 2.0) == -129184.542208039282635913145923304214": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "yn (3, 0.125) == -2612.69757350066712600220955744091741": -double: 1 -idouble: 1 -Test "yn (3, 0.75) == -12.9877176234475433186319774484809207": -float: 1 -ifloat: 1 -Test "yn (3, 10.0) == -0.251362657183837329779204747654240998": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "yn (3, 2.0) == -1.12778377684042778608158395773179238": -double: 1 -idouble: 1 - -# Maximal error of functions: -Function: "acos": -ildouble: 1 -ldouble: 1 - -Function: "acosh": -ildouble: 1 -ldouble: 1 - -Function: "asin": -ildouble: 2 -ldouble: 2 - -Function: "asinh": -ildouble: 1 -ldouble: 1 - -Function: "atan2": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "atanh": -float: 1 -ifloat: 1 - -Function: "cabs": -ildouble: 1 -ldouble: 1 - -Function: Real part of "cacos": -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "cacos": -ildouble: 1 -ldouble: 1 - -Function: Real part of "cacosh": -double: 1 -float: 7 -idouble: 1 -ifloat: 7 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "cacosh": -double: 1 -float: 3 -idouble: 1 -ifloat: 3 - -Function: Real part of "casin": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "casin": -ildouble: 1 -ldouble: 1 - -Function: Real part of "casinh": -double: 5 -float: 1 -idouble: 5 -ifloat: 1 -ildouble: 4 -ldouble: 4 - -Function: Imaginary part of "casinh": -double: 3 -float: 6 -idouble: 3 -ifloat: 6 -ildouble: 1 -ldouble: 1 - -Function: Real part of "catan": -float: 4 -ifloat: 4 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "catan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "catanh": -double: 4 -idouble: 4 - -Function: Imaginary part of "catanh": -float: 6 -ifloat: 6 - -Function: "cbrt": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "ccos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "ccos": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "ccosh": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Real part of "cexp": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Imaginary part of "cexp": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "clog": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Imaginary part of "clog": -float: 3 -ifloat: 3 -ildouble: 1 -ldouble: 1 - -Function: Real part of "clog10": -float: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 - -Function: Imaginary part of "clog10": -double: 1 -float: 5 -idouble: 1 -ifloat: 5 -ildouble: 1 -ldouble: 1 - -Function: "cos": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "cosh": -ildouble: 1 -ldouble: 1 - -Function: Real part of "cpow": -double: 2 -float: 5 -idouble: 2 -ifloat: 5 -ildouble: 2 -ldouble: 2 - -Function: Imaginary part of "cpow": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -Function: Imaginary part of "cproj": -ildouble: 1 -ldouble: 1 - -Function: Real part of "csin": -ildouble: 1 -ldouble: 1 - -Function: Real part of "csinh": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "csinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "csqrt": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "csqrt": -ildouble: 1 -ldouble: 1 - -Function: Real part of "ctan": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "ctan": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "ctanh": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "ctanh": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "erf": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: "erfc": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "exp": -ildouble: 1 -ldouble: 1 - -Function: "exp10": -double: 6 -float: 2 -idouble: 6 -ifloat: 2 -ildouble: 8 -ldouble: 8 - -Function: "exp2": -ildouble: 2 -ldouble: 2 - -Function: "expm1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "gamma": -ildouble: 1 -ldouble: 1 - -Function: "hypot": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "j0": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "j1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "jn": -double: 3 -float: 4 -idouble: 3 -ifloat: 4 -ildouble: 4 -ldouble: 4 - -Function: "lgamma": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 3 -ldouble: 3 - -Function: "log": -ildouble: 1 -ldouble: 1 - -Function: "log10": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "log1p": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "log2": -ildouble: 1 -ldouble: 1 - -Function: "pow": -ildouble: 1 -ldouble: 1 - -Function: "sin": -ildouble: 1 -ldouble: 1 - -Function: "sincos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "sinh": -ildouble: 1 -ldouble: 1 - -Function: "tan": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: "tanh": -ildouble: 1 -ldouble: 1 - -Function: "tgamma": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "y0": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "y1": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -Function: "yn": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -# end of automatic generation diff --git a/test/math/libm-test-ulps-sh b/test/math/libm-test-ulps-sh deleted file mode 100644 index 4831f4849..000000000 --- a/test/math/libm-test-ulps-sh +++ /dev/null @@ -1,1094 +0,0 @@ -# Begin of automatic generation - -# asin -Test "asin (-0.5) == -pi/6": -float: 2 -ifloat: 2 -Test "asin (0.5) == pi/6": -float: 2 -ifloat: 2 -Test "asin (0.7) == 0.7753974966107530637": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# atan2 -Test "atan2 (0.7, -1.0) == 2.530866689200584621918884506789267": -float: 3 -ifloat: 3 -Test "atan2 (-0.7, -1.0) == -2.530866689200584621918884506789267": -float: 3 -ifloat: 3 -Test "atan2 (1.4, -0.93) == 2.1571487668237843754887415992772736": -float: 4 -ifloat: 4 - -# atanh -Test "atanh (0.7) == 0.8673005276940531944": -double: 1 -idouble: 1 - -# cabs -Test "cabs (-0.7 + 12.4 i) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "cabs (-0.7 - 12.4 i) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "cabs (-12.4 + 0.7 i) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "cabs (-12.4 - 0.7 i) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "cabs (0.7 + 1.2 i) == 1.3892443989449804508432547041028554": -double: 1 -idouble: 1 -Test "cabs (0.7 + 12.4 i) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 - -# cacos -Test "Real part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i": -float: 1 -ifloat: 1 - -# cacosh -Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": -double: 1 -float: 7 -idouble: 1 -ifloat: 7 -Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": -double: 1 -float: 3 -idouble: 1 -ifloat: 3 -Test "Real part of: cacosh (0.7 + 1.2 i) == 1.0927647857577371459105272080819308 + 1.1351827477151551088992008271819053 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# casin -Test "Real part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -Test "Imaginary part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i": -float: 1 -ifloat: 1 - -# casinh -Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i": -double: 5 -float: 1 -idouble: 5 -ifloat: 1 -Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i": -double: 3 -float: 6 -idouble: 3 -ifloat: 6 -Test "Real part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i": -float: 1 -ifloat: 1 - -# catan -Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": -float: 3 -ifloat: 3 -Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i": -float: 4 -ifloat: 4 -Test "Imaginary part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i": -double: 1 -idouble: 1 - -# catanh -Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": -double: 4 -idouble: 4 -Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": -float: 4 -ifloat: 4 -Test "Real part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i": -double: 1 -float: 6 -idouble: 1 -ifloat: 6 - -# cbrt -Test "cbrt (-27.0) == -3.0": -double: 1 -idouble: 1 -Test "cbrt (0.970299) == 0.99": -double: 1 -idouble: 1 - -# ccos -Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i": -float: 1 -ifloat: 1 -Test "Real part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i": -double: 1 -idouble: 1 -Test "Imaginary part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i": -double: 1 -idouble: 1 - -# ccosh -Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i": -float: 1 -ifloat: 1 -Test "Real part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i": -double: 1 -idouble: 1 - -# cexp -Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i": -float: 1 -ifloat: 1 -Test "Real part of: cexp (0.7 + 1.2 i) == 0.7296989091503236012 + 1.8768962328348102821 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cexp (0.7 + 1.2 i) == 0.7296989091503236012 + 1.8768962328348102821 i": -float: 1 -ifloat: 1 - -# clog -Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i": -double: 1 -float: 3 -idouble: 1 -ifloat: 3 - -# clog10 -Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i": -double: 1 -float: 5 -idouble: 1 -ifloat: 5 -Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-3 - inf i) == inf - pi/2*log10(e) i": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + 0 i) == inf + pi*log10(e) i": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + 1 i) == inf + pi*log10(e) i": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf - 0 i) == inf - pi*log10(e) i": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf - 1 i) == inf - pi*log10(e) i": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0 + inf i) == inf + pi/2*log10(e) i": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0 - inf i) == inf - pi/2*log10(e) i": -float: 1 -ifloat: 1 -Test "Real part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (3 - inf i) == inf - pi/2*log10(e) i": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (inf + inf i) == inf + pi/4*log10(e) i": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (inf - inf i) == inf - pi/4*log10(e) i": -float: 1 -ifloat: 1 - -# cos -Test "cos (0.7) == 0.7648421872844884262": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "cos (M_PI_6l * 2.0) == 0.5": -double: 1 -float: 0.5 -idouble: 1 -ifloat: 0.5 -Test "cos (M_PI_6l * 4.0) == -0.5": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "cos (pi/2) == 0": -double: 0.2758 -float: 0.3667 -idouble: 0.2758 -ifloat: 0.3667 - -# cpow -Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": -double: 1 -float: 4 -idouble: 1 -ifloat: 4 -Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": -float: 2 -ifloat: 2 -Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i": -double: 1.1031 -float: 1.5 -idouble: 1.1031 -ifloat: 1.5 - -# csin -Test "Imaginary part of: csin (0.7 + 1.2 i) == 1.1664563419657581376 + 1.1544997246948547371 i": -float: 1 -ifloat: 1 - -# csinh -Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i": -double: 1 -idouble: 1 -Test "Real part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i": -float: 1 -ifloat: 1 -Test "Imaginary part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i": -float: 1 -ifloat: 1 - -# csqrt -Test "Real part of: csqrt (-2 + 3 i) == 0.89597747612983812471573375529004348 + 1.6741492280355400404480393008490519 i": -float: 1 -ifloat: 1 -Test "Real part of: csqrt (-2 - 3 i) == 0.89597747612983812471573375529004348 - 1.6741492280355400404480393008490519 i": -float: 1 -ifloat: 1 -Test "Real part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i": -float: 1 -ifloat: 1 - -# ctan -Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": -double: 1 -idouble: 1 -Test "Real part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# ctanh -Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i": -float: 1 -ifloat: 1 -Test "Real part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "Imaginary part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -# erfc -Test "erfc (0.7) == 0.32219880616258152702": -double: 1 -idouble: 1 -Test "erfc (1.2) == 0.089686021770364619762": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -Test "erfc (2.0) == 0.0046777349810472658379": -double: 1 -idouble: 1 -Test "erfc (4.1) == 0.67000276540848983727e-8": -double: 24 -float: 12 -idouble: 24 -ifloat: 12 - -# exp10 -Test "exp10 (-1) == 0.1": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "exp10 (0.7) == 5.0118723362727228500": -float: 1 -ifloat: 1 -Test "exp10 (3) == 1000": -double: 6 -float: 2 -idouble: 6 -ifloat: 2 - -# expm1 -Test "expm1 (1) == M_El - 1.0": -float: 1 -ifloat: 1 - -# fmod -Test "fmod (-6.5, -2.3) == -1.9": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "fmod (-6.5, 2.3) == -1.9": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "fmod (6.5, -2.3) == 1.9": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "fmod (6.5, 2.3) == 1.9": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -# hypot -Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, 1.2) == 1.3892443989449804508432547041028554": -double: 1 -idouble: 1 -Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 - -# j0 -Test "j0 (10.0) == -0.24593576445134833520": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "j0 (2.0) == 0.22389077914123566805": -float: 2 -ifloat: 2 -Test "j0 (8.0) == 0.17165080713755390609": -float: 1 -ifloat: 1 - -# j1 -Test "j1 (10.0) == 0.043472746168861436670": -float: 2 -ifloat: 2 -Test "j1 (2.0) == 0.57672480775687338720": -double: 1 -idouble: 1 -Test "j1 (8.0) == 0.23463634685391462438": -double: 1 -idouble: 1 - -# jn -Test "jn (0, 10.0) == -0.24593576445134833520": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "jn (0, 2.0) == 0.22389077914123566805": -float: 2 -ifloat: 2 -Test "jn (0, 8.0) == 0.17165080713755390609": -float: 1 -ifloat: 1 -Test "jn (1, 10.0) == 0.043472746168861436670": -float: 2 -ifloat: 2 -Test "jn (1, 2.0) == 0.57672480775687338720": -double: 1 -idouble: 1 -Test "jn (1, 8.0) == 0.23463634685391462438": -double: 1 -idouble: 1 -Test "jn (10, 0.1) == 0.26905328954342155795e-19": -double: 6 -float: 4 -idouble: 6 -ifloat: 4 -Test "jn (10, 0.7) == 0.75175911502153953928e-11": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "jn (10, 10.0) == 0.20748610663335885770": -double: 4 -float: 3 -idouble: 4 -ifloat: 3 -Test "jn (10, 2.0) == 0.25153862827167367096e-6": -float: 4 -ifloat: 4 -Test "jn (3, 0.1) == 0.000020820315754756261429": -double: 1 -idouble: 1 -Test "jn (3, 0.7) == 0.0069296548267508408077": -float: 1 -ifloat: 1 -Test "jn (3, 10.0) == 0.058379379305186812343": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "jn (3, 2.0) == 0.12894324947440205110": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# lgamma -Test "lgamma (0.7) == 0.260867246531666514385732417016759578": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# log -Test "log (0.7) == -0.35667494393873237891263871124118447": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# log10 -Test "log10 (0.7) == -0.15490195998574316929": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "log10 (e) == log10(e)": -float: 1 -ifloat: 1 - -# log1p -Test "log1p (-0.3) == -0.35667494393873237891263871124118447": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# log2 -Test "log2 (0.7) == -0.51457317282975824043": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# sincos -Test "sincos (0.7, &sin_res, &cos_res) puts 0.76484218728448842626 in cos_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": -double: 1 -float: 0.5 -idouble: 1 -ifloat: 0.5 -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.866025403784438646764 in sin_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res": -double: 0.2758 -float: 0.3667 -idouble: 0.2758 -ifloat: 0.3667 -Test "sincos (pi/6, &sin_res, &cos_res) puts 0.866025403784438646764 in cos_res": -float: 1 -ifloat: 1 - -# sinh -Test "sinh (0.7) == 0.75858370183953350346": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# tan -Test "tan (pi/4) == 1": -double: 0.5 -idouble: 0.5 - -# tanh -Test "tanh (0.7) == 0.60436777711716349631": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# tgamma -Test "tgamma (-0.5) == -2 sqrt (pi)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0.5) == sqrt (pi)": -float: 1 -ifloat: 1 -Test "tgamma (0.7) == 1.29805533264755778568117117915281162": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# y0 -Test "y0 (0.7) == -0.19066492933739506743": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "y0 (1.0) == 0.088256964215676957983": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "y0 (1.5) == 0.38244892379775884396": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "y0 (10.0) == 0.055671167283599391424": -float: 1 -ifloat: 1 -Test "y0 (8.0) == 0.22352148938756622053": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# y1 -Test "y1 (0.1) == -6.4589510947020269877": -double: 1 -idouble: 1 -Test "y1 (0.7) == -1.1032498719076333697": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "y1 (1.5) == -0.41230862697391129595": -float: 1 -ifloat: 1 -Test "y1 (10.0) == 0.24901542420695388392": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "y1 (2.0) == -0.10703243154093754689": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "y1 (8.0) == -0.15806046173124749426": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# yn -Test "yn (0, 0.7) == -0.19066492933739506743": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "yn (0, 1.0) == 0.088256964215676957983": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "yn (0, 1.5) == 0.38244892379775884396": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "yn (0, 10.0) == 0.055671167283599391424": -float: 1 -ifloat: 1 -Test "yn (0, 8.0) == 0.22352148938756622053": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (1, 0.1) == -6.4589510947020269877": -double: 1 -idouble: 1 -Test "yn (1, 0.7) == -1.1032498719076333697": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (1, 1.5) == -0.41230862697391129595": -float: 1 -ifloat: 1 -Test "yn (1, 10.0) == 0.24901542420695388392": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "yn (1, 2.0) == -0.10703243154093754689": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (1, 8.0) == -0.15806046173124749426": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "yn (10, 0.1) == -0.11831335132045197885e19": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -Test "yn (10, 0.7) == -0.42447194260703866924e10": -double: 3 -idouble: 3 -Test "yn (10, 1.0) == -0.12161801427868918929e9": -double: 1 -idouble: 1 -Test "yn (10, 10.0) == -0.35981415218340272205": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (10, 2.0) == -129184.54220803928264": -double: 2 -idouble: 2 -Test "yn (3, 0.1) == -5099.3323786129048894": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (3, 0.7) == -15.819479052819633505": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "yn (3, 10.0) == -0.25136265718383732978": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (3, 2.0) == -1.1277837768404277861": -double: 1 -idouble: 1 - -# Maximal error of functions: -Function: "asin": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: "atan2": -float: 4 -ifloat: 4 - -Function: "atanh": -double: 1 -idouble: 1 - -Function: "cabs": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "cacos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "cacos": -float: 1 -ifloat: 1 - -Function: Real part of "cacosh": -double: 1 -float: 7 -idouble: 1 -ifloat: 7 - -Function: Imaginary part of "cacosh": -double: 1 -float: 3 -idouble: 1 -ifloat: 3 - -Function: Real part of "casin": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 - -Function: Imaginary part of "casin": -float: 1 -ifloat: 1 - -Function: Real part of "casinh": -double: 5 -float: 1 -idouble: 5 -ifloat: 1 - -Function: Imaginary part of "casinh": -double: 3 -float: 6 -idouble: 3 -ifloat: 6 - -Function: Real part of "catan": -float: 4 -ifloat: 4 - -Function: Imaginary part of "catan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "catanh": -double: 4 -float: 1 -idouble: 4 -ifloat: 1 - -Function: Imaginary part of "catanh": -double: 1 -float: 6 -idouble: 1 -ifloat: 6 - -Function: "cbrt": -double: 1 -idouble: 1 - -Function: Real part of "ccos": -double: 1 -idouble: 1 - -Function: Imaginary part of "ccos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "cexp": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "cexp": -float: 1 -ifloat: 1 - -Function: Imaginary part of "clog": -double: 1 -float: 3 -idouble: 1 -ifloat: 3 - -Function: Real part of "clog10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "clog10": -double: 1 -float: 5 -idouble: 1 -ifloat: 5 - -Function: "cos": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: Real part of "cpow": -double: 1 -float: 4 -idouble: 1 -ifloat: 4 - -Function: Imaginary part of "cpow": -double: 1.1031 -float: 2 -idouble: 1.1031 -ifloat: 2 - -Function: Imaginary part of "csin": -float: 1 -ifloat: 1 - -Function: Real part of "csinh": -float: 1 -ifloat: 1 - -Function: Imaginary part of "csinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "csqrt": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "csqrt": -float: 1 -ifloat: 1 - -Function: Real part of "ctan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "ctan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "ctanh": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: Imaginary part of "ctanh": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "erfc": -double: 24 -float: 12 -idouble: 24 -ifloat: 12 - -Function: "exp10": -double: 6 -float: 2 -idouble: 6 -ifloat: 2 - -Function: "expm1": -float: 1 -ifloat: 1 - -Function: "fmod": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "hypot": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "j0": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: "j1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: "jn": -double: 6 -float: 4 -idouble: 6 -ifloat: 4 - -Function: "lgamma": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: "log": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "log10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "log1p": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "log2": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "sincos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "sinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "tan": -double: 0.5 -idouble: 0.5 - -Function: "tanh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "tgamma": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "y0": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "y1": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 - -Function: "yn": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 - -# end of automatic generation diff --git a/test/math/libm-test-ulps-sparc b/test/math/libm-test-ulps-sparc deleted file mode 100644 index 6a447a1e5..000000000 --- a/test/math/libm-test-ulps-sparc +++ /dev/null @@ -1,1338 +0,0 @@ -# Begin of automatic generation - -# atan2 -Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994379639112": -float: 6 -ifloat: 6 -ildouble: 1 -ldouble: 1 -Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025": -float: 3 -ifloat: 3 -ildouble: 1 -ldouble: 1 -Test "atan2 (0.75, -1.0) == 2.49809154479650885165983415456218025": -float: 3 -ifloat: 3 -ildouble: 1 -ldouble: 1 -Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# atanh -Test "atanh (0.75) == 0.972955074527656652552676371721589865": -float: 1 -ifloat: 1 - -# cacos -Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i": -ildouble: 1 -ldouble: 1 - -# cacosh -Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": -double: 1 -float: 7 -idouble: 1 -ifloat: 7 -ildouble: 5 -ldouble: 5 -Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": -double: 1 -float: 3 -idouble: 1 -ifloat: 3 -ildouble: 1 -ldouble: 1 - -# casin -Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": -ildouble: 1 -ldouble: 1 - -# casinh -Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i": -double: 5 -float: 1 -idouble: 5 -ifloat: 1 -ildouble: 4 -ldouble: 4 -Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i": -double: 3 -float: 6 -idouble: 3 -ifloat: 6 -ildouble: 2 -ldouble: 2 -Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# catan -Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": -float: 3 -ifloat: 3 -Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i": -float: 4 -ifloat: 4 -Test "Imaginary part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i": -ildouble: 1 -ldouble: 1 - -# catanh -Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": -double: 4 -idouble: 4 -Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": -float: 4 -ifloat: 4 -Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": -float: 6 -ifloat: 6 -ildouble: 1 -ldouble: 1 - -# cbrt -Test "cbrt (-0.001) == -0.1": -ildouble: 1 -ldouble: 1 -Test "cbrt (-27.0) == -3.0": -double: 1 -idouble: 1 -Test "cbrt (0.75) == 0.908560296416069829445605878163630251": -double: 1 -idouble: 1 -Test "cbrt (0.9921875) == 0.997389022060725270579075195353955217": -double: 1 -idouble: 1 - -# ccos -Test "Real part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": -float: 1 -ifloat: 1 - -# ccosh -Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i": -float: 1 -ifloat: 1 - -# cexp -Test "Real part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i": -float: 1 -ifloat: 1 -Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i": -ildouble: 1 -ldouble: 1 - -# clog -Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i": -float: 3 -ifloat: 3 -Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# clog10 -Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i": -double: 1 -float: 5 -idouble: 1 -ifloat: 5 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-3 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + 0 i) == inf + pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + 1 i) == inf + pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + inf i) == inf + 3/4 pi*log10(e) i": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-inf - 0 i) == inf - pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf - 1 i) == inf - pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (3 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (inf + inf i) == inf + pi/4*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (inf - inf i) == inf - pi/4*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# cos -Test "cos (M_PI_6l * 2.0) == 0.5": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "cos (M_PI_6l * 4.0) == -0.5": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "cos (pi/2) == 0": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# cpow -Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": -float: 1 -ifloat: 1 -Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": -float: 1 -ifloat: 1 -Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i": -double: 1 -float: 4 -idouble: 1 -ifloat: 4 -ildouble: 4 -ldouble: 4 -Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i": -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i": -ildouble: 1 -ldouble: 1 -Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i) == 0.0846958290317209430433805274189191353 + 0.513285749182902449043287190519090481 i": -double: 2 -float: 3 -idouble: 2 -ifloat: 3 -ildouble: 1 -ldouble: 1 -Test "Real part of: cpow (2 + 0 i, 10 + 0 i) == 1024.0 + 0.0 i": -ildouble: 2 -ldouble: 2 -Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": -double: 1 -float: 4 -idouble: 1 -ifloat: 4 -ildouble: 3 -ldouble: 3 -Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": -float: 2 -ifloat: 2 -Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -# csin -Test "Imaginary part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i": -ildouble: 1 -ldouble: 1 -Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i": -ildouble: 1 -ldouble: 1 - -# csinh -Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i": -double: 1 -idouble: 1 -Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i": -float: 1 -ifloat: 1 -Test "Imaginary part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i": -float: 1 -ifloat: 1 - -# csqrt -Test "Real part of: csqrt (-2 + 3 i) == 0.89597747612983812471573375529004348 + 1.6741492280355400404480393008490519 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: csqrt (-2 - 3 i) == 0.89597747612983812471573375529004348 - 1.6741492280355400404480393008490519 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csqrt (0.75 + 1.25 i) == 1.05065169626078392338656675760808326 + 0.594868882070379067881984030639932657 i": -ildouble: 1 -ldouble: 1 - -# ctan -Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": -double: 1 -idouble: 1 -ildouble: 2 -ldouble: 2 - -# ctanh -Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i": -float: 1 -ifloat: 1 -Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i": -double: 1 -idouble: 1 - -# erf -Test "erf (0.75) == 0.711155633653515131598937834591410777": -double: 1 -idouble: 1 -Test "erf (1.25) == 0.922900128256458230136523481197281140": -double: 1 -idouble: 1 - -# erfc -Test "erfc (2.0) == 0.00467773498104726583793074363274707139": -double: 1 -idouble: 1 -Test "erfc (27.0) == 0.523704892378925568501606768284954709e-318": -ildouble: 1 -ldouble: 1 -Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8": -double: 1 -idouble: 1 - -# exp -Test "exp (1) == e": -double: 1 -idouble: 1 - -# exp10 -Test "exp10 (-1) == 0.1": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "exp10 (0.75) == 5.62341325190349080394951039776481231": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "exp10 (3) == 1000": -double: 6 -float: 2 -idouble: 6 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -# exp2 -Test "exp2 (10) == 1024": -ildouble: 2 -ldouble: 2 - -# expm1 -Test "expm1 (0.75) == 1.11700001661267466854536981983709561": -double: 1 -idouble: 1 -Test "expm1 (1) == M_El - 1.0": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# gamma -Test "gamma (-0.5) == log(2*sqrt(pi))": -ildouble: 1 -ldouble: 1 - -# hypot -Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 - -# j0 -Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "j0 (0.75) == 0.864242275166648623555731103820923211": -float: 1 -ifloat: 1 -Test "j0 (10.0) == -0.245935764451348335197760862485328754": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "j0 (2.0) == 0.223890779141235668051827454649948626": -float: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "j0 (8.0) == 0.171650807137553906090869407851972001": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# j1 -Test "j1 (-1.0) == -0.440050585744933515959682203718914913": -ildouble: 1 -ldouble: 1 -Test "j1 (0.75) == 0.349243602174862192523281016426251335": -ildouble: 1 -ldouble: 1 -Test "j1 (1.0) == 0.440050585744933515959682203718914913": -ildouble: 1 -ldouble: 1 -Test "j1 (10.0) == 0.0434727461688614366697487680258592883": -float: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "j1 (2.0) == 0.576724807756873387202448242269137087": -double: 1 -idouble: 1 -Test "j1 (8.0) == 0.234636346853914624381276651590454612": -double: 1 -idouble: 1 -ildouble: 4 -ldouble: 4 - -# jn -Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (0, 0.75) == 0.864242275166648623555731103820923211": -float: 1 -ifloat: 1 -Test "jn (0, 10.0) == -0.245935764451348335197760862485328754": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "jn (0, 2.0) == 0.223890779141235668051827454649948626": -float: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (0, 8.0) == 0.171650807137553906090869407851972001": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (1, -1.0) == -0.440050585744933515959682203718914913": -ildouble: 1 -ldouble: 1 -Test "jn (1, 0.75) == 0.349243602174862192523281016426251335": -ildouble: 1 -ldouble: 1 -Test "jn (1, 1.0) == 0.440050585744933515959682203718914913": -ildouble: 1 -ldouble: 1 -Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883": -float: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "jn (1, 2.0) == 0.576724807756873387202448242269137087": -double: 1 -idouble: 1 -Test "jn (1, 8.0) == 0.234636346853914624381276651590454612": -double: 1 -idouble: 1 -ildouble: 4 -ldouble: 4 -Test "jn (10, -1.0) == 0.263061512368745320699785368779050294e-9": -ildouble: 1 -ldouble: 1 -Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (10, 1.0) == 0.263061512368745320699785368779050294e-9": -ildouble: 1 -ldouble: 1 -Test "jn (10, 10.0) == 0.207486106633358857697278723518753428": -double: 4 -float: 3 -idouble: 4 -ifloat: 3 -ildouble: 2 -ldouble: 2 -Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6": -float: 4 -ifloat: 4 -Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "jn (3, 2.0) == 0.128943249474402051098793332969239835": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# lgamma -Test "lgamma (-0.5) == log(2*sqrt(pi))": -ildouble: 1 -ldouble: 1 -Test "lgamma (0.7) == 0.260867246531666514385732417016759578": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -# log10 -Test "log10 (0.75) == -0.124938736608299953132449886193870744": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "log10 (e) == log10(e)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# log1p -Test "log1p (-0.25) == -0.287682072451780927439219005993827432": -float: 1 -ifloat: 1 -Test "log1p (M_El - 1.0) == 1": -ildouble: 1 -ldouble: 1 - -# log2 -Test "log2 (0.75) == -.415037499278843818546261056052183492": -ildouble: 1 -ldouble: 1 - -# sincos -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": -float: 1 -ifloat: 1 - -# sqrt -Test "sqrt (2) == M_SQRT2l": -ildouble: 1 -ldouble: 1 - -# tan -Test "tan (pi/4) == 1": -double: 1 -idouble: 1 - -# tanh -Test "tanh (-0.75) == -0.635148952387287319214434357312496495": -ildouble: 1 -ldouble: 1 -Test "tanh (-1.0) == -0.7615941559557648881194582826047935904": -ildouble: 1 -ldouble: 1 -Test "tanh (0.75) == 0.635148952387287319214434357312496495": -ildouble: 1 -ldouble: 1 -Test "tanh (1.0) == 0.7615941559557648881194582826047935904": -ildouble: 1 -ldouble: 1 - -# tgamma -Test "tgamma (-0.5) == -2 sqrt (pi)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (0.5) == sqrt (pi)": -float: 1 -ifloat: 1 -Test "tgamma (0.7) == 1.29805533264755778568117117915281162": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (4) == 6": -ildouble: 1 -ldouble: 1 - -# y0 -Test "y0 (1.0) == 0.0882569642156769579829267660235151628": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "y0 (1.5) == 0.382448923797758843955068554978089862": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "y0 (10.0) == 0.0556711672835993914244598774101900481": -float: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 -Test "y0 (8.0) == 0.223521489387566220527323400498620359": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 - -# y1 -Test "y1 (0.125) == -5.19993611253477499595928744876579921": -double: 1 -idouble: 1 -Test "y1 (0.75) == -1.03759455076928541973767132140642198": -ildouble: 1 -ldouble: 1 -Test "y1 (1.5) == -0.412308626973911295952829820633445323": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "y1 (10.0) == 0.249015424206953883923283474663222803": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "y1 (2.0) == -0.107032431540937546888370772277476637": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "y1 (8.0) == -0.158060461731247494255555266187483550": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -# yn -Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "yn (0, 1.5) == 0.382448923797758843955068554978089862": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481": -float: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 -Test "yn (0, 8.0) == 0.223521489387566220527323400498620359": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 -Test "yn (1, 0.125) == -5.19993611253477499595928744876579921": -double: 1 -idouble: 1 -Test "yn (1, 0.75) == -1.03759455076928541973767132140642198": -ildouble: 1 -ldouble: 1 -Test "yn (1, 1.5) == -0.412308626973911295952829820633445323": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "yn (1, 10.0) == 0.249015424206953883923283474663222803": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "yn (1, 2.0) == -0.107032431540937546888370772277476637": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "yn (1, 8.0) == -0.158060461731247494255555266187483550": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "yn (10, 0.125) == -127057845771019398.252538486899753195": -double: 1 -idouble: 1 -ildouble: 2 -ldouble: 2 -Test "yn (10, 0.75) == -2133501638.90573424452445412893839236": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 5 -ldouble: 5 -Test "yn (10, 1.0) == -121618014.278689189288130426667971145": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "yn (10, 10.0) == -0.359814152183402722051986577343560609": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "yn (10, 2.0) == -129184.542208039282635913145923304214": -double: 2 -idouble: 2 -ildouble: 2 -ldouble: 2 -Test "yn (3, 0.125) == -2612.69757350066712600220955744091741": -double: 1 -idouble: 1 -Test "yn (3, 0.75) == -12.9877176234475433186319774484809207": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "yn (3, 10.0) == -0.251362657183837329779204747654240998": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "yn (3, 2.0) == -1.12778377684042778608158395773179238": -double: 1 -idouble: 1 - -# Maximal error of functions: -Function: "atan2": -float: 6 -ifloat: 6 -ildouble: 1 -ldouble: 1 - -Function: "atanh": -float: 1 -ifloat: 1 - -Function: Imaginary part of "cacos": -ildouble: 1 -ldouble: 1 - -Function: Real part of "cacosh": -double: 1 -float: 7 -idouble: 1 -ifloat: 7 -ildouble: 5 -ldouble: 5 - -Function: Imaginary part of "cacosh": -double: 1 -float: 3 -idouble: 1 -ifloat: 3 -ildouble: 1 -ldouble: 1 - -Function: Real part of "casin": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "casin": -ildouble: 1 -ldouble: 1 - -Function: Real part of "casinh": -double: 5 -float: 1 -idouble: 5 -ifloat: 1 -ildouble: 4 -ldouble: 4 - -Function: Imaginary part of "casinh": -double: 3 -float: 6 -idouble: 3 -ifloat: 6 -ildouble: 2 -ldouble: 2 - -Function: Real part of "catan": -float: 4 -ifloat: 4 - -Function: Imaginary part of "catan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "catanh": -double: 4 -idouble: 4 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "catanh": -float: 6 -ifloat: 6 -ildouble: 1 -ldouble: 1 - -Function: "cbrt": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "ccos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "ccos": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "ccosh": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "cexp": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "cexp": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "clog": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "clog": -float: 3 -ifloat: 3 - -Function: Real part of "clog10": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "clog10": -double: 1 -float: 5 -idouble: 1 -ifloat: 5 -ildouble: 1 -ldouble: 1 - -Function: "cos": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "cpow": -double: 2 -float: 4 -idouble: 2 -ifloat: 4 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "cpow": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: Real part of "csin": -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "csin": -ildouble: 1 -ldouble: 1 - -Function: Real part of "csinh": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "csinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "csqrt": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "csqrt": -ildouble: 1 -ldouble: 1 - -Function: Real part of "ctan": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "ctan": -double: 1 -idouble: 1 -ildouble: 2 -ldouble: 2 - -Function: Real part of "ctanh": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "ctanh": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "erf": -double: 1 -idouble: 1 - -Function: "erfc": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: "exp": -double: 1 -idouble: 1 - -Function: "exp10": -double: 6 -float: 2 -idouble: 6 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "exp2": -ildouble: 2 -ldouble: 2 - -Function: "expm1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "gamma": -ildouble: 1 -ldouble: 1 - -Function: "hypot": -float: 1 -ifloat: 1 - -Function: "j0": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -Function: "j1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 4 -ldouble: 4 - -Function: "jn": -double: 4 -float: 4 -idouble: 4 -ifloat: 4 -ildouble: 4 -ldouble: 4 - -Function: "lgamma": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "log": -float: 1 -ifloat: 1 - -Function: "log10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "log1p": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "log2": -ildouble: 1 -ldouble: 1 - -Function: "sincos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "sqrt": -ildouble: 1 -ldouble: 1 - -Function: "tan": -double: 1 -idouble: 1 - -Function: "tanh": -ildouble: 1 -ldouble: 1 - -Function: "tgamma": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "y0": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 3 -ldouble: 3 - -Function: "y1": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "yn": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -ildouble: 5 -ldouble: 5 - -# end of automatic generation diff --git a/test/math/libm-test-ulps-x86_64 b/test/math/libm-test-ulps-x86_64 deleted file mode 100644 index 5e8cf2e7c..000000000 --- a/test/math/libm-test-ulps-x86_64 +++ /dev/null @@ -1,1328 +0,0 @@ -# Begin of automatic generation - -# acos -Test "acos (0.75) == 0.722734247813415611178377352641333362": -ildouble: 1 -ldouble: 1 - -# asin -Test "asin (-0.5) == -pi/6": -ildouble: 1 -ldouble: 1 -Test "asin (-1.0) == -pi/2": -ildouble: 1 -ldouble: 1 -Test "asin (0.5) == pi/6": -ildouble: 1 -ldouble: 1 -Test "asin (0.75) == 0.848062078981481008052944338998418080": -ildouble: 1 -ldouble: 1 -Test "asin (1.0) == pi/2": -ildouble: 1 -ldouble: 1 - -# atan2 -Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025": -float: 1 -ifloat: 1 -Test "atan2 (0.75, -1.0) == 2.49809154479650885165983415456218025": -float: 1 -ifloat: 1 -Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772": -float: 1 -ifloat: 1 - -# atanh -Test "atanh (0.75) == 0.972955074527656652552676371721589865": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# cacos -Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -# cacosh -Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": -double: 1 -float: 7 -idouble: 1 -ifloat: 7 -ildouble: 6 -ldouble: 6 -Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": -double: 1 -float: 3 -idouble: 1 -ifloat: 3 -ildouble: 1 -ldouble: 1 -Test "Real part of: cacosh (0.75 + 1.25 i) == 1.13239363160530819522266333696834467 + 1.11752014915610270578240049553777969 i": -ildouble: 1 -ldouble: 1 - -# casin -Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -# casinh -Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i": -double: 5 -float: 1 -idouble: 5 -ifloat: 1 -ildouble: 5 -ldouble: 5 -Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i": -double: 3 -float: 6 -idouble: 3 -ifloat: 6 -ildouble: 5 -ldouble: 5 -Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# catan -Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": -float: 3 -ifloat: 3 -Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i": -float: 4 -ifloat: 4 - -# catanh -Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": -double: 4 -idouble: 4 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": -float: 4 -ifloat: 4 -Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": -float: 6 -ifloat: 6 - -# cbrt -Test "cbrt (-0.001) == -0.1": -ildouble: 1 -ldouble: 1 -Test "cbrt (-27.0) == -3.0": -double: 1 -idouble: 1 -Test "cbrt (0.75) == 0.908560296416069829445605878163630251": -double: 1 -idouble: 1 -Test "cbrt (0.9921875) == 0.997389022060725270579075195353955217": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -# ccos -Test "Real part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i": -double: 1 -idouble: 1 -Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# ccosh -Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i": -float: 1 -ifloat: 1 - -# cexp -Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i": -float: 1 -ifloat: 1 -Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i": -float: 1 -ifloat: 1 -Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i": -ildouble: 1 -ldouble: 1 - -# clog -Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i": -float: 3 -ifloat: 3 -Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# clog10 -Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i": -double: 1 -float: 5 -idouble: 1 -ifloat: 5 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-3 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + 0 i) == inf + pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + 1 i) == inf + pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + inf i) == inf + 3/4 pi*log10(e) i": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-inf - 0 i) == inf - pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf - 1 i) == inf - pi*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (3 - inf i) == inf - pi/2*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (inf + inf i) == inf + pi/4*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (inf - inf i) == inf - pi/4*log10(e) i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# cos -Test "cos (0.80190127184058835) == 0.69534156199418473": -double: 1 -idouble: 1 -Test "cos (M_PI_6l * 2.0) == 0.5": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "cos (M_PI_6l * 4.0) == -0.5": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "cos (pi/2) == 0": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# cpow -Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i": -double: 1 -float: 4 -idouble: 1 -ifloat: 4 -ildouble: 5 -ldouble: 5 -Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i": -ildouble: 2 -ldouble: 2 -Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i": -ildouble: 1 -ldouble: 1 -Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i) == 0.0846958290317209430433805274189191353 + 0.513285749182902449043287190519090481 i": -double: 2 -float: 3 -idouble: 2 -ifloat: 3 -ildouble: 3 -ldouble: 3 -Test "Real part of: cpow (2 + 0 i, 10 + 0 i) == 1024.0 + 0.0 i": -ildouble: 1 -ldouble: 1 -Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": -double: 1 -float: 5 -idouble: 1 -ifloat: 5 -Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": -float: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 -Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -# csin -Test "Imaginary part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i": -double: 1 -idouble: 1 -Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i": -float: 1 -ifloat: 1 - -# csinh -Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i": -double: 1 -idouble: 1 -Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i": -double: 1 -idouble: 1 -ildouble: 2 -ldouble: 2 -Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i": -float: 1 -ifloat: 1 - -# csqrt -Test "Real part of: csqrt (-2 + 3 i) == 0.89597747612983812471573375529004348 + 1.6741492280355400404480393008490519 i": -float: 1 -ifloat: 1 -Test "Real part of: csqrt (-2 - 3 i) == 0.89597747612983812471573375529004348 - 1.6741492280355400404480393008490519 i": -float: 1 -ifloat: 1 - -# ctan -Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": -double: 1 -idouble: 1 -ildouble: 439 -ldouble: 439 -Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "Real part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": -ildouble: 1 -ldouble: 1 -Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 - -# ctanh -Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 5 -ldouble: 5 -Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": -ildouble: 25 -ldouble: 25 -Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i": -float: 1 -ifloat: 1 -Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i": -double: 1 -idouble: 1 -Test "Imaginary part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -# erf -Test "erf (0.75) == 0.711155633653515131598937834591410777": -double: 1 -idouble: 1 -Test "erf (1.25) == 0.922900128256458230136523481197281140": -double: 1 -idouble: 1 - -# erfc -Test "erfc (1.25) == 0.0770998717435417698634765188027188596": -ildouble: 1 -ldouble: 1 -Test "erfc (2.0) == 0.00467773498104726583793074363274707139": -double: 1 -idouble: 1 -Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -# exp -Test "exp (1) == e": -double: 1 -idouble: 1 - -# exp10 -Test "exp10 (-1) == 0.1": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "exp10 (0.75) == 5.62341325190349080394951039776481231": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "exp10 (3) == 1000": -double: 6 -float: 2 -idouble: 6 -ifloat: 2 -ildouble: 8 -ldouble: 8 - -# expm1 -Test "expm1 (0.75) == 1.11700001661267466854536981983709561": -double: 1 -idouble: 1 -Test "expm1 (1) == M_El - 1.0": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# gamma -Test "gamma (-0.5) == log(2*sqrt(pi))": -ildouble: 1 -ldouble: 1 - -# hypot -Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 - -# j0 -Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "j0 (0.75) == 0.864242275166648623555731103820923211": -float: 1 -ifloat: 1 -Test "j0 (10.0) == -0.245935764451348335197760862485328754": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "j0 (2.0) == 0.223890779141235668051827454649948626": -float: 2 -ifloat: 2 -Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "j0 (8.0) == 0.171650807137553906090869407851972001": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -# j1 -Test "j1 (10.0) == 0.0434727461688614366697487680258592883": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "j1 (2.0) == 0.576724807756873387202448242269137087": -double: 1 -idouble: 1 -Test "j1 (8.0) == 0.234636346853914624381276651590454612": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -# jn -Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (0, 0.75) == 0.864242275166648623555731103820923211": -float: 1 -ifloat: 1 -Test "jn (0, 10.0) == -0.245935764451348335197760862485328754": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "jn (0, 2.0) == 0.223890779141235668051827454649948626": -float: 2 -ifloat: 2 -Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (0, 8.0) == 0.171650807137553906090869407851972001": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883": -float: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "jn (1, 2.0) == 0.576724807756873387202448242269137087": -double: 1 -idouble: 1 -Test "jn (1, 8.0) == 0.234636346853914624381276651590454612": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "jn (10, -1.0) == 0.263061512368745320699785368779050294e-9": -ildouble: 1 -ldouble: 1 -Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "jn (10, 1.0) == 0.263061512368745320699785368779050294e-9": -ildouble: 1 -ldouble: 1 -Test "jn (10, 10.0) == 0.207486106633358857697278723518753428": -double: 4 -float: 3 -idouble: 4 -ifloat: 3 -ildouble: 2 -ldouble: 2 -Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6": -float: 4 -ifloat: 4 -ildouble: 1 -ldouble: 1 -Test "jn (3, -1.0) == -0.0195633539826684059189053216217515083": -ildouble: 1 -ldouble: 1 -Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (3, 1.0) == 0.0195633539826684059189053216217515083": -ildouble: 1 -ldouble: 1 -Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "jn (3, 2.0) == 0.128943249474402051098793332969239835": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -# lgamma -Test "lgamma (-0.5) == log(2*sqrt(pi))": -ildouble: 1 -ldouble: 1 -Test "lgamma (0.7) == 0.260867246531666514385732417016759578": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -# log10 -Test "log10 (0.75) == -0.124938736608299953132449886193870744": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "log10 (e) == log10(e)": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# log1p -Test "log1p (-0.25) == -0.287682072451780927439219005993827432": -float: 1 -ifloat: 1 - -# sincos -Test "sincos (0.80190127184058835, &sin_res, &cos_res) puts 0.69534156199418473 in cos_res": -double: 1 -idouble: 1 -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": -float: 1 -ifloat: 1 - -# tan -Test "tan (pi/4) == 1": -double: 1 -idouble: 1 - -# tgamma -Test "tgamma (-0.5) == -2 sqrt (pi)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "tgamma (0.5) == sqrt (pi)": -float: 1 -ifloat: 1 -Test "tgamma (0.7) == 1.29805533264755778568117117915281162": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (4) == 6": -ildouble: 1 -ldouble: 1 - -# y0 -Test "y0 (0.125) == -1.38968062514384052915582277745018693": -ildouble: 1 -ldouble: 1 -Test "y0 (1.0) == 0.0882569642156769579829267660235151628": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "y0 (1.5) == 0.382448923797758843955068554978089862": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "y0 (10.0) == 0.0556711672835993914244598774101900481": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "y0 (8.0) == 0.223521489387566220527323400498620359": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -# y1 -Test "y1 (0.125) == -5.19993611253477499595928744876579921": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "y1 (1.5) == -0.412308626973911295952829820633445323": -float: 1 -ifloat: 1 -Test "y1 (10.0) == 0.249015424206953883923283474663222803": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "y1 (2.0) == -0.107032431540937546888370772277476637": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "y1 (8.0) == -0.158060461731247494255555266187483550": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -# yn -Test "yn (0, 0.125) == -1.38968062514384052915582277745018693": -ildouble: 1 -ldouble: 1 -Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "yn (0, 1.5) == 0.382448923797758843955068554978089862": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "yn (0, 8.0) == 0.223521489387566220527323400498620359": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "yn (1, 0.125) == -5.19993611253477499595928744876579921": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "yn (1, 1.5) == -0.412308626973911295952829820633445323": -float: 1 -ifloat: 1 -Test "yn (1, 10.0) == 0.249015424206953883923283474663222803": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "yn (1, 2.0) == -0.107032431540937546888370772277476637": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 -Test "yn (1, 8.0) == -0.158060461731247494255555266187483550": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 -Test "yn (10, 0.125) == -127057845771019398.252538486899753195": -double: 1 -idouble: 1 -ildouble: 2 -ldouble: 2 -Test "yn (10, 0.75) == -2133501638.90573424452445412893839236": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 4 -ldouble: 4 -Test "yn (10, 1.0) == -121618014.278689189288130426667971145": -double: 1 -idouble: 1 -Test "yn (10, 10.0) == -0.359814152183402722051986577343560609": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (10, 2.0) == -129184.542208039282635913145923304214": -double: 2 -idouble: 2 -Test "yn (3, 0.125) == -2612.69757350066712600220955744091741": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 -Test "yn (3, 0.75) == -12.9877176234475433186319774484809207": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 -Test "yn (3, 10.0) == -0.251362657183837329779204747654240998": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (3, 2.0) == -1.12778377684042778608158395773179238": -double: 1 -idouble: 1 - -# Maximal error of functions: -Function: "acos": -ildouble: 1 -ldouble: 1 - -Function: "asin": -ildouble: 1 -ldouble: 1 - -Function: "atan2": -float: 1 -ifloat: 1 - -Function: "atanh": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "cacos": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Real part of "cacosh": -double: 1 -float: 7 -idouble: 1 -ifloat: 7 -ildouble: 6 -ldouble: 6 - -Function: Imaginary part of "cacosh": -double: 1 -float: 3 -idouble: 1 -ifloat: 3 -ildouble: 1 -ldouble: 1 - -Function: Real part of "casin": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Imaginary part of "casin": -float: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Real part of "casinh": -double: 5 -float: 1 -idouble: 5 -ifloat: 1 -ildouble: 5 -ldouble: 5 - -Function: Imaginary part of "casinh": -double: 3 -float: 6 -idouble: 3 -ifloat: 6 -ildouble: 5 -ldouble: 5 - -Function: Real part of "catan": -float: 4 -ifloat: 4 - -Function: Imaginary part of "catan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "catanh": -double: 4 -idouble: 4 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "catanh": -float: 6 -ifloat: 6 - -Function: "cbrt": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "ccos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "ccos": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "cexp": -float: 1 -ifloat: 1 - -Function: Imaginary part of "cexp": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "clog": -float: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "clog": -float: 3 -ifloat: 3 - -Function: Real part of "clog10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "clog10": -double: 1 -float: 5 -idouble: 1 -ifloat: 5 -ildouble: 1 -ldouble: 1 - -Function: "cos": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Real part of "cpow": -double: 2 -float: 5 -idouble: 2 -ifloat: 5 -ildouble: 5 -ldouble: 5 - -Function: Imaginary part of "cpow": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -ildouble: 2 -ldouble: 2 - -Function: Real part of "csin": -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "csin": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "csinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: Imaginary part of "csinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 2 -ldouble: 2 - -Function: Real part of "csqrt": -float: 1 -ifloat: 1 - -Function: Real part of "ctan": -double: 1 -idouble: 1 -ildouble: 439 -ldouble: 439 - -Function: Imaginary part of "ctan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 3 -ldouble: 3 - -Function: Real part of "ctanh": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 5 -ldouble: 5 - -Function: Imaginary part of "ctanh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 25 -ldouble: 25 - -Function: "erf": -double: 1 -idouble: 1 - -Function: "erfc": -double: 1 -idouble: 1 -ildouble: 1 -ldouble: 1 - -Function: "exp": -double: 1 -idouble: 1 - -Function: "exp10": -double: 6 -float: 2 -idouble: 6 -ifloat: 2 -ildouble: 8 -ldouble: 8 - -Function: "expm1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "gamma": -ildouble: 1 -ldouble: 1 - -Function: "hypot": -float: 1 -ifloat: 1 - -Function: "j0": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "j1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "jn": -double: 4 -float: 4 -idouble: 4 -ifloat: 4 -ildouble: 2 -ldouble: 2 - -Function: "lgamma": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "log": -float: 1 -ifloat: 1 - -Function: "log10": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "log1p": -float: 1 -ifloat: 1 - -Function: "nexttoward": -double: 1 -idouble: 1 - -Function: "sincos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "tan": -double: 1 -idouble: 1 - -Function: "tgamma": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "y0": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -ildouble: 1 -ldouble: 1 - -Function: "y1": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -ildouble: 1 -ldouble: 1 - -Function: "yn": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 -ildouble: 4 -ldouble: 4 - -# end of automatic generation diff --git a/test/math/libm-test-ulps-xtensa b/test/math/libm-test-ulps-xtensa deleted file mode 100644 index 46b2ac559..000000000 --- a/test/math/libm-test-ulps-xtensa +++ /dev/null @@ -1,145 +0,0 @@ -# Begin of automatic generation - -# cos -Test "cos (M_PI_6l * 2.0) == 0.5": -double: 1 -idouble: 1 -Test "cos (M_PI_6l * 4.0) == -0.5": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -# erf -Test "erf (0.75) == 0.711155633653515131598937834591410777": -double: 1 -idouble: 1 -Test "erf (1.25) == 0.922900128256458230136523481197281140": -double: 1 -idouble: 1 - -# erfc -Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8": -double: 1 -idouble: 1 - -# exp -Test "exp (1) == e": -double: 1 -idouble: 1 - -# expm1 -Test "expm1 (0.75) == 1.11700001661267466854536981983709561": -double: 1 -idouble: 1 - -# hypot -Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 -Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271": -float: 1 -ifloat: 1 - -# lgamma -Test "lgamma (0.7) == 0.260867246531666514385732417016759578": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# log10 -Test "log10 (0.75) == -0.124938736608299953132449886193870744": -double: 1 -idouble: 1 -Test "log10 (e) == log10(e)": -float: 1 -ifloat: 1 - -# tgamma -Test "tgamma (-0.5) == -2 sqrt (pi)": -double: 1 -idouble: 1 -Test "tgamma (0.7) == 1.29805533264755778568117117915281162": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# Maximal error of functions: -Function: "cos": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "erf": -double: 1 -idouble: 1 - -Function: "erfc": -double: 1 -idouble: 1 - -Function: "exp": -double: 1 -idouble: 1 - -Function: "expm1": -double: 1 -idouble: 1 - -Function: "hypot": -float: 1 -ifloat: 1 - -Function: "lgamma": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: "log": -float: 1 -ifloat: 1 - -Function: "log10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "tan": -double: 1 -idouble: 1 - -Function: "tgamma": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# end of automatic generation diff --git a/test/math/libm-test.inc b/test/math/libm-test.inc deleted file mode 100644 index f50b48b81..000000000 --- a/test/math/libm-test.inc +++ /dev/null @@ -1,5096 +0,0 @@ -/* Copyright (C) 1997-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -/* Part of testsuite for libm. - - This file is processed by a perl script. The resulting file has to - be included by a master file that defines: - - Macros: - FUNC(function): converts general function name (like cos) to - name with correct suffix (e.g. cosl or cosf) - MATHCONST(x): like FUNC but for constants (e.g convert 0.0 to 0.0L) - FLOAT: floating point type to test - - TEST_MSG: informal message to be displayed - CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat): - chooses one of the parameters as delta for testing - equality - PRINTF_EXPR Floating point conversion specification to print a variable - of type FLOAT with printf. PRINTF_EXPR just contains - the specifier, not the percent and width arguments, - e.g. "f". - PRINTF_XEXPR Like PRINTF_EXPR, but print in hexadecimal format. - PRINTF_NEXPR Like PRINTF_EXPR, but print nice. */ - -/* This testsuite has currently tests for: - acos, acosh, asin, asinh, atan, atan2, atanh, - cbrt, ceil, copysign, cos, cosh, erf, erfc, exp, exp10, exp2, expm1, - fabs, fdim, floor, fma, fmax, fmin, fmod, fpclassify, - frexp, gamma, hypot, - ilogb, isfinite, isinf, isnan, isnormal, - isless, islessequal, isgreater, isgreaterequal, islessgreater, isunordered, - j0, j1, jn, - ldexp, lgamma, log, log10, log1p, log2, logb, - modf, nearbyint, nextafter, - pow, remainder, remquo, rint, lrint, llrint, - round, lround, llround, - scalb, scalbn, scalbln, signbit, sin, sincos, sinh, sqrt, tan, tanh, tgamma, trunc, - y0, y1, yn, significand - - and for the following complex math functions: - cabs, cacos, cacosh, carg, casin, casinh, catan, catanh, - ccos, ccosh, cexp, clog, cpow, cproj, csin, csinh, csqrt, ctan, ctanh. - - At the moment the following functions aren't tested: - drem, nan - - Parameter handling is primitive in the moment: - --verbose=[0..3] for different levels of output: - 0: only error count - 1: basic report on failed tests (default) - 2: full report on all tests - -v for full output (equals --verbose=3) - -u for generation of an ULPs file - */ - -/* "Philosophy": - - This suite tests some aspects of the correct implementation of - mathematical functions in libm. Some simple, specific parameters - are tested for correctness but there's no exhaustive - testing. Handling of specific inputs (e.g. infinity, not-a-number) - is also tested. Correct handling of exceptions is checked - against. These implemented tests should check all cases that are - specified in ISO C99. - - Exception testing: At the moment only divide-by-zero and invalid - exceptions are tested. Overflow/underflow and inexact exceptions - aren't checked at the moment. - - NaN values: There exist signalling and quiet NaNs. This implementation - only uses quiet NaN as parameter but does not differenciate - between the two kinds of NaNs as result. - - Inline functions: Inlining functions should give an improvement in - speed - but not in precission. The inlined functions return - reasonable values for a reasonable range of input values. The - result is not necessarily correct for all values and exceptions are - not correctly raised in all cases. Problematic input and return - values are infinity, not-a-number and minus zero. This suite - therefore does not check these specific inputs and the exception - handling for inlined mathematical functions - just the "reasonable" - values are checked. - - Beware: The tests might fail for any of the following reasons: - - Tests are wrong - - Functions are wrong - - Floating Point Unit not working properly - - Compiler has errors - - With e.g. gcc 2.7.2.2 the test for cexp fails because of a compiler error. - - - To Do: All parameter should be numbers that can be represented as - exact floating point values. Currently some values cannot be - represented exactly and therefore the result is not the expected - result. For this we will use 36 digits so that numbers can be - represented exactly. */ - -#ifndef _GNU_SOURCE -# define _GNU_SOURCE -#endif - -#undef __CHK_COMPLEX_STUFF -#define __CHK_COMPLEX_STUFF 0 - -#include "libm-test-ulps.h" -#include -#include -#include -#include "fenv.h" -#include - -#include -#include -#include -#include -#include - -/* Possible exceptions */ -#define NO_EXCEPTION 0x0 -#define INVALID_EXCEPTION 0x1 -#define DIVIDE_BY_ZERO_EXCEPTION 0x2 -/* The next flags signals that those exceptions are allowed but not required. */ -#define INVALID_EXCEPTION_OK 0x4 -#define DIVIDE_BY_ZERO_EXCEPTION_OK 0x8 -#define EXCEPTIONS_OK INVALID_EXCEPTION_OK+DIVIDE_BY_ZERO_EXCEPTION_OK -/* Some special test flags, passed togther with exceptions. */ -#define IGNORE_ZERO_INF_SIGN 0x10 - -/* Various constants (we must supply them precalculated for accuracy). */ -#define M_PI_6l .52359877559829887307710723054658383L -#define M_E2l 7.389056098930650227230427460575008L -#define M_E3l 20.085536923187667740928529654581719L -#define M_2_SQRT_PIl 3.5449077018110320545963349666822903L /* 2 sqrt (M_PIl) */ -#define M_SQRT_PIl 1.7724538509055160272981674833411451L /* sqrt (M_PIl) */ -#define M_LOG_SQRT_PIl 0.57236494292470008707171367567652933L /* log(sqrt(M_PIl)) */ -#define M_LOG_2_SQRT_PIl 1.265512123484645396488945797134706L /* log(2*sqrt(M_PIl)) */ -#define M_PI_34l (M_PIl - M_PI_4l) /* 3*pi/4 */ -#define M_PI_34_LOG10El (M_PIl - M_PI_4l) * M_LOG10El -#define M_PI2_LOG10El M_PI_2l * M_LOG10El -#define M_PI4_LOG10El M_PI_4l * M_LOG10El -#define M_PI_LOG10El M_PIl * M_LOG10El -#define M_SQRT_2_2 0.70710678118654752440084436210484903L /* sqrt (2) / 2 */ - -static FILE *ulps_file; /* File to document difference. */ -static int output_ulps; /* Should ulps printed? */ - -static int noErrors; /* number of errors */ -static int noTests; /* number of tests (without testing exceptions) */ -static int noExcTests; /* number of tests for exception flags */ -static int noXFails; /* number of expected failures. */ -static int noXPasses; /* number of unexpected passes. */ - -static int verbose; -static int output_max_error; /* Should the maximal errors printed? */ -static int output_points; /* Should the single function results printed? */ -static int ignore_max_ulp; /* Should we ignore max_ulp? */ - -static FLOAT minus_zero, plus_zero; -static FLOAT plus_infty, minus_infty, nan_value, max_value, min_value; - -static FLOAT max_error, real_max_error, imag_max_error; - - -#define BUILD_COMPLEX(real, imag) \ - ({ __complex__ FLOAT __retval; \ - __real__ __retval = (real); \ - __imag__ __retval = (imag); \ - __retval; }) - -#define BUILD_COMPLEX_INT(real, imag) \ - ({ __complex__ int __retval; \ - __real__ __retval = (real); \ - __imag__ __retval = (imag); \ - __retval; }) - - -#define MANT_DIG CHOOSE ((LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1), \ - (LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1)) - -static void -init_max_error (void) -{ - max_error = 0; - real_max_error = 0; - imag_max_error = 0; - feclearexcept (FE_ALL_EXCEPT); -} - -static void -set_max_error (FLOAT current, FLOAT *curr_max_error) -{ - if (current > *curr_max_error) - *curr_max_error = current; -} - - -/* Should the message print to screen? This depends on the verbose flag, - and the test status. */ -static int -print_screen (int ok, int xfail) -{ - if (output_points - && (verbose > 1 - || (verbose == 1 && ok == xfail))) - return 1; - return 0; -} - - -/* Should the message print to screen? This depends on the verbose flag, - and the test status. */ -static int -print_screen_max_error (int ok, int xfail) -{ - if (output_max_error - && (verbose > 1 - || ((verbose == 1) && (ok == xfail)))) - return 1; - return 0; -} - -/* Update statistic counters. */ -static void -update_stats (int ok, int xfail) -{ - ++noTests; - if (ok && xfail) - ++noXPasses; - else if (!ok && xfail) - ++noXFails; - else if (!ok && !xfail) - ++noErrors; -} - -static void -print_ulps (const char *test_name, FLOAT ulp) -{ - if (output_ulps) - { - fprintf (ulps_file, "Test \"%s\":\n", test_name); - fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n", - CHOOSE("ldouble", "double", "float", - "ildouble", "idouble", "ifloat"), - FUNC(ceil) (ulp)); - } -} - -static void -print_function_ulps (const char *function_name, FLOAT ulp) -{ - if (output_ulps) - { - fprintf (ulps_file, "Function: \"%s\":\n", function_name); - fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n", - CHOOSE("ldouble", "double", "float", - "ildouble", "idouble", "ifloat"), - FUNC(ceil) (ulp)); - } -} - - -static void -print_complex_function_ulps (const char *function_name, FLOAT real_ulp, - FLOAT imag_ulp) -{ - if (output_ulps) - { - if (real_ulp != 0.0) - { - fprintf (ulps_file, "Function: Real part of \"%s\":\n", function_name); - fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n", - CHOOSE("ldouble", "double", "float", - "ildouble", "idouble", "ifloat"), - FUNC(ceil) (real_ulp)); - } - if (imag_ulp != 0.0) - { - fprintf (ulps_file, "Function: Imaginary part of \"%s\":\n", function_name); - fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n", - CHOOSE("ldouble", "double", "float", - "ildouble", "idouble", "ifloat"), - FUNC(ceil) (imag_ulp)); - } - - - } -} - - - -/* Test if Floating-Point stack hasn't changed */ -static void -fpstack_test (const char *test_name) -{ -#ifdef i386 - static int old_stack; - int sw; - - __asm__ ("fnstsw" : "=a" (sw)); - sw >>= 11; - sw &= 7; - - if (sw != old_stack) - { - printf ("FP-Stack wrong after test %s (%d, should be %d)\n", - test_name, sw, old_stack); - ++noErrors; - old_stack = sw; - } -#endif -} - - -static void -print_max_error (const char *func_name, FLOAT allowed, int xfail) -{ - int ok = 0; - - if (max_error == 0.0 || (max_error <= allowed && !ignore_max_ulp)) - { - ok = 1; - } - - if (!ok) - print_function_ulps (func_name, max_error); - - - if (print_screen_max_error (ok, xfail)) - { - printf ("Maximal error of `%s'\n", func_name); - printf (" is : %.0" PRINTF_NEXPR " ulp\n", FUNC(ceil) (max_error)); - printf (" accepted: %.0" PRINTF_NEXPR " ulp\n", FUNC(ceil) (allowed)); - } - - update_stats (ok, xfail); -} - - -static void -print_complex_max_error (const char *func_name, __complex__ FLOAT allowed, - __complex__ int xfail) -{ - int ok = 0; - - if ((real_max_error == 0 && imag_max_error == 0) - || (real_max_error <= __real__ allowed - && imag_max_error <= __imag__ allowed - && !ignore_max_ulp)) - { - ok = 1; - } - - if (!ok) - print_complex_function_ulps (func_name, real_max_error, imag_max_error); - - - if (print_screen_max_error (ok, xfail)) - { - printf ("Maximal error of real part of: %s\n", func_name); - printf (" is : %.0" PRINTF_NEXPR " ulp\n", - FUNC(ceil) (real_max_error)); - printf (" accepted: %.0" PRINTF_NEXPR " ulp\n", - FUNC(ceil) (__real__ allowed)); - printf ("Maximal error of imaginary part of: %s\n", func_name); - printf (" is : %.0" PRINTF_NEXPR " ulp\n", - FUNC(ceil) (imag_max_error)); - printf (" accepted: %.0" PRINTF_NEXPR " ulp\n", - FUNC(ceil) (__imag__ allowed)); - } - - update_stats (ok, xfail); -} - - -/* Test whether a given exception was raised. */ -static void -test_single_exception (const char *test_name, - int exception, - int exc_flag, - int fe_flag, - const char *flag_name) -{ -#ifndef TEST_INLINE - int ok = 1; - if (exception & exc_flag) - { - if (fetestexcept (fe_flag)) - { - if (print_screen (1, 0)) - printf ("Pass: %s: Exception \"%s\" set\n", test_name, flag_name); - } - else - { - ok = 0; - if (print_screen (0, 0)) - printf ("Failure: %s: Exception \"%s\" not set\n", - test_name, flag_name); - } - } - else - { - if (fetestexcept (fe_flag)) - { - ok = 0; - if (print_screen (0, 0)) - printf ("Failure: %s: Exception \"%s\" set\n", - test_name, flag_name); - } - else - { - if (print_screen (1, 0)) - printf ("%s: Exception \"%s\" not set\n", test_name, - flag_name); - } - } - if (!ok) - ++noErrors; - -#endif -} - - -/* Test whether exceptions given by EXCEPTION are raised. Ignore thereby - allowed but not required exceptions. -*/ -static void -test_exceptions (const char *test_name, int exception) -{ - ++noExcTests; -#ifdef FE_DIVBYZERO - if ((exception & DIVIDE_BY_ZERO_EXCEPTION_OK) == 0) - test_single_exception (test_name, exception, - DIVIDE_BY_ZERO_EXCEPTION, FE_DIVBYZERO, - "Divide by zero"); -#endif -#ifdef FE_INVALID - if ((exception & INVALID_EXCEPTION_OK) == 0) - test_single_exception (test_name, exception, INVALID_EXCEPTION, FE_INVALID, - "Invalid operation"); -#endif - feclearexcept (FE_ALL_EXCEPT); -} - - -static void -check_float_internal (const char *test_name, FLOAT computed, FLOAT expected, - FLOAT max_ulp, int xfail, int exceptions, - FLOAT *curr_max_error) -{ - int ok = 0; - int print_diff = 0; - FLOAT diff = 0; - FLOAT ulp = 0; - - test_exceptions (test_name, exceptions); - if (isnan (computed) && isnan (expected)) - ok = 1; - else if (isinf (computed) && isinf (expected)) - { - /* Test for sign of infinities. */ - if ((exceptions & IGNORE_ZERO_INF_SIGN) == 0 - && signbit (computed) != signbit (expected)) - { - ok = 0; - printf ("infinity has wrong sign.\n"); - } - else - ok = 1; - } - /* Don't calc ulp for NaNs or infinities. */ - else if (isinf (computed) || isnan (computed) || isinf (expected) || isnan (expected)) - ok = 0; - else - { - diff = FUNC(fabs) (computed - expected); - /* ilogb (0) isn't allowed. */ - if (expected == 0.0) - ulp = diff / FUNC(ldexp) (1.0, - MANT_DIG); - else - ulp = diff / FUNC(ldexp) (1.0, FUNC(ilogb) (expected) - MANT_DIG); - set_max_error (ulp, curr_max_error); - print_diff = 1; - if ((exceptions & IGNORE_ZERO_INF_SIGN) == 0 - && computed == 0.0 && expected == 0.0 - && signbit(computed) != signbit (expected)) - ok = 0; - else if (ulp <= 0.5 || (ulp <= max_ulp && !ignore_max_ulp)) - ok = 1; - else - { - ok = 0; - print_ulps (test_name, ulp); - } - - } - if (print_screen (ok, xfail)) - { - if (!ok) - printf ("Failure: "); - printf ("Test: %s\n", test_name); - printf ("Result:\n"); - printf (" is: % .20" PRINTF_EXPR " % .20" PRINTF_XEXPR "\n", - computed, computed); - printf (" should be: % .20" PRINTF_EXPR " % .20" PRINTF_XEXPR "\n", - expected, expected); - if (print_diff) - { - printf (" difference: % .20" PRINTF_EXPR " % .20" PRINTF_XEXPR - "\n", diff, diff); - printf (" ulp : % .4" PRINTF_NEXPR "\n", ulp); - printf (" max.ulp : % .4" PRINTF_NEXPR "\n", max_ulp); - } - } - update_stats (ok, xfail); - - fpstack_test (test_name); -} - - -static void -check_float (const char *test_name, FLOAT computed, FLOAT expected, - FLOAT max_ulp, int xfail, int exceptions) -{ - check_float_internal (test_name, computed, expected, max_ulp, xfail, - exceptions, &max_error); -} - - -static void -check_complex (const char *test_name, __complex__ FLOAT computed, - __complex__ FLOAT expected, - __complex__ FLOAT max_ulp, __complex__ int xfail, - int exception) -{ - FLOAT part_comp, part_exp, part_max_ulp; - int part_xfail; - char str[200]; - - sprintf (str, "Real part of: %s", test_name); - part_comp = __real__ computed; - part_exp = __real__ expected; - part_max_ulp = __real__ max_ulp; - part_xfail = __real__ xfail; - - check_float_internal (str, part_comp, part_exp, part_max_ulp, part_xfail, - exception, &real_max_error); - - sprintf (str, "Imaginary part of: %s", test_name); - part_comp = __imag__ computed; - part_exp = __imag__ expected; - part_max_ulp = __imag__ max_ulp; - part_xfail = __imag__ xfail; - - /* Don't check again for exceptions, just pass through the - zero/inf sign test. */ - check_float_internal (str, part_comp, part_exp, part_max_ulp, part_xfail, - exception & IGNORE_ZERO_INF_SIGN, - &imag_max_error); -} - - -/* Check that computed and expected values are equal (int values). */ -static void -check_int (const char *test_name, int computed, int expected, int max_ulp, - int xfail, int exceptions) -{ - int diff = computed - expected; - int ok = 0; - - test_exceptions (test_name, exceptions); - noTests++; - if (abs (diff) <= max_ulp) - ok = 1; - - if (!ok) - print_ulps (test_name, diff); - - if (print_screen (ok, xfail)) - { - if (!ok) - printf ("Failure: "); - printf ("Test: %s\n", test_name); - printf ("Result:\n"); - printf (" is: %d\n", computed); - printf (" should be: %d\n", expected); - } - - update_stats (ok, xfail); - fpstack_test (test_name); -} - - -/* Check that computed and expected values are equal (long int values). */ -static void -check_long (const char *test_name, long int computed, long int expected, - long int max_ulp, int xfail, int exceptions) -{ - long int diff = computed - expected; - int ok = 0; - - test_exceptions (test_name, exceptions); - noTests++; - if (labs (diff) <= max_ulp) - ok = 1; - - if (!ok) - print_ulps (test_name, diff); - - if (print_screen (ok, xfail)) - { - if (!ok) - printf ("Failure: "); - printf ("Test: %s\n", test_name); - printf ("Result:\n"); - printf (" is: %ld\n", computed); - printf (" should be: %ld\n", expected); - } - - update_stats (ok, xfail); - fpstack_test (test_name); -} - - -/* Check that computed value is true/false. */ -static void -check_bool (const char *test_name, int computed, int expected, - long int max_ulp, int xfail, int exceptions) -{ - int ok = 0; - - test_exceptions (test_name, exceptions); - noTests++; - if ((computed == 0) == (expected == 0)) - ok = 1; - - if (print_screen (ok, xfail)) - { - if (!ok) - printf ("Failure: "); - printf ("Test: %s\n", test_name); - printf ("Result:\n"); - printf (" is: %d\n", computed); - printf (" should be: %d\n", expected); - } - - update_stats (ok, xfail); - fpstack_test (test_name); -} - - -/* check that computed and expected values are equal (long int values) */ -static void -check_longlong (const char *test_name, long long int computed, - long long int expected, - long long int max_ulp, int xfail, - int exceptions) -{ - long long int diff = computed - expected; - int ok = 0; - - test_exceptions (test_name, exceptions); - noTests++; - if (llabs (diff) <= max_ulp) - ok = 1; - - if (!ok) - print_ulps (test_name, diff); - - if (print_screen (ok, xfail)) - { - if (!ok) - printf ("Failure:"); - printf ("Test: %s\n", test_name); - printf ("Result:\n"); - printf (" is: %lld\n", computed); - printf (" should be: %lld\n", expected); - } - - update_stats (ok, xfail); - fpstack_test (test_name); -} - - - -/* This is to prevent messages from the SVID libm emulation. */ -int -matherr (struct exception *x __attribute__ ((unused))) -{ - return 1; -} - - -/**************************************************************************** - Tests for single functions of libm. - Please keep them alphabetically sorted! -****************************************************************************/ - -static void -acos_test (void) -{ - errno = 0; - FUNC(acos) (0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (acos); - - TEST_f_f (acos, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (acos, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (acos, nan_value, nan_value); - - /* |x| > 1: */ - TEST_f_f (acos, 1.125L, nan_value, INVALID_EXCEPTION); - TEST_f_f (acos, -1.125L, nan_value, INVALID_EXCEPTION); - - TEST_f_f (acos, 0, M_PI_2l); - TEST_f_f (acos, minus_zero, M_PI_2l); - TEST_f_f (acos, 1, 0); - TEST_f_f (acos, -1, M_PIl); - TEST_f_f (acos, 0.5, M_PI_6l*2.0); - TEST_f_f (acos, -0.5, M_PI_6l*4.0); - TEST_f_f (acos, 0.75L, 0.722734247813415611178377352641333362L); - TEST_f_f (acos, 2e-17L, 1.57079632679489659923132169163975144L); - TEST_f_f (acos, 0.0625L, 1.50825556499840522843072005474337068L); - END (acos); -} - -static void -acosh_test (void) -{ - errno = 0; - FUNC(acosh) (7); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (acosh); - - TEST_f_f (acosh, plus_infty, plus_infty); - TEST_f_f (acosh, minus_infty, nan_value, INVALID_EXCEPTION); - - /* x < 1: */ - TEST_f_f (acosh, -1.125L, nan_value, INVALID_EXCEPTION); - - TEST_f_f (acosh, 1, 0); - TEST_f_f (acosh, 7, 2.63391579384963341725009269461593689L); - - END (acosh); -} - -static void -asin_test (void) -{ - errno = 0; - FUNC(asin) (0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (asin); - - TEST_f_f (asin, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (asin, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (asin, nan_value, nan_value); - - /* asin x == NaN plus invalid exception for |x| > 1. */ - TEST_f_f (asin, 1.125L, nan_value, INVALID_EXCEPTION); - TEST_f_f (asin, -1.125L, nan_value, INVALID_EXCEPTION); - - TEST_f_f (asin, 0, 0); - TEST_f_f (asin, minus_zero, minus_zero); - TEST_f_f (asin, 0.5, M_PI_6l); - TEST_f_f (asin, -0.5, -M_PI_6l); - TEST_f_f (asin, 1.0, M_PI_2l); - TEST_f_f (asin, -1.0, -M_PI_2l); - TEST_f_f (asin, 0.75L, 0.848062078981481008052944338998418080L); - - END (asin); -} - -static void -asinh_test (void) -{ - errno = 0; - FUNC(asinh) (0.7L); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (asinh); - - TEST_f_f (asinh, 0, 0); - TEST_f_f (asinh, minus_zero, minus_zero); -#ifndef TEST_INLINE - TEST_f_f (asinh, plus_infty, plus_infty); - TEST_f_f (asinh, minus_infty, minus_infty); -#endif - TEST_f_f (asinh, nan_value, nan_value); - TEST_f_f (asinh, 0.75L, 0.693147180559945309417232121458176568L); - - END (asinh); -} - -static void -atan_test (void) -{ - errno = 0; - FUNC(atan) (0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (atan); - - TEST_f_f (atan, 0, 0); - TEST_f_f (atan, minus_zero, minus_zero); - - TEST_f_f (atan, plus_infty, M_PI_2l); - TEST_f_f (atan, minus_infty, -M_PI_2l); - TEST_f_f (atan, nan_value, nan_value); - - TEST_f_f (atan, 1, M_PI_4l); - TEST_f_f (atan, -1, -M_PI_4l); - - TEST_f_f (atan, 0.75L, 0.643501108793284386802809228717322638L); - - END (atan); -} - - - -static void -atanh_test (void) -{ - errno = 0; - FUNC(atanh) (0.7L); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (atanh); - - - TEST_f_f (atanh, 0, 0); - TEST_f_f (atanh, minus_zero, minus_zero); - - TEST_f_f (atanh, 1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_f_f (atanh, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_f_f (atanh, nan_value, nan_value); - - /* atanh (x) == NaN plus invalid exception if |x| > 1. */ - TEST_f_f (atanh, 1.125L, nan_value, INVALID_EXCEPTION); - TEST_f_f (atanh, -1.125L, nan_value, INVALID_EXCEPTION); - - TEST_f_f (atanh, 0.75L, 0.972955074527656652552676371721589865L); - - END (atanh); -} - -static void -atan2_test (void) -{ - errno = 0; - FUNC(atan2) (-0, 1); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (atan2); - - /* atan2 (0,x) == 0 for x > 0. */ - TEST_ff_f (atan2, 0, 1, 0); - - /* atan2 (-0,x) == -0 for x > 0. */ - TEST_ff_f (atan2, minus_zero, 1, minus_zero); - - TEST_ff_f (atan2, 0, 0, 0); - TEST_ff_f (atan2, minus_zero, 0, minus_zero); - - /* atan2 (+0,x) == +pi for x < 0. */ - TEST_ff_f (atan2, 0, -1, M_PIl); - - /* atan2 (-0,x) == -pi for x < 0. */ - TEST_ff_f (atan2, minus_zero, -1, -M_PIl); - - TEST_ff_f (atan2, 0, minus_zero, M_PIl); - TEST_ff_f (atan2, minus_zero, minus_zero, -M_PIl); - - /* atan2 (y,+0) == pi/2 for y > 0. */ - TEST_ff_f (atan2, 1, 0, M_PI_2l); - - /* atan2 (y,-0) == pi/2 for y > 0. */ - TEST_ff_f (atan2, 1, minus_zero, M_PI_2l); - - /* atan2 (y,+0) == -pi/2 for y < 0. */ - TEST_ff_f (atan2, -1, 0, -M_PI_2l); - - /* atan2 (y,-0) == -pi/2 for y < 0. */ - TEST_ff_f (atan2, -1, minus_zero, -M_PI_2l); - - /* atan2 (y,inf) == +0 for finite y > 0. */ - TEST_ff_f (atan2, 1, plus_infty, 0); - - /* atan2 (y,inf) == -0 for finite y < 0. */ - TEST_ff_f (atan2, -1, plus_infty, minus_zero); - - /* atan2(+inf, x) == pi/2 for finite x. */ - TEST_ff_f (atan2, plus_infty, -1, M_PI_2l); - - /* atan2(-inf, x) == -pi/2 for finite x. */ - TEST_ff_f (atan2, minus_infty, 1, -M_PI_2l); - - /* atan2 (y,-inf) == +pi for finite y > 0. */ - TEST_ff_f (atan2, 1, minus_infty, M_PIl); - - /* atan2 (y,-inf) == -pi for finite y < 0. */ - TEST_ff_f (atan2, -1, minus_infty, -M_PIl); - - TEST_ff_f (atan2, plus_infty, plus_infty, M_PI_4l); - TEST_ff_f (atan2, minus_infty, plus_infty, -M_PI_4l); - TEST_ff_f (atan2, plus_infty, minus_infty, M_PI_34l); - TEST_ff_f (atan2, minus_infty, minus_infty, -M_PI_34l); - TEST_ff_f (atan2, nan_value, nan_value, nan_value); - - TEST_ff_f (atan2, 0.75L, 1, 0.643501108793284386802809228717322638L); - TEST_ff_f (atan2, -0.75L, 1.0L, -0.643501108793284386802809228717322638L); - TEST_ff_f (atan2, 0.75L, -1.0L, 2.49809154479650885165983415456218025L); - TEST_ff_f (atan2, -0.75L, -1.0L, -2.49809154479650885165983415456218025L); - TEST_ff_f (atan2, 0.390625L, .00029L, 1.57005392693128974780151246612928941L); - TEST_ff_f (atan2, 1.390625L, 0.9296875L, 0.981498387184244311516296577615519772L); - - TEST_ff_f (atan2, -0.00756827042671106339L, -.001792735857538728036L, -1.80338464113663849327153994379639112L); - - END (atan2); -} - -static void -cabs_test (void) -{ - errno = 0; - FUNC(cabs) (BUILD_COMPLEX (0.7L, 12.4L)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (cabs); - - /* cabs (x + iy) is specified as hypot (x,y) */ - - /* cabs (+inf + i x) == +inf. */ - TEST_c_f (cabs, plus_infty, 1.0, plus_infty); - /* cabs (-inf + i x) == +inf. */ - TEST_c_f (cabs, minus_infty, 1.0, plus_infty); - - TEST_c_f (cabs, minus_infty, nan_value, plus_infty); - TEST_c_f (cabs, minus_infty, nan_value, plus_infty); - - TEST_c_f (cabs, nan_value, nan_value, nan_value); - - /* cabs (x,y) == cabs (y,x). */ - TEST_c_f (cabs, 0.75L, 12.390625L, 12.4133028598606664302388810868156657L); - /* cabs (x,y) == cabs (-x,y). */ - TEST_c_f (cabs, -12.390625L, 0.75L, 12.4133028598606664302388810868156657L); - /* cabs (x,y) == cabs (-y,x). */ - TEST_c_f (cabs, -0.75L, 12.390625L, 12.4133028598606664302388810868156657L); - /* cabs (x,y) == cabs (-x,-y). */ - TEST_c_f (cabs, -12.390625L, -0.75L, 12.4133028598606664302388810868156657L); - /* cabs (x,y) == cabs (-y,-x). */ - TEST_c_f (cabs, -0.75L, -12.390625L, 12.4133028598606664302388810868156657L); - /* cabs (x,0) == fabs (x). */ - TEST_c_f (cabs, -0.75L, 0, 0.75L); - TEST_c_f (cabs, 0.75L, 0, 0.75L); - TEST_c_f (cabs, -1.0L, 0, 1.0L); - TEST_c_f (cabs, 1.0L, 0, 1.0L); - TEST_c_f (cabs, -5.7e7L, 0, 5.7e7L); - TEST_c_f (cabs, 5.7e7L, 0, 5.7e7L); - - TEST_c_f (cabs, 0.75L, 1.25L, 1.45773797371132511771853821938639577L); - - END (cabs); -} - - -#if 0 -static void -cacos_test (void) -{ - errno = 0; - FUNC(cacos) (BUILD_COMPLEX (0.7L, 1.2L)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (cacos); - - - TEST_c_c (cacos, 0, 0, M_PI_2l, minus_zero); - TEST_c_c (cacos, minus_zero, 0, M_PI_2l, minus_zero); - TEST_c_c (cacos, minus_zero, minus_zero, M_PI_2l, 0.0); - TEST_c_c (cacos, 0, minus_zero, M_PI_2l, 0.0); - - TEST_c_c (cacos, minus_infty, plus_infty, M_PI_34l, minus_infty); - TEST_c_c (cacos, minus_infty, minus_infty, M_PI_34l, plus_infty); - - TEST_c_c (cacos, plus_infty, plus_infty, M_PI_4l, minus_infty); - TEST_c_c (cacos, plus_infty, minus_infty, M_PI_4l, plus_infty); - - TEST_c_c (cacos, -10.0, plus_infty, M_PI_2l, minus_infty); - TEST_c_c (cacos, -10.0, minus_infty, M_PI_2l, plus_infty); - TEST_c_c (cacos, 0, plus_infty, M_PI_2l, minus_infty); - TEST_c_c (cacos, 0, minus_infty, M_PI_2l, plus_infty); - TEST_c_c (cacos, 0.1L, plus_infty, M_PI_2l, minus_infty); - TEST_c_c (cacos, 0.1L, minus_infty, M_PI_2l, plus_infty); - - TEST_c_c (cacos, minus_infty, 0, M_PIl, minus_infty); - TEST_c_c (cacos, minus_infty, minus_zero, M_PIl, plus_infty); - TEST_c_c (cacos, minus_infty, 100, M_PIl, minus_infty); - TEST_c_c (cacos, minus_infty, -100, M_PIl, plus_infty); - - TEST_c_c (cacos, plus_infty, 0, 0.0, minus_infty); - TEST_c_c (cacos, plus_infty, minus_zero, 0.0, plus_infty); - TEST_c_c (cacos, plus_infty, 0.5, 0.0, minus_infty); - TEST_c_c (cacos, plus_infty, -0.5, 0.0, plus_infty); - - TEST_c_c (cacos, plus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN); - TEST_c_c (cacos, minus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (cacos, 0, nan_value, M_PI_2l, nan_value); - TEST_c_c (cacos, minus_zero, nan_value, M_PI_2l, nan_value); - - TEST_c_c (cacos, nan_value, plus_infty, nan_value, minus_infty); - TEST_c_c (cacos, nan_value, minus_infty, nan_value, plus_infty); - - TEST_c_c (cacos, 10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cacos, -10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (cacos, nan_value, 0.75, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cacos, nan_value, -0.75, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (cacos, nan_value, nan_value, nan_value, nan_value); - - TEST_c_c (cacos, 0.75L, 1.25L, 1.11752014915610270578240049553777969L, -1.13239363160530819522266333696834467L); - TEST_c_c (cacos, -2, -3, 2.1414491111159960199416055713254211L, 1.9833870299165354323470769028940395L); - - END (cacos, complex); -} - -static void -cacosh_test (void) -{ - errno = 0; - FUNC(cacosh) (BUILD_COMPLEX (0.7L, 1.2L)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (cacosh); - - - TEST_c_c (cacosh, 0, 0, 0.0, M_PI_2l); - TEST_c_c (cacosh, minus_zero, 0, 0.0, M_PI_2l); - TEST_c_c (cacosh, 0, minus_zero, 0.0, -M_PI_2l); - TEST_c_c (cacosh, minus_zero, minus_zero, 0.0, -M_PI_2l); - TEST_c_c (cacosh, minus_infty, plus_infty, plus_infty, M_PI_34l); - TEST_c_c (cacosh, minus_infty, minus_infty, plus_infty, -M_PI_34l); - - TEST_c_c (cacosh, plus_infty, plus_infty, plus_infty, M_PI_4l); - TEST_c_c (cacosh, plus_infty, minus_infty, plus_infty, -M_PI_4l); - - TEST_c_c (cacosh, -10.0, plus_infty, plus_infty, M_PI_2l); - TEST_c_c (cacosh, -10.0, minus_infty, plus_infty, -M_PI_2l); - TEST_c_c (cacosh, 0, plus_infty, plus_infty, M_PI_2l); - TEST_c_c (cacosh, 0, minus_infty, plus_infty, -M_PI_2l); - TEST_c_c (cacosh, 0.1L, plus_infty, plus_infty, M_PI_2l); - TEST_c_c (cacosh, 0.1L, minus_infty, plus_infty, -M_PI_2l); - - TEST_c_c (cacosh, minus_infty, 0, plus_infty, M_PIl); - TEST_c_c (cacosh, minus_infty, minus_zero, plus_infty, -M_PIl); - TEST_c_c (cacosh, minus_infty, 100, plus_infty, M_PIl); - TEST_c_c (cacosh, minus_infty, -100, plus_infty, -M_PIl); - - TEST_c_c (cacosh, plus_infty, 0, plus_infty, 0.0); - TEST_c_c (cacosh, plus_infty, minus_zero, plus_infty, minus_zero); - TEST_c_c (cacosh, plus_infty, 0.5, plus_infty, 0.0); - TEST_c_c (cacosh, plus_infty, -0.5, plus_infty, minus_zero); - - TEST_c_c (cacosh, plus_infty, nan_value, plus_infty, nan_value); - TEST_c_c (cacosh, minus_infty, nan_value, plus_infty, nan_value); - - TEST_c_c (cacosh, 0, nan_value, nan_value, nan_value); - TEST_c_c (cacosh, minus_zero, nan_value, nan_value, nan_value); - - TEST_c_c (cacosh, nan_value, plus_infty, plus_infty, nan_value); - TEST_c_c (cacosh, nan_value, minus_infty, plus_infty, nan_value); - - TEST_c_c (cacosh, 10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cacosh, -10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (cacosh, nan_value, 0.75, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cacosh, nan_value, -0.75, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (cacosh, nan_value, nan_value, nan_value, nan_value); - - TEST_c_c (cacosh, 0.75L, 1.25L, 1.13239363160530819522266333696834467L, 1.11752014915610270578240049553777969L); - TEST_c_c (cacosh, -2, -3, 1.9833870299165354323470769028940395L, -2.1414491111159960199416055713254211L); - - END (cacosh, complex); -} -#endif - - -#if __CHK_COMPLEX_STUFF -static void -carg_test (void) -{ - START (carg); - - /* carg (x + iy) is specified as atan2 (y, x) */ - - /* carg (x + i 0) == 0 for x > 0. */ - TEST_c_f (carg, 2.0, 0, 0); - /* carg (x - i 0) == -0 for x > 0. */ - TEST_c_f (carg, 2.0, minus_zero, minus_zero); - - TEST_c_f (carg, 0, 0, 0); - TEST_c_f (carg, 0, minus_zero, minus_zero); - - /* carg (x + i 0) == +pi for x < 0. */ - TEST_c_f (carg, -2.0, 0, M_PIl); - - /* carg (x - i 0) == -pi for x < 0. */ - TEST_c_f (carg, -2.0, minus_zero, -M_PIl); - - TEST_c_f (carg, minus_zero, 0, M_PIl); - TEST_c_f (carg, minus_zero, minus_zero, -M_PIl); - - /* carg (+0 + i y) == pi/2 for y > 0. */ - TEST_c_f (carg, 0, 2.0, M_PI_2l); - - /* carg (-0 + i y) == pi/2 for y > 0. */ - TEST_c_f (carg, minus_zero, 2.0, M_PI_2l); - - /* carg (+0 + i y) == -pi/2 for y < 0. */ - TEST_c_f (carg, 0, -2.0, -M_PI_2l); - - /* carg (-0 + i y) == -pi/2 for y < 0. */ - TEST_c_f (carg, minus_zero, -2.0, -M_PI_2l); - - /* carg (inf + i y) == +0 for finite y > 0. */ - TEST_c_f (carg, plus_infty, 2.0, 0); - - /* carg (inf + i y) == -0 for finite y < 0. */ - TEST_c_f (carg, plus_infty, -2.0, minus_zero); - - /* carg(x + i inf) == pi/2 for finite x. */ - TEST_c_f (carg, 10.0, plus_infty, M_PI_2l); - - /* carg(x - i inf) == -pi/2 for finite x. */ - TEST_c_f (carg, 10.0, minus_infty, -M_PI_2l); - - /* carg (-inf + i y) == +pi for finite y > 0. */ - TEST_c_f (carg, minus_infty, 10.0, M_PIl); - - /* carg (-inf + i y) == -pi for finite y < 0. */ - TEST_c_f (carg, minus_infty, -10.0, -M_PIl); - - TEST_c_f (carg, plus_infty, plus_infty, M_PI_4l); - - TEST_c_f (carg, plus_infty, minus_infty, -M_PI_4l); - - TEST_c_f (carg, minus_infty, plus_infty, 3 * M_PI_4l); - - TEST_c_f (carg, minus_infty, minus_infty, -3 * M_PI_4l); - - TEST_c_f (carg, nan_value, nan_value, nan_value); - - END (carg); -} -#endif /* __CHK_COMPLEX_STUFF */ - -#if 0 -static void -casin_test (void) -{ - errno = 0; - FUNC(casin) (BUILD_COMPLEX (0.7L, 1.2L)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (casin); - - TEST_c_c (casin, 0, 0, 0.0, 0.0); - TEST_c_c (casin, minus_zero, 0, minus_zero, 0.0); - TEST_c_c (casin, 0, minus_zero, 0.0, minus_zero); - TEST_c_c (casin, minus_zero, minus_zero, minus_zero, minus_zero); - - TEST_c_c (casin, plus_infty, plus_infty, M_PI_4l, plus_infty); - TEST_c_c (casin, plus_infty, minus_infty, M_PI_4l, minus_infty); - TEST_c_c (casin, minus_infty, plus_infty, -M_PI_4l, plus_infty); - TEST_c_c (casin, minus_infty, minus_infty, -M_PI_4l, minus_infty); - - TEST_c_c (casin, -10.0, plus_infty, minus_zero, plus_infty); - TEST_c_c (casin, -10.0, minus_infty, minus_zero, minus_infty); - TEST_c_c (casin, 0, plus_infty, 0.0, plus_infty); - TEST_c_c (casin, 0, minus_infty, 0.0, minus_infty); - TEST_c_c (casin, minus_zero, plus_infty, minus_zero, plus_infty); - TEST_c_c (casin, minus_zero, minus_infty, minus_zero, minus_infty); - TEST_c_c (casin, 0.1L, plus_infty, 0.0, plus_infty); - TEST_c_c (casin, 0.1L, minus_infty, 0.0, minus_infty); - - TEST_c_c (casin, minus_infty, 0, -M_PI_2l, plus_infty); - TEST_c_c (casin, minus_infty, minus_zero, -M_PI_2l, minus_infty); - TEST_c_c (casin, minus_infty, 100, -M_PI_2l, plus_infty); - TEST_c_c (casin, minus_infty, -100, -M_PI_2l, minus_infty); - - TEST_c_c (casin, plus_infty, 0, M_PI_2l, plus_infty); - TEST_c_c (casin, plus_infty, minus_zero, M_PI_2l, minus_infty); - TEST_c_c (casin, plus_infty, 0.5, M_PI_2l, plus_infty); - TEST_c_c (casin, plus_infty, -0.5, M_PI_2l, minus_infty); - - TEST_c_c (casin, nan_value, plus_infty, nan_value, plus_infty); - TEST_c_c (casin, nan_value, minus_infty, nan_value, minus_infty); - - TEST_c_c (casin, 0.0, nan_value, 0.0, nan_value); - TEST_c_c (casin, minus_zero, nan_value, minus_zero, nan_value); - - TEST_c_c (casin, plus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN); - TEST_c_c (casin, minus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (casin, nan_value, 10.5, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (casin, nan_value, -10.5, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (casin, 0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (casin, -0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (casin, nan_value, nan_value, nan_value, nan_value); - - TEST_c_c (casin, 0.75L, 1.25L, 0.453276177638793913448921196101971749L, 1.13239363160530819522266333696834467L); - TEST_c_c (casin, -2, -3, -0.57065278432109940071028387968566963L, -1.9833870299165354323470769028940395L); - - END (casin, complex); -} - - -static void -casinh_test (void) -{ - errno = 0; - FUNC(casinh) (BUILD_COMPLEX (0.7L, 1.2L)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (casinh); - - TEST_c_c (casinh, 0, 0, 0.0, 0.0); - TEST_c_c (casinh, minus_zero, 0, minus_zero, 0); - TEST_c_c (casinh, 0, minus_zero, 0.0, minus_zero); - TEST_c_c (casinh, minus_zero, minus_zero, minus_zero, minus_zero); - - TEST_c_c (casinh, plus_infty, plus_infty, plus_infty, M_PI_4l); - TEST_c_c (casinh, plus_infty, minus_infty, plus_infty, -M_PI_4l); - TEST_c_c (casinh, minus_infty, plus_infty, minus_infty, M_PI_4l); - TEST_c_c (casinh, minus_infty, minus_infty, minus_infty, -M_PI_4l); - - TEST_c_c (casinh, -10.0, plus_infty, minus_infty, M_PI_2l); - TEST_c_c (casinh, -10.0, minus_infty, minus_infty, -M_PI_2l); - TEST_c_c (casinh, 0, plus_infty, plus_infty, M_PI_2l); - TEST_c_c (casinh, 0, minus_infty, plus_infty, -M_PI_2l); - TEST_c_c (casinh, minus_zero, plus_infty, minus_infty, M_PI_2l); - TEST_c_c (casinh, minus_zero, minus_infty, minus_infty, -M_PI_2l); - TEST_c_c (casinh, 0.1L, plus_infty, plus_infty, M_PI_2l); - TEST_c_c (casinh, 0.1L, minus_infty, plus_infty, -M_PI_2l); - - TEST_c_c (casinh, minus_infty, 0, minus_infty, 0.0); - TEST_c_c (casinh, minus_infty, minus_zero, minus_infty, minus_zero); - TEST_c_c (casinh, minus_infty, 100, minus_infty, 0.0); - TEST_c_c (casinh, minus_infty, -100, minus_infty, minus_zero); - - TEST_c_c (casinh, plus_infty, 0, plus_infty, 0.0); - TEST_c_c (casinh, plus_infty, minus_zero, plus_infty, minus_zero); - TEST_c_c (casinh, plus_infty, 0.5, plus_infty, 0.0); - TEST_c_c (casinh, plus_infty, -0.5, plus_infty, minus_zero); - - TEST_c_c (casinh, plus_infty, nan_value, plus_infty, nan_value); - TEST_c_c (casinh, minus_infty, nan_value, minus_infty, nan_value); - - TEST_c_c (casinh, nan_value, 0, nan_value, 0.0); - TEST_c_c (casinh, nan_value, minus_zero, nan_value, minus_zero); - - TEST_c_c (casinh, nan_value, plus_infty, plus_infty, nan_value, IGNORE_ZERO_INF_SIGN); - TEST_c_c (casinh, nan_value, minus_infty, plus_infty, nan_value, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (casinh, 10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (casinh, -10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (casinh, nan_value, 0.75, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (casinh, -0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (casinh, nan_value, nan_value, nan_value, nan_value); - - TEST_c_c (casinh, 0.75L, 1.25L, 1.03171853444778027336364058631006594L, 0.911738290968487636358489564316731207L); - TEST_c_c (casinh, -2, -3, -1.9686379257930962917886650952454982L, -0.96465850440760279204541105949953237L); - - END (casinh, complex); -} - - -static void -catan_test (void) -{ - errno = 0; - FUNC(catan) (BUILD_COMPLEX (0.7L, 1.2L)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (catan); - - TEST_c_c (catan, 0, 0, 0, 0); - TEST_c_c (catan, minus_zero, 0, minus_zero, 0); - TEST_c_c (catan, 0, minus_zero, 0, minus_zero); - TEST_c_c (catan, minus_zero, minus_zero, minus_zero, minus_zero); - - TEST_c_c (catan, plus_infty, plus_infty, M_PI_2l, 0); - TEST_c_c (catan, plus_infty, minus_infty, M_PI_2l, minus_zero); - TEST_c_c (catan, minus_infty, plus_infty, -M_PI_2l, 0); - TEST_c_c (catan, minus_infty, minus_infty, -M_PI_2l, minus_zero); - - - TEST_c_c (catan, plus_infty, -10.0, M_PI_2l, minus_zero); - TEST_c_c (catan, minus_infty, -10.0, -M_PI_2l, minus_zero); - TEST_c_c (catan, plus_infty, minus_zero, M_PI_2l, minus_zero); - TEST_c_c (catan, minus_infty, minus_zero, -M_PI_2l, minus_zero); - TEST_c_c (catan, plus_infty, 0.0, M_PI_2l, 0); - TEST_c_c (catan, minus_infty, 0.0, -M_PI_2l, 0); - TEST_c_c (catan, plus_infty, 0.1L, M_PI_2l, 0); - TEST_c_c (catan, minus_infty, 0.1L, -M_PI_2l, 0); - - TEST_c_c (catan, 0.0, minus_infty, M_PI_2l, minus_zero); - TEST_c_c (catan, minus_zero, minus_infty, -M_PI_2l, minus_zero); - TEST_c_c (catan, 100.0, minus_infty, M_PI_2l, minus_zero); - TEST_c_c (catan, -100.0, minus_infty, -M_PI_2l, minus_zero); - - TEST_c_c (catan, 0.0, plus_infty, M_PI_2l, 0); - TEST_c_c (catan, minus_zero, plus_infty, -M_PI_2l, 0); - TEST_c_c (catan, 0.5, plus_infty, M_PI_2l, 0); - TEST_c_c (catan, -0.5, plus_infty, -M_PI_2l, 0); - - TEST_c_c (catan, nan_value, 0.0, nan_value, 0); - TEST_c_c (catan, nan_value, minus_zero, nan_value, minus_zero); - - TEST_c_c (catan, nan_value, plus_infty, nan_value, 0); - TEST_c_c (catan, nan_value, minus_infty, nan_value, minus_zero); - - TEST_c_c (catan, 0.0, nan_value, nan_value, nan_value); - TEST_c_c (catan, minus_zero, nan_value, nan_value, nan_value); - - TEST_c_c (catan, plus_infty, nan_value, M_PI_2l, 0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (catan, minus_infty, nan_value, -M_PI_2l, 0, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (catan, nan_value, 10.5, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (catan, nan_value, -10.5, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (catan, 0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (catan, -0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (catan, nan_value, nan_value, nan_value, nan_value); - - TEST_c_c (catan, 0.75L, 1.25L, 1.10714871779409050301706546017853704L, 0.549306144334054845697622618461262852L); - TEST_c_c (catan, -2, -3, -1.4099210495965755225306193844604208L, -0.22907268296853876629588180294200276L); - - END (catan, complex); -} - -static void -catanh_test (void) -{ - errno = 0; - FUNC(catanh) (BUILD_COMPLEX (0.7L, 1.2L)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (catanh); - - TEST_c_c (catanh, 0, 0, 0.0, 0.0); - TEST_c_c (catanh, minus_zero, 0, minus_zero, 0.0); - TEST_c_c (catanh, 0, minus_zero, 0.0, minus_zero); - TEST_c_c (catanh, minus_zero, minus_zero, minus_zero, minus_zero); - - TEST_c_c (catanh, plus_infty, plus_infty, 0.0, M_PI_2l); - TEST_c_c (catanh, plus_infty, minus_infty, 0.0, -M_PI_2l); - TEST_c_c (catanh, minus_infty, plus_infty, minus_zero, M_PI_2l); - TEST_c_c (catanh, minus_infty, minus_infty, minus_zero, -M_PI_2l); - - TEST_c_c (catanh, -10.0, plus_infty, minus_zero, M_PI_2l); - TEST_c_c (catanh, -10.0, minus_infty, minus_zero, -M_PI_2l); - TEST_c_c (catanh, minus_zero, plus_infty, minus_zero, M_PI_2l); - TEST_c_c (catanh, minus_zero, minus_infty, minus_zero, -M_PI_2l); - TEST_c_c (catanh, 0, plus_infty, 0.0, M_PI_2l); - TEST_c_c (catanh, 0, minus_infty, 0.0, -M_PI_2l); - TEST_c_c (catanh, 0.1L, plus_infty, 0.0, M_PI_2l); - TEST_c_c (catanh, 0.1L, minus_infty, 0.0, -M_PI_2l); - - TEST_c_c (catanh, minus_infty, 0, minus_zero, M_PI_2l); - TEST_c_c (catanh, minus_infty, minus_zero, minus_zero, -M_PI_2l); - TEST_c_c (catanh, minus_infty, 100, minus_zero, M_PI_2l); - TEST_c_c (catanh, minus_infty, -100, minus_zero, -M_PI_2l); - - TEST_c_c (catanh, plus_infty, 0, 0.0, M_PI_2l); - TEST_c_c (catanh, plus_infty, minus_zero, 0.0, -M_PI_2l); - TEST_c_c (catanh, plus_infty, 0.5, 0.0, M_PI_2l); - TEST_c_c (catanh, plus_infty, -0.5, 0.0, -M_PI_2l); - - TEST_c_c (catanh, 0, nan_value, 0.0, nan_value); - TEST_c_c (catanh, minus_zero, nan_value, minus_zero, nan_value); - - TEST_c_c (catanh, plus_infty, nan_value, 0.0, nan_value); - TEST_c_c (catanh, minus_infty, nan_value, minus_zero, nan_value); - - TEST_c_c (catanh, nan_value, 0, nan_value, nan_value); - TEST_c_c (catanh, nan_value, minus_zero, nan_value, nan_value); - - TEST_c_c (catanh, nan_value, plus_infty, 0.0, M_PI_2l, IGNORE_ZERO_INF_SIGN); - TEST_c_c (catanh, nan_value, minus_infty, 0.0, -M_PI_2l, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (catanh, 10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (catanh, -10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (catanh, nan_value, 0.75, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (catanh, nan_value, -0.75, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (catanh, nan_value, nan_value, nan_value, nan_value); - - TEST_c_c (catanh, 0.75L, 1.25L, 0.261492138795671927078652057366532140L, 0.996825126463918666098902241310446708L); - TEST_c_c (catanh, -2, -3, -0.14694666622552975204743278515471595L, -1.3389725222944935611241935759091443L); - - END (catanh, complex); -} -#endif - -static void -cbrt_test (void) -{ - errno = 0; - FUNC(cbrt) (8); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (cbrt); - - TEST_f_f (cbrt, 0.0, 0.0); - TEST_f_f (cbrt, minus_zero, minus_zero); - - TEST_f_f (cbrt, plus_infty, plus_infty); - TEST_f_f (cbrt, minus_infty, minus_infty); - TEST_f_f (cbrt, nan_value, nan_value); - - TEST_f_f (cbrt, -0.001L, -0.1L); - TEST_f_f (cbrt, 8, 2); - TEST_f_f (cbrt, -27.0, -3.0); - TEST_f_f (cbrt, 0.9921875L, 0.997389022060725270579075195353955217L); - TEST_f_f (cbrt, 0.75L, 0.908560296416069829445605878163630251L); - - END (cbrt); -} - - -#if 0 -static void -ccos_test (void) -{ - errno = 0; - FUNC(ccos) (BUILD_COMPLEX (0, 0)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (ccos); - - TEST_c_c (ccos, 0.0, 0.0, 1.0, minus_zero); - TEST_c_c (ccos, minus_zero, 0.0, 1.0, 0.0); - TEST_c_c (ccos, 0.0, minus_zero, 1.0, 0.0); - TEST_c_c (ccos, minus_zero, minus_zero, 1.0, minus_zero); - - TEST_c_c (ccos, plus_infty, 0.0, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccos, plus_infty, minus_zero, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccos, minus_infty, 0.0, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccos, minus_infty, minus_zero, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - - TEST_c_c (ccos, 0.0, plus_infty, plus_infty, minus_zero); - TEST_c_c (ccos, 0.0, minus_infty, plus_infty, 0.0); - TEST_c_c (ccos, minus_zero, plus_infty, plus_infty, 0.0); - TEST_c_c (ccos, minus_zero, minus_infty, plus_infty, minus_zero); - - TEST_c_c (ccos, plus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccos, minus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccos, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccos, minus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - - TEST_c_c (ccos, 4.625, plus_infty, minus_infty, plus_infty); - TEST_c_c (ccos, 4.625, minus_infty, minus_infty, minus_infty); - TEST_c_c (ccos, -4.625, plus_infty, minus_infty, minus_infty); - TEST_c_c (ccos, -4.625, minus_infty, minus_infty, plus_infty); - - TEST_c_c (ccos, plus_infty, 6.75, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccos, plus_infty, -6.75, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccos, minus_infty, 6.75, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccos, minus_infty, -6.75, nan_value, nan_value, INVALID_EXCEPTION); - - TEST_c_c (ccos, nan_value, 0.0, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccos, nan_value, minus_zero, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (ccos, nan_value, plus_infty, plus_infty, nan_value); - TEST_c_c (ccos, nan_value, minus_infty, plus_infty, nan_value); - - TEST_c_c (ccos, nan_value, 9.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccos, nan_value, -9.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (ccos, 0.0, nan_value, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccos, minus_zero, nan_value, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (ccos, 10.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccos, -10.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (ccos, plus_infty, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccos, minus_infty, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (ccos, nan_value, nan_value, nan_value, nan_value); - - TEST_c_c (ccos, 0.75L, 1.25L, 1.38173873063425888530729933139078645L, -1.09193013555397466170919531722024128L); - TEST_c_c (ccos, -2, -3, -4.18962569096880723013255501961597373L, -9.10922789375533659797919726277886212L); - - END (ccos, complex); -} - - -static void -ccosh_test (void) -{ - errno = 0; - FUNC(ccosh) (BUILD_COMPLEX (0.7L, 1.2L)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (ccosh); - - TEST_c_c (ccosh, 0.0, 0.0, 1.0, 0.0); - TEST_c_c (ccosh, minus_zero, 0.0, 1.0, minus_zero); - TEST_c_c (ccosh, 0.0, minus_zero, 1.0, minus_zero); - TEST_c_c (ccosh, minus_zero, minus_zero, 1.0, 0.0); - - TEST_c_c (ccosh, 0.0, plus_infty, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccosh, minus_zero, plus_infty, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccosh, 0.0, minus_infty, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccosh, minus_zero, minus_infty, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - - TEST_c_c (ccosh, plus_infty, 0.0, plus_infty, 0.0); - TEST_c_c (ccosh, minus_infty, 0.0, plus_infty, minus_zero); - TEST_c_c (ccosh, plus_infty, minus_zero, plus_infty, minus_zero); - TEST_c_c (ccosh, minus_infty, minus_zero, plus_infty, 0.0); - - TEST_c_c (ccosh, plus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccosh, minus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccosh, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccosh, minus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - - TEST_c_c (ccosh, plus_infty, 4.625, minus_infty, minus_infty); - TEST_c_c (ccosh, minus_infty, 4.625, minus_infty, plus_infty); - TEST_c_c (ccosh, plus_infty, -4.625, minus_infty, plus_infty); - TEST_c_c (ccosh, minus_infty, -4.625, minus_infty, minus_infty); - - TEST_c_c (ccosh, 6.75, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccosh, -6.75, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccosh, 6.75, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccosh, -6.75, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - - TEST_c_c (ccosh, 0.0, nan_value, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccosh, minus_zero, nan_value, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (ccosh, plus_infty, nan_value, plus_infty, nan_value); - TEST_c_c (ccosh, minus_infty, nan_value, plus_infty, nan_value); - - TEST_c_c (ccosh, 9.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccosh, -9.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (ccosh, nan_value, 0.0, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccosh, nan_value, minus_zero, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (ccosh, nan_value, 10.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccosh, nan_value, -10.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (ccosh, nan_value, plus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccosh, nan_value, minus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (ccosh, nan_value, nan_value, nan_value, nan_value); - - TEST_c_c (ccosh, 0.75L, 1.25L, 0.408242591877968807788852146397499084L, 0.780365930845853240391326216300863152L); - - TEST_c_c (ccosh, -2, -3, -3.72454550491532256547397070325597253L, 0.511822569987384608834463849801875634L); - - END (ccosh, complex); -} -#endif - - -static void -ceil_test (void) -{ - START (ceil); - - TEST_f_f (ceil, 0.0, 0.0); - TEST_f_f (ceil, minus_zero, minus_zero); - TEST_f_f (ceil, plus_infty, plus_infty); - TEST_f_f (ceil, minus_infty, minus_infty); - TEST_f_f (ceil, nan_value, nan_value); - - TEST_f_f (ceil, M_PIl, 4.0); - TEST_f_f (ceil, -M_PIl, -3.0); - TEST_f_f (ceil, 0.25, 1.0); - TEST_f_f (ceil, -0.25, minus_zero); - -#ifdef TEST_LDOUBLE - /* The result can only be represented in long double. */ - TEST_f_f (ceil, 4503599627370495.5L, 4503599627370496.0L); - TEST_f_f (ceil, 4503599627370496.25L, 4503599627370497.0L); - TEST_f_f (ceil, 4503599627370496.5L, 4503599627370497.0L); - TEST_f_f (ceil, 4503599627370496.75L, 4503599627370497.0L); - TEST_f_f (ceil, 4503599627370497.5L, 4503599627370498.0L); - - TEST_f_f (ceil, -4503599627370495.5L, -4503599627370495.0L); - TEST_f_f (ceil, -4503599627370496.25L, -4503599627370496.0L); - TEST_f_f (ceil, -4503599627370496.5L, -4503599627370496.0L); - TEST_f_f (ceil, -4503599627370496.75L, -4503599627370496.0L); - TEST_f_f (ceil, -4503599627370497.5L, -4503599627370497.0L); - - TEST_f_f (ceil, 9007199254740991.5L, 9007199254740992.0L); - TEST_f_f (ceil, 9007199254740992.25L, 9007199254740993.0L); - TEST_f_f (ceil, 9007199254740992.5L, 9007199254740993.0L); - TEST_f_f (ceil, 9007199254740992.75L, 9007199254740993.0L); - TEST_f_f (ceil, 9007199254740993.5L, 9007199254740994.0L); - - TEST_f_f (ceil, -9007199254740991.5L, -9007199254740991.0L); - TEST_f_f (ceil, -9007199254740992.25L, -9007199254740992.0L); - TEST_f_f (ceil, -9007199254740992.5L, -9007199254740992.0L); - TEST_f_f (ceil, -9007199254740992.75L, -9007199254740992.0L); - TEST_f_f (ceil, -9007199254740993.5L, -9007199254740993.0L); - - TEST_f_f (ceil, 72057594037927935.5L, 72057594037927936.0L); - TEST_f_f (ceil, 72057594037927936.25L, 72057594037927937.0L); - TEST_f_f (ceil, 72057594037927936.5L, 72057594037927937.0L); - TEST_f_f (ceil, 72057594037927936.75L, 72057594037927937.0L); - TEST_f_f (ceil, 72057594037927937.5L, 72057594037927938.0L); - - TEST_f_f (ceil, -72057594037927935.5L, -72057594037927935.0L); - TEST_f_f (ceil, -72057594037927936.25L, -72057594037927936.0L); - TEST_f_f (ceil, -72057594037927936.5L, -72057594037927936.0L); - TEST_f_f (ceil, -72057594037927936.75L, -72057594037927936.0L); - TEST_f_f (ceil, -72057594037927937.5L, -72057594037927937.0L); - - TEST_f_f (ceil, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L); - TEST_f_f (ceil, 10141204801825835211973625643008.25L, 10141204801825835211973625643009.0L); - TEST_f_f (ceil, 10141204801825835211973625643008.5L, 10141204801825835211973625643009.0L); - TEST_f_f (ceil, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L); - TEST_f_f (ceil, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L); -#endif - - END (ceil); -} - - -#if __CHK_COMPLEX_STUFF -static void -cexp_test (void) -{ - errno = 0; - FUNC(cexp) (BUILD_COMPLEX (0, 0)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (cexp); - - TEST_c_c (cexp, plus_zero, plus_zero, 1, 0.0); - TEST_c_c (cexp, minus_zero, plus_zero, 1, 0.0); - TEST_c_c (cexp, plus_zero, minus_zero, 1, minus_zero); - TEST_c_c (cexp, minus_zero, minus_zero, 1, minus_zero); - - TEST_c_c (cexp, plus_infty, plus_zero, plus_infty, 0.0); - TEST_c_c (cexp, plus_infty, minus_zero, plus_infty, minus_zero); - - TEST_c_c (cexp, minus_infty, plus_zero, 0.0, 0.0); - TEST_c_c (cexp, minus_infty, minus_zero, 0.0, minus_zero); - - TEST_c_c (cexp, 0.0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (cexp, minus_zero, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - - TEST_c_c (cexp, 0.0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (cexp, minus_zero, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - - TEST_c_c (cexp, 100.0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (cexp, -100.0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - - TEST_c_c (cexp, 100.0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (cexp, -100.0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - - TEST_c_c (cexp, minus_infty, 2.0, minus_zero, 0.0); - TEST_c_c (cexp, minus_infty, 4.0, minus_zero, minus_zero); - TEST_c_c (cexp, plus_infty, 2.0, minus_infty, plus_infty); - TEST_c_c (cexp, plus_infty, 4.0, minus_infty, minus_infty); - - TEST_c_c (cexp, plus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (cexp, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - - TEST_c_c (cexp, minus_infty, plus_infty, 0.0, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (cexp, minus_infty, minus_infty, 0.0, minus_zero, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (cexp, minus_infty, nan_value, 0, 0, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (cexp, plus_infty, nan_value, plus_infty, nan_value); - - TEST_c_c (cexp, nan_value, 0.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cexp, nan_value, 1.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (cexp, nan_value, plus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cexp, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cexp, 1, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cexp, nan_value, nan_value, nan_value, nan_value); - - TEST_c_c (cexp, 0.75L, 1.25L, 0.667537446429131586942201977015932112L, 2.00900045494094876258347228145863909L); - TEST_c_c (cexp, -2.0, -3.0, -0.13398091492954261346140525546115575L, -0.019098516261135196432576240858800925L); - - END (cexp, complex); -} -#endif /* __CHK_COMPLEX_STUFF */ - -#if 0 -static void -cimag_test (void) -{ - START (cimag); - TEST_c_f (cimag, 1.0, 0.0, 0.0); - TEST_c_f (cimag, 1.0, minus_zero, minus_zero); - TEST_c_f (cimag, 1.0, nan_value, nan_value); - TEST_c_f (cimag, nan_value, nan_value, nan_value); - TEST_c_f (cimag, 1.0, plus_infty, plus_infty); - TEST_c_f (cimag, 1.0, minus_infty, minus_infty); - TEST_c_f (cimag, 2.0, 3.0, 3.0); - - END (cimag); -} - -static void -clog_test (void) -{ - errno = 0; - FUNC(clog) (BUILD_COMPLEX (-2, -3)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (clog); - - TEST_c_c (clog, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION); - TEST_c_c (clog, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION); - - TEST_c_c (clog, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION); - TEST_c_c (clog, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION); - - TEST_c_c (clog, minus_infty, plus_infty, plus_infty, M_PI_34l); - TEST_c_c (clog, minus_infty, minus_infty, plus_infty, -M_PI_34l); - - TEST_c_c (clog, plus_infty, plus_infty, plus_infty, M_PI_4l); - TEST_c_c (clog, plus_infty, minus_infty, plus_infty, -M_PI_4l); - - TEST_c_c (clog, 0, plus_infty, plus_infty, M_PI_2l); - TEST_c_c (clog, 3, plus_infty, plus_infty, M_PI_2l); - TEST_c_c (clog, minus_zero, plus_infty, plus_infty, M_PI_2l); - TEST_c_c (clog, -3, plus_infty, plus_infty, M_PI_2l); - TEST_c_c (clog, 0, minus_infty, plus_infty, -M_PI_2l); - TEST_c_c (clog, 3, minus_infty, plus_infty, -M_PI_2l); - TEST_c_c (clog, minus_zero, minus_infty, plus_infty, -M_PI_2l); - TEST_c_c (clog, -3, minus_infty, plus_infty, -M_PI_2l); - - TEST_c_c (clog, minus_infty, 0, plus_infty, M_PIl); - TEST_c_c (clog, minus_infty, 1, plus_infty, M_PIl); - TEST_c_c (clog, minus_infty, minus_zero, plus_infty, -M_PIl); - TEST_c_c (clog, minus_infty, -1, plus_infty, -M_PIl); - - TEST_c_c (clog, plus_infty, 0, plus_infty, 0.0); - TEST_c_c (clog, plus_infty, 1, plus_infty, 0.0); - TEST_c_c (clog, plus_infty, minus_zero, plus_infty, minus_zero); - TEST_c_c (clog, plus_infty, -1, plus_infty, minus_zero); - - TEST_c_c (clog, plus_infty, nan_value, plus_infty, nan_value); - TEST_c_c (clog, minus_infty, nan_value, plus_infty, nan_value); - - TEST_c_c (clog, nan_value, plus_infty, plus_infty, nan_value); - TEST_c_c (clog, nan_value, minus_infty, plus_infty, nan_value); - - TEST_c_c (clog, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog, 3, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog, minus_zero, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog, -3, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (clog, nan_value, 0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog, nan_value, 5, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog, nan_value, minus_zero, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog, nan_value, -5, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (clog, nan_value, nan_value, nan_value, nan_value); - - TEST_c_c (clog, 0.75L, 1.25L, 0.376885901188190075998919126749298416L, 1.03037682652431246378774332703115153L); - TEST_c_c (clog, -2, -3, 1.2824746787307683680267437207826593L, -2.1587989303424641704769327722648368L); - - END (clog, complex); -} - - -static void -clog10_test (void) -{ - errno = 0; - FUNC(clog10) (BUILD_COMPLEX (0.7L, 1.2L)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (clog10); - - TEST_c_c (clog10, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION); - TEST_c_c (clog10, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION); - - TEST_c_c (clog10, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION); - TEST_c_c (clog10, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION); - - TEST_c_c (clog10, minus_infty, plus_infty, plus_infty, M_PI_34_LOG10El); - - TEST_c_c (clog10, plus_infty, plus_infty, plus_infty, M_PI4_LOG10El); - TEST_c_c (clog10, plus_infty, minus_infty, plus_infty, -M_PI4_LOG10El); - - TEST_c_c (clog10, 0, plus_infty, plus_infty, M_PI2_LOG10El); - TEST_c_c (clog10, 3, plus_infty, plus_infty, M_PI2_LOG10El); - TEST_c_c (clog10, minus_zero, plus_infty, plus_infty, M_PI2_LOG10El); - TEST_c_c (clog10, -3, plus_infty, plus_infty, M_PI2_LOG10El); - TEST_c_c (clog10, 0, minus_infty, plus_infty, -M_PI2_LOG10El); - TEST_c_c (clog10, 3, minus_infty, plus_infty, -M_PI2_LOG10El); - TEST_c_c (clog10, minus_zero, minus_infty, plus_infty, -M_PI2_LOG10El); - TEST_c_c (clog10, -3, minus_infty, plus_infty, -M_PI2_LOG10El); - - TEST_c_c (clog10, minus_infty, 0, plus_infty, M_PI_LOG10El); - TEST_c_c (clog10, minus_infty, 1, plus_infty, M_PI_LOG10El); - TEST_c_c (clog10, minus_infty, minus_zero, plus_infty, -M_PI_LOG10El); - TEST_c_c (clog10, minus_infty, -1, plus_infty, -M_PI_LOG10El); - - TEST_c_c (clog10, plus_infty, 0, plus_infty, 0.0); - TEST_c_c (clog10, plus_infty, 1, plus_infty, 0.0); - TEST_c_c (clog10, plus_infty, minus_zero, plus_infty, minus_zero); - TEST_c_c (clog10, plus_infty, -1, plus_infty, minus_zero); - - TEST_c_c (clog10, plus_infty, nan_value, plus_infty, nan_value); - TEST_c_c (clog10, minus_infty, nan_value, plus_infty, nan_value); - - TEST_c_c (clog10, nan_value, plus_infty, plus_infty, nan_value); - TEST_c_c (clog10, nan_value, minus_infty, plus_infty, nan_value); - - TEST_c_c (clog10, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog10, 3, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog10, minus_zero, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog10, -3, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (clog10, nan_value, 0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog10, nan_value, 5, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog10, nan_value, minus_zero, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog10, nan_value, -5, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (clog10, nan_value, nan_value, nan_value, nan_value); - - TEST_c_c (clog10, 0.75L, 1.25L, 0.163679467193165171449476605077428975L, 0.447486970040493067069984724340855636L); - TEST_c_c (clog10, -2, -3, 0.556971676153418384603252578971164214L, -0.937554462986374708541507952140189646L); - - END (clog10, complex); -} -#endif - - -#if 0 -static void -conj_test (void) -{ - START (conj); - TEST_c_c (conj, 0.0, 0.0, 0.0, minus_zero); - TEST_c_c (conj, 0.0, minus_zero, 0.0, 0.0); - TEST_c_c (conj, nan_value, nan_value, nan_value, nan_value); - TEST_c_c (conj, plus_infty, minus_infty, plus_infty, plus_infty); - TEST_c_c (conj, plus_infty, plus_infty, plus_infty, minus_infty); - TEST_c_c (conj, 1.0, 2.0, 1.0, -2.0); - TEST_c_c (conj, 3.0, -4.0, 3.0, 4.0); - - END (conj, complex); -} -#endif - - -static void -copysign_test (void) -{ - START (copysign); - - TEST_ff_f (copysign, 0, 4, 0); - TEST_ff_f (copysign, 0, -4, minus_zero); - TEST_ff_f (copysign, minus_zero, 4, 0); - TEST_ff_f (copysign, minus_zero, -4, minus_zero); - - TEST_ff_f (copysign, plus_infty, 0, plus_infty); - TEST_ff_f (copysign, plus_infty, minus_zero, minus_infty); - TEST_ff_f (copysign, minus_infty, 0, plus_infty); - TEST_ff_f (copysign, minus_infty, minus_zero, minus_infty); - - TEST_ff_f (copysign, 0, plus_infty, 0); - TEST_ff_f (copysign, 0, minus_zero, minus_zero); - TEST_ff_f (copysign, minus_zero, plus_infty, 0); - TEST_ff_f (copysign, minus_zero, minus_zero, minus_zero); - - /* XXX More correctly we would have to check the sign of the NaN. */ - TEST_ff_f (copysign, nan_value, 0, nan_value); - TEST_ff_f (copysign, nan_value, minus_zero, nan_value); - TEST_ff_f (copysign, -nan_value, 0, nan_value); - TEST_ff_f (copysign, -nan_value, minus_zero, nan_value); - - END (copysign); -} - - -static void -cos_test (void) -{ - errno = 0; - FUNC(cos) (0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (cos); - - TEST_f_f (cos, 0, 1); - TEST_f_f (cos, minus_zero, 1); - TEST_f_f (cos, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (cos, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (cos, nan_value, nan_value); - - TEST_f_f (cos, M_PI_6l * 2.0, 0.5); - TEST_f_f (cos, M_PI_6l * 4.0, -0.5); - TEST_f_f (cos, M_PI_2l, 0); - - TEST_f_f (cos, 0.75L, 0.731688868873820886311838753000084544L); - -#ifdef TEST_DOUBLE - TEST_f_f (cos, 0.80190127184058835, 0.69534156199418473); -#endif - - END (cos); -} - - -static void -cosh_test (void) -{ - errno = 0; - FUNC(cosh) (0.7L); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (cosh); - TEST_f_f (cosh, 0, 1); - TEST_f_f (cosh, minus_zero, 1); - -#ifndef TEST_INLINE - TEST_f_f (cosh, plus_infty, plus_infty); - TEST_f_f (cosh, minus_infty, plus_infty); -#endif - TEST_f_f (cosh, nan_value, nan_value); - - TEST_f_f (cosh, 0.75L, 1.29468328467684468784170818539018176L); - - END (cosh); -} - - -#if 0 -static void -cpow_test (void) -{ - errno = 0; - FUNC(cpow) (BUILD_COMPLEX (1, 0), BUILD_COMPLEX (0, 0)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (cpow); - - TEST_cc_c (cpow, 1, 0, 0, 0, 1.0, 0.0); - TEST_cc_c (cpow, 2, 0, 10, 0, 1024.0, 0.0); - - TEST_cc_c (cpow, M_El, 0, 0, 2 * M_PIl, 1.0, 0.0); - TEST_cc_c (cpow, 2, 3, 4, 0, -119.0, -120.0); - - TEST_cc_c (cpow, nan_value, nan_value, nan_value, nan_value, nan_value, nan_value); - - TEST_cc_c (cpow, 0.75L, 1.25L, 0.75L, 1.25L, 0.117506293914473555420279832210420483L, 0.346552747708338676483025352060418001L); - TEST_cc_c (cpow, 0.75L, 1.25L, 1.0L, 1.0L, 0.0846958290317209430433805274189191353L, 0.513285749182902449043287190519090481L); - TEST_cc_c (cpow, 0.75L, 1.25L, 1.0L, 0.0L, 0.75L, 1.25L); - TEST_cc_c (cpow, 0.75L, 1.25L, 0.0L, 1.0L, 0.331825439177608832276067945276730566L, 0.131338600281188544930936345230903032L); - - END (cpow, complex); -} - - -static void -cproj_test (void) -{ - START (cproj); - TEST_c_c (cproj, 0.0, 0.0, 0.0, 0.0); - TEST_c_c (cproj, minus_zero, minus_zero, minus_zero, minus_zero); - TEST_c_c (cproj, 0.0, minus_zero, 0.0, minus_zero); - TEST_c_c (cproj, minus_zero, 0.0, minus_zero, 0.0); - - TEST_c_c (cproj, nan_value, nan_value, nan_value, nan_value); - - TEST_c_c (cproj, plus_infty, plus_infty, plus_infty, 0.0); - TEST_c_c (cproj, plus_infty, minus_infty, plus_infty, minus_zero); - TEST_c_c (cproj, minus_infty, plus_infty, plus_infty, 0.0); - TEST_c_c (cproj, minus_infty, minus_infty, plus_infty, minus_zero); - - TEST_c_c (cproj, 1.0, 0.0, 1.0, 0.0); - TEST_c_c (cproj, 2.0, 3.0, 0.2857142857142857142857142857142857L, 0.42857142857142857142857142857142855L); - - END (cproj, complex); -} - - -static void -creal_test (void) -{ - START (creal); - TEST_c_f (creal, 0.0, 1.0, 0.0); - TEST_c_f (creal, minus_zero, 1.0, minus_zero); - TEST_c_f (creal, nan_value, 1.0, nan_value); - TEST_c_f (creal, nan_value, nan_value, nan_value); - TEST_c_f (creal, plus_infty, 1.0, plus_infty); - TEST_c_f (creal, minus_infty, 1.0, minus_infty); - TEST_c_f (creal, 2.0, 3.0, 2.0); - - END (creal); -} - -static void -csin_test (void) -{ - errno = 0; - FUNC(csin) (BUILD_COMPLEX (0.7L, 1.2L)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (csin); - - TEST_c_c (csin, 0.0, 0.0, 0.0, 0.0); - TEST_c_c (csin, minus_zero, 0.0, minus_zero, 0.0); - TEST_c_c (csin, 0.0, minus_zero, 0, minus_zero); - TEST_c_c (csin, minus_zero, minus_zero, minus_zero, minus_zero); - - TEST_c_c (csin, 0.0, plus_infty, 0.0, plus_infty); - TEST_c_c (csin, minus_zero, plus_infty, minus_zero, plus_infty); - TEST_c_c (csin, 0.0, minus_infty, 0.0, minus_infty); - TEST_c_c (csin, minus_zero, minus_infty, minus_zero, minus_infty); - - TEST_c_c (csin, plus_infty, 0.0, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, minus_infty, 0.0, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, plus_infty, minus_zero, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, minus_infty, minus_zero, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - - TEST_c_c (csin, plus_infty, plus_infty, nan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, minus_infty, plus_infty, nan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, plus_infty, minus_infty, nan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, minus_infty, minus_infty, nan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - - TEST_c_c (csin, plus_infty, 6.75, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (csin, plus_infty, -6.75, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (csin, minus_infty, 6.75, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (csin, minus_infty, -6.75, nan_value, nan_value, INVALID_EXCEPTION); - - TEST_c_c (csin, 4.625, plus_infty, minus_infty, minus_infty); - TEST_c_c (csin, 4.625, minus_infty, minus_infty, plus_infty); - TEST_c_c (csin, -4.625, plus_infty, plus_infty, minus_infty); - TEST_c_c (csin, -4.625, minus_infty, plus_infty, plus_infty); - - TEST_c_c (csin, nan_value, 0.0, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, nan_value, minus_zero, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (csin, nan_value, plus_infty, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, nan_value, minus_infty, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (csin, nan_value, 9.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csin, nan_value, -9.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (csin, 0.0, nan_value, 0.0, nan_value); - TEST_c_c (csin, minus_zero, nan_value, minus_zero, nan_value); - - TEST_c_c (csin, 10.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csin, nan_value, -10.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (csin, plus_infty, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csin, minus_infty, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (csin, nan_value, nan_value, nan_value, nan_value); - - TEST_c_c (csin, 0.75L, 1.25L, 1.28722291002649188575873510790565441L, 1.17210635989270256101081285116138863L); - TEST_c_c (csin, -2, -3, -9.15449914691142957346729954460983256L, 4.16890695996656435075481305885375484L); - - END (csin, complex); -} - - -static void -csinh_test (void) -{ - errno = 0; - FUNC(csinh) (BUILD_COMPLEX (0.7L, 1.2L)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (csinh); - - TEST_c_c (csinh, 0.0, 0.0, 0.0, 0.0); - TEST_c_c (csinh, minus_zero, 0.0, minus_zero, 0.0); - TEST_c_c (csinh, 0.0, minus_zero, 0.0, minus_zero); - TEST_c_c (csinh, minus_zero, minus_zero, minus_zero, minus_zero); - - TEST_c_c (csinh, 0.0, plus_infty, 0.0, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, minus_zero, plus_infty, 0.0, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, 0.0, minus_infty, 0.0, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, minus_zero, minus_infty, 0.0, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - - TEST_c_c (csinh, plus_infty, 0.0, plus_infty, 0.0); - TEST_c_c (csinh, minus_infty, 0.0, minus_infty, 0.0); - TEST_c_c (csinh, plus_infty, minus_zero, plus_infty, minus_zero); - TEST_c_c (csinh, minus_infty, minus_zero, minus_infty, minus_zero); - - TEST_c_c (csinh, plus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, minus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, minus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - - TEST_c_c (csinh, plus_infty, 4.625, minus_infty, minus_infty); - TEST_c_c (csinh, minus_infty, 4.625, plus_infty, minus_infty); - TEST_c_c (csinh, plus_infty, -4.625, minus_infty, plus_infty); - TEST_c_c (csinh, minus_infty, -4.625, plus_infty, plus_infty); - - TEST_c_c (csinh, 6.75, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (csinh, -6.75, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (csinh, 6.75, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (csinh, -6.75, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - - TEST_c_c (csinh, 0.0, nan_value, 0.0, nan_value, IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, minus_zero, nan_value, 0.0, nan_value, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (csinh, plus_infty, nan_value, plus_infty, nan_value, IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, minus_infty, nan_value, plus_infty, nan_value, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (csinh, 9.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csinh, -9.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (csinh, nan_value, 0.0, nan_value, 0.0); - TEST_c_c (csinh, nan_value, minus_zero, nan_value, minus_zero); - - TEST_c_c (csinh, nan_value, 10.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csinh, nan_value, -10.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (csinh, nan_value, plus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csinh, nan_value, minus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (csinh, nan_value, nan_value, nan_value, nan_value); - - TEST_c_c (csinh, 0.75L, 1.25L, 0.259294854551162779153349830618433028L, 1.22863452409509552219214606515777594L); - TEST_c_c (csinh, -2, -3, 3.59056458998577995201256544779481679L, -0.530921086248519805267040090660676560L); - - END (csinh, complex); -} - - -static void -csqrt_test (void) -{ - errno = 0; - FUNC(csqrt) (BUILD_COMPLEX (-1, 0)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (csqrt); - - TEST_c_c (csqrt, 0, 0, 0.0, 0.0); - TEST_c_c (csqrt, 0, minus_zero, 0, minus_zero); - TEST_c_c (csqrt, minus_zero, 0, 0.0, 0.0); - TEST_c_c (csqrt, minus_zero, minus_zero, 0.0, minus_zero); - - TEST_c_c (csqrt, minus_infty, 0, 0.0, plus_infty); - TEST_c_c (csqrt, minus_infty, 6, 0.0, plus_infty); - TEST_c_c (csqrt, minus_infty, minus_zero, 0.0, minus_infty); - TEST_c_c (csqrt, minus_infty, -6, 0.0, minus_infty); - - TEST_c_c (csqrt, plus_infty, 0, plus_infty, 0.0); - TEST_c_c (csqrt, plus_infty, 6, plus_infty, 0.0); - TEST_c_c (csqrt, plus_infty, minus_zero, plus_infty, minus_zero); - TEST_c_c (csqrt, plus_infty, -6, plus_infty, minus_zero); - - TEST_c_c (csqrt, 0, plus_infty, plus_infty, plus_infty); - TEST_c_c (csqrt, 4, plus_infty, plus_infty, plus_infty); - TEST_c_c (csqrt, plus_infty, plus_infty, plus_infty, plus_infty); - TEST_c_c (csqrt, minus_zero, plus_infty, plus_infty, plus_infty); - TEST_c_c (csqrt, -4, plus_infty, plus_infty, plus_infty); - TEST_c_c (csqrt, minus_infty, plus_infty, plus_infty, plus_infty); - TEST_c_c (csqrt, 0, minus_infty, plus_infty, minus_infty); - TEST_c_c (csqrt, 4, minus_infty, plus_infty, minus_infty); - TEST_c_c (csqrt, plus_infty, minus_infty, plus_infty, minus_infty); - TEST_c_c (csqrt, minus_zero, minus_infty, plus_infty, minus_infty); - TEST_c_c (csqrt, -4, minus_infty, plus_infty, minus_infty); - TEST_c_c (csqrt, minus_infty, minus_infty, plus_infty, minus_infty); - - TEST_c_c (csqrt, minus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (csqrt, plus_infty, nan_value, plus_infty, nan_value); - - TEST_c_c (csqrt, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csqrt, 1, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csqrt, minus_zero, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csqrt, -1, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (csqrt, nan_value, 0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csqrt, nan_value, 8, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csqrt, nan_value, minus_zero, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csqrt, nan_value, -8, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (csqrt, nan_value, nan_value, nan_value, nan_value); - - TEST_c_c (csqrt, 16.0, -30.0, 5.0, -3.0); - TEST_c_c (csqrt, -1, 0, 0.0, 1.0); - TEST_c_c (csqrt, 0, 2, 1.0, 1.0); - TEST_c_c (csqrt, 119, 120, 12.0, 5.0); - TEST_c_c (csqrt, 0.75L, 1.25L, 1.05065169626078392338656675760808326L, 0.594868882070379067881984030639932657L); - TEST_c_c (csqrt, -2, -3, 0.89597747612983812471573375529004348L, -1.6741492280355400404480393008490519L); - TEST_c_c (csqrt, -2, 3, 0.89597747612983812471573375529004348L, 1.6741492280355400404480393008490519L); - /* Principal square root should be returned (i.e., non-negative real - part). */ - TEST_c_c (csqrt, 0, -1, M_SQRT_2_2, -M_SQRT_2_2); - - END (csqrt, complex); -} - -static void -ctan_test (void) -{ - errno = 0; - FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (ctan); - - TEST_c_c (ctan, 0, 0, 0.0, 0.0); - TEST_c_c (ctan, 0, minus_zero, 0.0, minus_zero); - TEST_c_c (ctan, minus_zero, 0, minus_zero, 0.0); - TEST_c_c (ctan, minus_zero, minus_zero, minus_zero, minus_zero); - - TEST_c_c (ctan, 0, plus_infty, 0.0, 1.0); - TEST_c_c (ctan, 1, plus_infty, 0.0, 1.0); - TEST_c_c (ctan, minus_zero, plus_infty, minus_zero, 1.0); - TEST_c_c (ctan, -1, plus_infty, minus_zero, 1.0); - - TEST_c_c (ctan, 0, minus_infty, 0.0, -1.0); - TEST_c_c (ctan, 1, minus_infty, 0.0, -1.0); - TEST_c_c (ctan, minus_zero, minus_infty, minus_zero, -1.0); - TEST_c_c (ctan, -1, minus_infty, minus_zero, -1.0); - - TEST_c_c (ctan, plus_infty, 0, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctan, plus_infty, 2, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctan, minus_infty, 0, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctan, minus_infty, 2, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctan, plus_infty, minus_zero, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctan, plus_infty, -2, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctan, minus_infty, minus_zero, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctan, minus_infty, -2, nan_value, nan_value, INVALID_EXCEPTION); - - TEST_c_c (ctan, nan_value, plus_infty, 0.0, 1.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ctan, nan_value, minus_infty, 0.0, -1.0, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (ctan, 0, nan_value, 0.0, nan_value); - TEST_c_c (ctan, minus_zero, nan_value, minus_zero, nan_value); - - TEST_c_c (ctan, 0.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctan, -4.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (ctan, nan_value, 0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctan, nan_value, 5, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctan, nan_value, minus_zero, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctan, nan_value, -0.25, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (ctan, nan_value, nan_value, nan_value, nan_value); - - TEST_c_c (ctan, 0.75L, 1.25L, 0.160807785916206426725166058173438663L, 0.975363285031235646193581759755216379L); - TEST_c_c (ctan, -2, -3, 0.376402564150424829275122113032269084e-2L, -1.00323862735360980144635859782192726L); - - END (ctan, complex); -} - - -static void -ctanh_test (void) -{ - errno = 0; - FUNC(ctanh) (BUILD_COMPLEX (0, 0)); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (ctanh); - - TEST_c_c (ctanh, 0, 0, 0.0, 0.0); - TEST_c_c (ctanh, 0, minus_zero, 0.0, minus_zero); - TEST_c_c (ctanh, minus_zero, 0, minus_zero, 0.0); - TEST_c_c (ctanh, minus_zero, minus_zero, minus_zero, minus_zero); - - TEST_c_c (ctanh, plus_infty, 0, 1.0, 0.0); - TEST_c_c (ctanh, plus_infty, 1, 1.0, 0.0); - TEST_c_c (ctanh, plus_infty, minus_zero, 1.0, minus_zero); - TEST_c_c (ctanh, plus_infty, -1, 1.0, minus_zero); - TEST_c_c (ctanh, minus_infty, 0, -1.0, 0.0); - TEST_c_c (ctanh, minus_infty, 1, -1.0, 0.0); - TEST_c_c (ctanh, minus_infty, minus_zero, -1.0, minus_zero); - TEST_c_c (ctanh, minus_infty, -1, -1.0, minus_zero); - - TEST_c_c (ctanh, 0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctanh, 2, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctanh, 0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctanh, 2, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctanh, minus_zero, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctanh, -2, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctanh, minus_zero, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctanh, -2, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - - TEST_c_c (ctanh, plus_infty, nan_value, 1.0, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ctanh, minus_infty, nan_value, -1.0, 0.0, IGNORE_ZERO_INF_SIGN); - - TEST_c_c (ctanh, nan_value, 0, nan_value, 0.0); - TEST_c_c (ctanh, nan_value, minus_zero, nan_value, minus_zero); - - TEST_c_c (ctanh, nan_value, 0.5, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctanh, nan_value, -4.5, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (ctanh, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctanh, 5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctanh, minus_zero, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctanh, -0.25, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - - TEST_c_c (ctanh, nan_value, nan_value, nan_value, nan_value); - - TEST_c_c (ctanh, 0, M_PI_4l, 0.0, 1.0); - - TEST_c_c (ctanh, 0.75L, 1.25L, 1.37260757053378320258048606571226857L, 0.385795952609750664177596760720790220L); - TEST_c_c (ctanh, -2, -3, -0.965385879022133124278480269394560686L, 0.988437503832249372031403430350121098e-2L); - - END (ctanh, complex); -} -#endif - - -static void -erf_test (void) -{ - errno = 0; - FUNC(erf) (0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (erf); - - TEST_f_f (erf, 0, 0); - TEST_f_f (erf, minus_zero, minus_zero); - TEST_f_f (erf, plus_infty, 1); - TEST_f_f (erf, minus_infty, -1); - TEST_f_f (erf, nan_value, nan_value); - - TEST_f_f (erf, 0.125L, 0.140316204801333817393029446521623398L); - TEST_f_f (erf, 0.75L, 0.711155633653515131598937834591410777L); - TEST_f_f (erf, 1.25L, 0.922900128256458230136523481197281140L); - TEST_f_f (erf, 2.0L, 0.995322265018952734162069256367252929L); - TEST_f_f (erf, 4.125L, 0.999999994576599200434933994687765914L); - TEST_f_f (erf, 27.0L, 1.0L); - - END (erf); -} - - -static void -erfc_test (void) -{ - errno = 0; - FUNC(erfc) (0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (erfc); - - TEST_f_f (erfc, plus_infty, 0.0); - TEST_f_f (erfc, minus_infty, 2.0); - TEST_f_f (erfc, 0.0, 1.0); - TEST_f_f (erfc, minus_zero, 1.0); - TEST_f_f (erfc, nan_value, nan_value); - - TEST_f_f (erfc, 0.125L, 0.859683795198666182606970553478376602L); - TEST_f_f (erfc, 0.75L, 0.288844366346484868401062165408589223L); - TEST_f_f (erfc, 1.25L, 0.0770998717435417698634765188027188596L); - TEST_f_f (erfc, 2.0L, 0.00467773498104726583793074363274707139L); - TEST_f_f (erfc, 4.125L, 0.542340079956506600531223408575531062e-8L); -#ifdef TEST_LDOUBLE - /* The result can only be represented in long double. */ -# if LDBL_MIN_10_EXP < -319 - TEST_f_f (erfc, 27.0L, 0.523704892378925568501606768284954709e-318L); -# endif -#endif - - END (erfc); -} - - -static void -exp_test (void) -{ - errno = 0; - FUNC(exp) (0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (exp); - - TEST_f_f (exp, 0, 1); - TEST_f_f (exp, minus_zero, 1); - -#ifndef TEST_INLINE - TEST_f_f (exp, plus_infty, plus_infty); - TEST_f_f (exp, minus_infty, 0); -#endif - TEST_f_f (exp, nan_value, nan_value); - TEST_f_f (exp, 1, M_El); - - TEST_f_f (exp, 2, M_E2l); - TEST_f_f (exp, 3, M_E3l); - TEST_f_f (exp, 0.75L, 2.11700001661267466854536981983709561L); - TEST_f_f (exp, 50.0L, 5184705528587072464087.45332293348538L); -#ifdef TEST_LDOUBLE - /* The result can only be represented in long double. */ - TEST_f_f (exp, 1000.0L, 0.197007111401704699388887935224332313e435L); -#endif - - END (exp); -} - - -#if 0 -static void -exp10_test (void) -{ - errno = 0; - FUNC(exp10) (0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (exp10); - - TEST_f_f (exp10, 0, 1); - TEST_f_f (exp10, minus_zero, 1); - - TEST_f_f (exp10, plus_infty, plus_infty); - TEST_f_f (exp10, minus_infty, 0); - TEST_f_f (exp10, nan_value, nan_value); - TEST_f_f (exp10, 3, 1000); - TEST_f_f (exp10, -1, 0.1L); - TEST_f_f (exp10, 1e6, plus_infty); - TEST_f_f (exp10, -1e6, 0); - TEST_f_f (exp10, 0.75L, 5.62341325190349080394951039776481231L); - - END (exp10); -} - - -static void -exp2_test (void) -{ - errno = 0; - FUNC(exp2) (0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (exp2); - - TEST_f_f (exp2, 0, 1); - TEST_f_f (exp2, minus_zero, 1); - TEST_f_f (exp2, plus_infty, plus_infty); - TEST_f_f (exp2, minus_infty, 0); - TEST_f_f (exp2, nan_value, nan_value); - - TEST_f_f (exp2, 10, 1024); - TEST_f_f (exp2, -1, 0.5); - TEST_f_f (exp2, 1e6, plus_infty); - TEST_f_f (exp2, -1e6, 0); - TEST_f_f (exp2, 0.75L, 1.68179283050742908606225095246642979L); - - END (exp2); -} -#endif - - -static void -expm1_test (void) -{ - errno = 0; - FUNC(expm1) (0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (expm1); - - TEST_f_f (expm1, 0, 0); - TEST_f_f (expm1, minus_zero, minus_zero); - -#ifndef TEST_INLINE - TEST_f_f (expm1, plus_infty, plus_infty); - TEST_f_f (expm1, minus_infty, -1); -#endif - TEST_f_f (expm1, nan_value, nan_value); - - TEST_f_f (expm1, 1, M_El - 1.0); - TEST_f_f (expm1, 0.75L, 1.11700001661267466854536981983709561L); - - END (expm1); -} - - -static void -fabs_test (void) -{ - START (fabs); - - TEST_f_f (fabs, 0, 0); - TEST_f_f (fabs, minus_zero, 0); - - TEST_f_f (fabs, plus_infty, plus_infty); - TEST_f_f (fabs, minus_infty, plus_infty); - TEST_f_f (fabs, nan_value, nan_value); - - TEST_f_f (fabs, 38.0, 38.0); - TEST_f_f (fabs, -M_El, M_El); - - END (fabs); -} - - -static void -fdim_test (void) -{ - START (fdim); - - TEST_ff_f (fdim, 0, 0, 0); - TEST_ff_f (fdim, 9, 0, 9); - TEST_ff_f (fdim, 0, 9, 0); - TEST_ff_f (fdim, -9, 0, 0); - TEST_ff_f (fdim, 0, -9, 9); - - TEST_ff_f (fdim, plus_infty, 9, plus_infty); - TEST_ff_f (fdim, plus_infty, -9, plus_infty); - TEST_ff_f (fdim, minus_infty, 9, 0); - TEST_ff_f (fdim, minus_infty, -9, 0); - TEST_ff_f (fdim, 9, minus_infty, plus_infty); - TEST_ff_f (fdim, -9, minus_infty, plus_infty); - TEST_ff_f (fdim, 9, plus_infty, 0); - TEST_ff_f (fdim, -9, plus_infty, 0); - - TEST_ff_f (fdim, 0, nan_value, nan_value); - TEST_ff_f (fdim, 9, nan_value, nan_value); - TEST_ff_f (fdim, -9, nan_value, nan_value); - TEST_ff_f (fdim, nan_value, 9, nan_value); - TEST_ff_f (fdim, nan_value, -9, nan_value); - TEST_ff_f (fdim, plus_infty, nan_value, nan_value); - TEST_ff_f (fdim, minus_infty, nan_value, nan_value); - TEST_ff_f (fdim, nan_value, plus_infty, nan_value); - TEST_ff_f (fdim, nan_value, minus_infty, nan_value); - TEST_ff_f (fdim, nan_value, nan_value, nan_value); - - TEST_ff_f (fdim, plus_infty, plus_infty, 0); - - END (fdim); -} - - -static void -floor_test (void) -{ - START (floor); - - TEST_f_f (floor, 0.0, 0.0); - TEST_f_f (floor, minus_zero, minus_zero); - TEST_f_f (floor, plus_infty, plus_infty); - TEST_f_f (floor, minus_infty, minus_infty); - TEST_f_f (floor, nan_value, nan_value); - - TEST_f_f (floor, M_PIl, 3.0); - TEST_f_f (floor, -M_PIl, -4.0); - - TEST_f_f (floor, 0.25, 0.0); - TEST_f_f (floor, -0.25, -1.0); - - -#ifdef TEST_LDOUBLE - /* The result can only be represented in long double. */ - TEST_f_f (floor, 4503599627370495.5L, 4503599627370495.0L); - TEST_f_f (floor, 4503599627370496.25L, 4503599627370496.0L); - TEST_f_f (floor, 4503599627370496.5L, 4503599627370496.0L); - TEST_f_f (floor, 4503599627370496.75L, 4503599627370496.0L); - TEST_f_f (floor, 4503599627370497.5L, 4503599627370497.0L); - - TEST_f_f (floor, -4503599627370495.5L, -4503599627370496.0L); - TEST_f_f (floor, -4503599627370496.25L, -4503599627370497.0L); - TEST_f_f (floor, -4503599627370496.5L, -4503599627370497.0L); - TEST_f_f (floor, -4503599627370496.75L, -4503599627370497.0L); - TEST_f_f (floor, -4503599627370497.5L, -4503599627370498.0L); - - TEST_f_f (floor, 9007199254740991.5L, 9007199254740991.0L); - TEST_f_f (floor, 9007199254740992.25L, 9007199254740992.0L); - TEST_f_f (floor, 9007199254740992.5L, 9007199254740992.0L); - TEST_f_f (floor, 9007199254740992.75L, 9007199254740992.0L); - TEST_f_f (floor, 9007199254740993.5L, 9007199254740993.0L); - - TEST_f_f (floor, -9007199254740991.5L, -9007199254740992.0L); - TEST_f_f (floor, -9007199254740992.25L, -9007199254740993.0L); - TEST_f_f (floor, -9007199254740992.5L, -9007199254740993.0L); - TEST_f_f (floor, -9007199254740992.75L, -9007199254740993.0L); - TEST_f_f (floor, -9007199254740993.5L, -9007199254740994.0L); - - TEST_f_f (floor, 72057594037927935.5L, 72057594037927935.0L); - TEST_f_f (floor, 72057594037927936.25L, 72057594037927936.0L); - TEST_f_f (floor, 72057594037927936.5L, 72057594037927936.0L); - TEST_f_f (floor, 72057594037927936.75L, 72057594037927936.0L); - TEST_f_f (floor, 72057594037927937.5L, 72057594037927937.0L); - - TEST_f_f (floor, -72057594037927935.5L, -72057594037927936.0L); - TEST_f_f (floor, -72057594037927936.25L, -72057594037927937.0L); - TEST_f_f (floor, -72057594037927936.5L, -72057594037927937.0L); - TEST_f_f (floor, -72057594037927936.75L, -72057594037927937.0L); - TEST_f_f (floor, -72057594037927937.5L, -72057594037927938.0L); - - TEST_f_f (floor, 10141204801825835211973625643007.5L, 10141204801825835211973625643007.0L); - TEST_f_f (floor, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L); - TEST_f_f (floor, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L); - TEST_f_f (floor, 10141204801825835211973625643008.75L, 10141204801825835211973625643008.0L); - TEST_f_f (floor, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L); -#endif - - END (floor); -} - - -static void -fma_test (void) -{ - START (fma); - - TEST_fff_f (fma, 1.0, 2.0, 3.0, 5.0); - TEST_fff_f (fma, nan_value, 2.0, 3.0, nan_value); - TEST_fff_f (fma, 1.0, nan_value, 3.0, nan_value); - TEST_fff_f (fma, 1.0, 2.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_fff_f (fma, plus_infty, 0.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_fff_f (fma, minus_infty, 0.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_fff_f (fma, 0.0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_fff_f (fma, 0.0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_fff_f (fma, plus_infty, 0.0, 1.0, nan_value, INVALID_EXCEPTION); - TEST_fff_f (fma, minus_infty, 0.0, 1.0, nan_value, INVALID_EXCEPTION); - TEST_fff_f (fma, 0.0, plus_infty, 1.0, nan_value, INVALID_EXCEPTION); - TEST_fff_f (fma, 0.0, minus_infty, 1.0, nan_value, INVALID_EXCEPTION); - - TEST_fff_f (fma, plus_infty, plus_infty, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_fff_f (fma, minus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_fff_f (fma, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_fff_f (fma, minus_infty, minus_infty, minus_infty, nan_value, INVALID_EXCEPTION); - - TEST_fff_f (fma, 1.25L, 0.75L, 0.0625L, 1.0L); - - END (fma); -} - - -static void -fmax_test (void) -{ - START (fmax); - - TEST_ff_f (fmax, 0, 0, 0); - TEST_ff_f (fmax, minus_zero, minus_zero, minus_zero); - TEST_ff_f (fmax, 9, 0, 9); - TEST_ff_f (fmax, 0, 9, 9); - TEST_ff_f (fmax, -9, 0, 0); - TEST_ff_f (fmax, 0, -9, 0); - - TEST_ff_f (fmax, plus_infty, 9, plus_infty); - TEST_ff_f (fmax, 0, plus_infty, plus_infty); - TEST_ff_f (fmax, -9, plus_infty, plus_infty); - TEST_ff_f (fmax, plus_infty, -9, plus_infty); - - TEST_ff_f (fmax, minus_infty, 9, 9); - TEST_ff_f (fmax, minus_infty, -9, -9); - TEST_ff_f (fmax, 9, minus_infty, 9); - TEST_ff_f (fmax, -9, minus_infty, -9); - - TEST_ff_f (fmax, 0, nan_value, 0); - TEST_ff_f (fmax, 9, nan_value, 9); - TEST_ff_f (fmax, -9, nan_value, -9); - TEST_ff_f (fmax, nan_value, 0, 0); - TEST_ff_f (fmax, nan_value, 9, 9); - TEST_ff_f (fmax, nan_value, -9, -9); - TEST_ff_f (fmax, plus_infty, nan_value, plus_infty); - TEST_ff_f (fmax, minus_infty, nan_value, minus_infty); - TEST_ff_f (fmax, nan_value, plus_infty, plus_infty); - TEST_ff_f (fmax, nan_value, minus_infty, minus_infty); - TEST_ff_f (fmax, nan_value, nan_value, nan_value); - - END (fmax); -} - - -static void -fmin_test (void) -{ - START (fmin); - - TEST_ff_f (fmin, 0, 0, 0); - TEST_ff_f (fmin, minus_zero, minus_zero, minus_zero); - TEST_ff_f (fmin, 9, 0, 0); - TEST_ff_f (fmin, 0, 9, 0); - TEST_ff_f (fmin, -9, 0, -9); - TEST_ff_f (fmin, 0, -9, -9); - - TEST_ff_f (fmin, plus_infty, 9, 9); - TEST_ff_f (fmin, 9, plus_infty, 9); - TEST_ff_f (fmin, plus_infty, -9, -9); - TEST_ff_f (fmin, -9, plus_infty, -9); - TEST_ff_f (fmin, minus_infty, 9, minus_infty); - TEST_ff_f (fmin, minus_infty, -9, minus_infty); - TEST_ff_f (fmin, 9, minus_infty, minus_infty); - TEST_ff_f (fmin, -9, minus_infty, minus_infty); - - TEST_ff_f (fmin, 0, nan_value, 0); - TEST_ff_f (fmin, 9, nan_value, 9); - TEST_ff_f (fmin, -9, nan_value, -9); - TEST_ff_f (fmin, nan_value, 0, 0); - TEST_ff_f (fmin, nan_value, 9, 9); - TEST_ff_f (fmin, nan_value, -9, -9); - TEST_ff_f (fmin, plus_infty, nan_value, plus_infty); - TEST_ff_f (fmin, minus_infty, nan_value, minus_infty); - TEST_ff_f (fmin, nan_value, plus_infty, plus_infty); - TEST_ff_f (fmin, nan_value, minus_infty, minus_infty); - TEST_ff_f (fmin, nan_value, nan_value, nan_value); - - END (fmin); -} - - -static void -fmod_test (void) -{ - errno = 0; - FUNC(fmod) (6.5, 2.3L); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (fmod); - - /* fmod (+0, y) == +0 for y != 0. */ - TEST_ff_f (fmod, 0, 3, 0); - - /* fmod (-0, y) == -0 for y != 0. */ - TEST_ff_f (fmod, minus_zero, 3, minus_zero); - - /* fmod (+inf, y) == NaN plus invalid exception. */ - TEST_ff_f (fmod, plus_infty, 3, nan_value, INVALID_EXCEPTION); - /* fmod (-inf, y) == NaN plus invalid exception. */ - TEST_ff_f (fmod, minus_infty, 3, nan_value, INVALID_EXCEPTION); - /* fmod (x, +0) == NaN plus invalid exception. */ - TEST_ff_f (fmod, 3, 0, nan_value, INVALID_EXCEPTION); - /* fmod (x, -0) == NaN plus invalid exception. */ - TEST_ff_f (fmod, 3, minus_zero, nan_value, INVALID_EXCEPTION); - - /* fmod (x, +inf) == x for x not infinite. */ - TEST_ff_f (fmod, 3.0, plus_infty, 3.0); - /* fmod (x, -inf) == x for x not infinite. */ - TEST_ff_f (fmod, 3.0, minus_infty, 3.0); - - TEST_ff_f (fmod, nan_value, nan_value, nan_value); - - TEST_ff_f (fmod, 6.5, 2.25L, 2.0L); - TEST_ff_f (fmod, -6.5, 2.25L, -2.0L); - TEST_ff_f (fmod, 6.5, -2.25L, 2.0L); - TEST_ff_f (fmod, -6.5, -2.25L, -2.0L); - - END (fmod); -} - - -static void -fpclassify_test (void) -{ - START (fpclassify); - - TEST_f_i (fpclassify, nan_value, FP_NAN); - TEST_f_i (fpclassify, plus_infty, FP_INFINITE); - TEST_f_i (fpclassify, minus_infty, FP_INFINITE); - TEST_f_i (fpclassify, plus_zero, FP_ZERO); - TEST_f_i (fpclassify, minus_zero, FP_ZERO); - TEST_f_i (fpclassify, 1000, FP_NORMAL); - - END (fpclassify); -} - - -static void -frexp_test (void) -{ - int x; - - START (frexp); - - TEST_fI_f1 (frexp, plus_infty, plus_infty, IGNORE); - TEST_fI_f1 (frexp, minus_infty, minus_infty, IGNORE); - TEST_fI_f1 (frexp, nan_value, nan_value, IGNORE); - - TEST_fI_f1 (frexp, 0.0, 0.0, 0.0); - TEST_fI_f1 (frexp, minus_zero, minus_zero, 0.0); - - TEST_fI_f1 (frexp, 12.8L, 0.8L, 4); - TEST_fI_f1 (frexp, -27.34L, -0.854375L, 5); - - END (frexp); -} - - -static void -gamma_test (void) -{ - errno = 0; - FUNC(gamma) (1); - - if (errno == ENOSYS) - /* Function not implemented. */ - return; - feclearexcept (FE_ALL_EXCEPT); - - START (gamma); - - TEST_f_f (gamma, plus_infty, plus_infty); - TEST_f_f (gamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_f_f (gamma, -3, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_f_f (gamma, minus_infty, plus_infty); - TEST_f_f (gamma, nan_value, nan_value); - - TEST_f_f1 (gamma, 1, 0, 1); - TEST_f_f1 (gamma, 3, M_LN2l, 1); - - TEST_f_f1 (gamma, 0.5, M_LOG_SQRT_PIl, 1); - TEST_f_f1 (gamma, -0.5, M_LOG_2_SQRT_PIl, -1); - - END (gamma); -} - -static void -hypot_test (void) -{ - errno = 0; - FUNC(hypot) (0.7L, 12.4L); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (hypot); - - TEST_ff_f (hypot, plus_infty, 1, plus_infty, IGNORE_ZERO_INF_SIGN); - TEST_ff_f (hypot, minus_infty, 1, plus_infty, IGNORE_ZERO_INF_SIGN); - -#ifndef TEST_INLINE - TEST_ff_f (hypot, plus_infty, nan_value, plus_infty); - TEST_ff_f (hypot, minus_infty, nan_value, plus_infty); - TEST_ff_f (hypot, nan_value, plus_infty, plus_infty); - TEST_ff_f (hypot, nan_value, minus_infty, plus_infty); -#endif - - TEST_ff_f (hypot, nan_value, nan_value, nan_value); - - /* hypot (x,y) == hypot (+-x, +-y) */ - TEST_ff_f (hypot, 0.7L, 12.4L, 12.419742348374220601176836866763271L); - TEST_ff_f (hypot, -0.7L, 12.4L, 12.419742348374220601176836866763271L); - TEST_ff_f (hypot, 0.7L, -12.4L, 12.419742348374220601176836866763271L); - TEST_ff_f (hypot, -0.7L, -12.4L, 12.419742348374220601176836866763271L); - TEST_ff_f (hypot, 12.4L, 0.7L, 12.419742348374220601176836866763271L); - TEST_ff_f (hypot, -12.4L, 0.7L, 12.419742348374220601176836866763271L); - TEST_ff_f (hypot, 12.4L, -0.7L, 12.419742348374220601176836866763271L); - TEST_ff_f (hypot, -12.4L, -0.7L, 12.419742348374220601176836866763271L); - - /* hypot (x,0) == fabs (x) */ - TEST_ff_f (hypot, 0.75L, 0, 0.75L); - TEST_ff_f (hypot, -0.75L, 0, 0.75L); - TEST_ff_f (hypot, -5.7e7, 0, 5.7e7L); - - TEST_ff_f (hypot, 0.75L, 1.25L, 1.45773797371132511771853821938639577L); - - END (hypot); -} - - -static void -ilogb_test (void) -{ - START (ilogb); - - TEST_f_i (ilogb, 1, 0); - TEST_f_i (ilogb, M_El, 1); - TEST_f_i (ilogb, 1024, 10); - TEST_f_i (ilogb, -2000, 10); - - /* XXX We have a problem here: the standard does not tell us whether - exceptions are allowed/required. ignore them for now. */ - - TEST_f_i (ilogb, 0.0, FP_ILOGB0, EXCEPTIONS_OK); - TEST_f_i (ilogb, nan_value, FP_ILOGBNAN, EXCEPTIONS_OK); - TEST_f_i (ilogb, plus_infty, INT_MAX, EXCEPTIONS_OK); - TEST_f_i (ilogb, minus_infty, INT_MAX, EXCEPTIONS_OK); - - END (ilogb); -} - -static void -isfinite_test (void) -{ - START (isfinite); - - TEST_f_b (isfinite, 0, 1); - TEST_f_b (isfinite, minus_zero, 1); - TEST_f_b (isfinite, 10, 1); - TEST_f_b (isfinite, plus_infty, 0); - TEST_f_b (isfinite, minus_infty, 0); - TEST_f_b (isfinite, nan_value, 0); - - END (isfinite); -} - -static void -isnormal_test (void) -{ - START (isnormal); - - TEST_f_b (isnormal, 0, 0); - TEST_f_b (isnormal, minus_zero, 0); - TEST_f_b (isnormal, 10, 1); - TEST_f_b (isnormal, plus_infty, 0); - TEST_f_b (isnormal, minus_infty, 0); - TEST_f_b (isnormal, nan_value, 0); - - END (isnormal); -} - -#if defined __DO_XSI_MATH__ && !(defined TEST_LDOUBLE || defined TEST_FLOAT) -static void -j0_test (void) -{ - errno = 0; -#if 0 - FLOAT s, c; - FUNC (sincos) (0, &s, &c); - if (errno == ENOSYS) - /* Required function not implemented. */ - return; -#endif - FUNC(j0) (0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (j0); - - /* j0 is the Bessel function of the first kind of order 0 */ - TEST_f_f (j0, nan_value, nan_value); - TEST_f_f (j0, plus_infty, 0); - TEST_f_f (j0, -1.0, 0.765197686557966551449717526102663221L); - TEST_f_f (j0, 0.0, 1.0); - TEST_f_f (j0, 0.125L, 0.996097563041985204620768999453174712L); - TEST_f_f (j0, 0.75L, 0.864242275166648623555731103820923211L); - TEST_f_f (j0, 1.0, 0.765197686557966551449717526102663221L); - TEST_f_f (j0, 1.5, 0.511827671735918128749051744283411720L); - TEST_f_f (j0, 2.0, 0.223890779141235668051827454649948626L); - TEST_f_f (j0, 8.0, 0.171650807137553906090869407851972001L); - TEST_f_f (j0, 10.0, -0.245935764451348335197760862485328754L); - TEST_f_f (j0, 4.0, -3.9714980986384737228659076845169804197562E-1L); - TEST_f_f (j0, -4.0, -3.9714980986384737228659076845169804197562E-1L); - - END (j0); -} - - -static void -j1_test (void) -{ - errno = 0; -#if 0 - FLOAT s, c; - FUNC (sincos) (0, &s, &c); - if (errno == ENOSYS) - /* Required function not implemented. */ - return; -#endif - FUNC(j1) (0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - /* j1 is the Bessel function of the first kind of order 1 */ - - START (j1); - - TEST_f_f (j1, nan_value, nan_value); - TEST_f_f (j1, plus_infty, 0); - - TEST_f_f (j1, -1.0, -0.440050585744933515959682203718914913L); - TEST_f_f (j1, 0.0, 0.0); - TEST_f_f (j1, 0.125L, 0.0623780091344946810942311355879361177L); - TEST_f_f (j1, 0.75L, 0.349243602174862192523281016426251335L); - TEST_f_f (j1, 1.0, 0.440050585744933515959682203718914913L); - TEST_f_f (j1, 1.5, 0.557936507910099641990121213156089400L); - TEST_f_f (j1, 2.0, 0.576724807756873387202448242269137087L); - TEST_f_f (j1, 8.0, 0.234636346853914624381276651590454612L); - TEST_f_f (j1, 10.0, 0.0434727461688614366697487680258592883L); - - END (j1); -} - -static void -jn_test (void) -{ - errno = 0; -#if 0 - FLOAT s, c; - FUNC (sincos) (0, &s, &c); - if (errno == ENOSYS) - /* Required function not implemented. */ - return; -#endif - FUNC(jn) (1, 1); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - /* jn is the Bessel function of the first kind of order n. */ - START (jn); - - /* jn (0, x) == j0 (x) */ - TEST_ff_f (jn, 0, nan_value, nan_value); - TEST_ff_f (jn, 0, plus_infty, 0); - TEST_ff_f (jn, 0, -1.0, 0.765197686557966551449717526102663221L); - TEST_ff_f (jn, 0, 0.0, 1.0); - TEST_ff_f (jn, 0, 0.125L, 0.996097563041985204620768999453174712L); - TEST_ff_f (jn, 0, 0.75L, 0.864242275166648623555731103820923211L); - TEST_ff_f (jn, 0, 1.0, 0.765197686557966551449717526102663221L); - TEST_ff_f (jn, 0, 1.5, 0.511827671735918128749051744283411720L); - TEST_ff_f (jn, 0, 2.0, 0.223890779141235668051827454649948626L); - TEST_ff_f (jn, 0, 8.0, 0.171650807137553906090869407851972001L); - TEST_ff_f (jn, 0, 10.0, -0.245935764451348335197760862485328754L); - TEST_ff_f (jn, 0, 4.0, -3.9714980986384737228659076845169804197562E-1L); - TEST_ff_f (jn, 0, -4.0, -3.9714980986384737228659076845169804197562E-1L); - - /* jn (1, x) == j1 (x) */ - TEST_ff_f (jn, 1, nan_value, nan_value); - TEST_ff_f (jn, 1, plus_infty, 0); - TEST_ff_f (jn, 1, -1.0, -0.440050585744933515959682203718914913L); - TEST_ff_f (jn, 1, 0.0, 0.0); - TEST_ff_f (jn, 1, 0.125L, 0.0623780091344946810942311355879361177L); - TEST_ff_f (jn, 1, 0.75L, 0.349243602174862192523281016426251335L); - TEST_ff_f (jn, 1, 1.0, 0.440050585744933515959682203718914913L); - TEST_ff_f (jn, 1, 1.5, 0.557936507910099641990121213156089400L); - TEST_ff_f (jn, 1, 2.0, 0.576724807756873387202448242269137087L); - TEST_ff_f (jn, 1, 8.0, 0.234636346853914624381276651590454612L); - TEST_ff_f (jn, 1, 10.0, 0.0434727461688614366697487680258592883L); - - /* jn (3, x) */ - TEST_ff_f (jn, 3, nan_value, nan_value); - TEST_ff_f (jn, 3, plus_infty, 0); - - TEST_ff_f (jn, 3, -1.0, -0.0195633539826684059189053216217515083L); - TEST_ff_f (jn, 3, 0.0, 0.0); - TEST_ff_f (jn, 3, 0.125L, 0.406503832554912875023029337653442868e-4L); - TEST_ff_f (jn, 3, 0.75L, 0.848438342327410884392755236884386804e-2L); - TEST_ff_f (jn, 3, 1.0, 0.0195633539826684059189053216217515083L); - TEST_ff_f (jn, 3, 2.0, 0.128943249474402051098793332969239835L); - TEST_ff_f (jn, 3, 10.0, 0.0583793793051868123429354784103409563L); - - /* jn (10, x) */ - TEST_ff_f (jn, 10, nan_value, nan_value); - TEST_ff_f (jn, 10, plus_infty, 0); - - TEST_ff_f (jn, 10, -1.0, 0.263061512368745320699785368779050294e-9L); - TEST_ff_f (jn, 10, 0.0, 0.0); - TEST_ff_f (jn, 10, 0.125L, 0.250543369809369890173993791865771547e-18L); - TEST_ff_f (jn, 10, 0.75L, 0.149621713117596814698712483621682835e-10L); - TEST_ff_f (jn, 10, 1.0, 0.263061512368745320699785368779050294e-9L); - TEST_ff_f (jn, 10, 2.0, 0.251538628271673670963516093751820639e-6L); - TEST_ff_f (jn, 10, 10.0, 0.207486106633358857697278723518753428L); - - END (jn); -} -#endif /* __DO_XSI_MATH__ */ - - -static void -ldexp_test (void) -{ - TEST_ff_f (ldexp, 0, 0, 0); - TEST_ff_f (ldexp, minus_zero, 0, minus_zero); - - TEST_ff_f (ldexp, plus_infty, 1, plus_infty); - TEST_ff_f (ldexp, minus_infty, 1, minus_infty); - TEST_ff_f (ldexp, nan_value, 1, nan_value); - - TEST_ff_f (ldexp, 0.8L, 4, 12.8L); - TEST_ff_f (ldexp, -0.854375L, 5, -27.34L); - - /* ldexp (x, 0) == x. */ - TEST_ff_f (ldexp, 1.0L, 0L, 1.0L); -} - - -static void -lgamma_test (void) -{ - errno = 0; - FUNC(lgamma) (0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - feclearexcept (FE_ALL_EXCEPT); - - START (lgamma); - - TEST_f_f (lgamma, plus_infty, plus_infty); - TEST_f_f (lgamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_f_f (lgamma, nan_value, nan_value); - - /* lgamma (x) == +inf plus divide by zero exception for integer x <= 0. */ - TEST_f_f (lgamma, -3, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_f_f (lgamma, minus_infty, plus_infty); - - TEST_f_f1 (lgamma, 1, 0, 1); - - TEST_f_f1 (lgamma, 3, M_LN2l, 1); - - TEST_f_f1 (lgamma, 0.5, M_LOG_SQRT_PIl, 1); - TEST_f_f1 (lgamma, -0.5, M_LOG_2_SQRT_PIl, -1); - TEST_f_f1 (lgamma, 0.7L, 0.260867246531666514385732417016759578L, 1); - TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197028392998854470e-1L, 1); - - END (lgamma); -} - - -#if 0 -static void -lrint_test (void) -{ - /* XXX this test is incomplete. We need to have a way to specifiy - the rounding method and test the critical cases. So far, only - unproblematic numbers are tested. */ - - START (lrint); - - TEST_f_l (lrint, 0.0, 0); - TEST_f_l (lrint, minus_zero, 0); - TEST_f_l (lrint, 0.2L, 0); - TEST_f_l (lrint, -0.2L, 0); - - TEST_f_l (lrint, 1.4L, 1); - TEST_f_l (lrint, -1.4L, -1); - - TEST_f_l (lrint, 8388600.3L, 8388600); - TEST_f_l (lrint, -8388600.3L, -8388600); - - TEST_f_l (lrint, 1071930.0008, 1071930); -#ifndef TEST_FLOAT - TEST_f_l (lrint, 1073741824.01, 1073741824); -# if LONG_MAX > 281474976710656 - TEST_f_l (lrint, 281474976710656.025, 281474976710656); -# endif -#endif - - END (lrint); -} - - -static void -llrint_test (void) -{ - /* XXX this test is incomplete. We need to have a way to specifiy - the rounding method and test the critical cases. So far, only - unproblematic numbers are tested. */ - - START (llrint); - - TEST_f_L (llrint, 0.0, 0); - TEST_f_L (llrint, minus_zero, 0); - TEST_f_L (llrint, 0.2L, 0); - TEST_f_L (llrint, -0.2L, 0); - - TEST_f_L (llrint, 1.4L, 1); - TEST_f_L (llrint, -1.4L, -1); - - TEST_f_L (llrint, 8388600.3L, 8388600); - TEST_f_L (llrint, -8388600.3L, -8388600); - - TEST_f_l (llrint, 1071930.0008, 1071930); - - /* Test boundary conditions. */ - /* 0x1FFFFF */ - TEST_f_L (llrint, 2097151.0,2097151LL); - /* 0x800000 */ - TEST_f_L (llrint, 8388608.0, 8388608LL); - /* 0x1000000 */ - TEST_f_L (llrint, 16777216.0, 16777216LL); - /* 0x20000000000 */ - TEST_f_L (llrint, 2199023255552.0, 2199023255552LL); - /* 0x40000000000 */ - TEST_f_L (llrint, 4398046511104.0, 4398046511104LL); - /* 0x1000000000000 */ - TEST_f_L (llrint, 281474976710656.0, 281474976710656LL); - /* 0x10000000000000 */ - TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL); - /* 0x10000080000000 */ - TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL); - /* 0x20000000000000 */ - TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL); - /* 0x80000000000000 */ - TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL); - /* 0x100000000000000 */ - TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL); -#ifdef TEST_LDOUBLE - /* The input can only be represented in long double. */ - TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL); - TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL); - - TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL); - TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL); - - TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL); - TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL); - - TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL); - TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL); - - TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL); - TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL); - TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL); - TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL); - TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL); - - TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL); - TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL); - TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL); - TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL); - TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL); -#endif - - END (llrint); -} -#endif - - -static void -log_test (void) -{ - errno = 0; - FUNC(log) (1); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - START (log); - - TEST_f_f (log, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_f_f (log, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); - - TEST_f_f (log, 1, 0); - - TEST_f_f (log, -1, nan_value, INVALID_EXCEPTION); - TEST_f_f (log, plus_infty, plus_infty); - - TEST_f_f (log, M_El, 1); - TEST_f_f (log, 1.0 / M_El, -1); - TEST_f_f (log, 2, M_LN2l); - TEST_f_f (log, 10, M_LN10l); - TEST_f_f (log, 0.75L, -0.287682072451780927439219005993827432L); - - END (log); -} - - -static void -log10_test (void) -{ - errno = 0; - FUNC(log10) (1); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (log10); - - TEST_f_f (log10, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_f_f (log10, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); - - TEST_f_f (log10, 1, 0); - - /* log10 (x) == NaN plus invalid exception if x < 0. */ - TEST_f_f (log10, -1, nan_value, INVALID_EXCEPTION); - - TEST_f_f (log10, plus_infty, plus_infty); - TEST_f_f (log10, nan_value, nan_value); - - TEST_f_f (log10, 0.1L, -1); - TEST_f_f (log10, 10.0, 1); - TEST_f_f (log10, 100.0, 2); - TEST_f_f (log10, 10000.0, 4); - TEST_f_f (log10, M_El, M_LOG10El); - TEST_f_f (log10, 0.75L, -0.124938736608299953132449886193870744L); - - END (log10); -} - - -static void -log1p_test (void) -{ - errno = 0; - FUNC(log1p) (0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (log1p); - - TEST_f_f (log1p, 0, 0); - TEST_f_f (log1p, minus_zero, minus_zero); - - TEST_f_f (log1p, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_f_f (log1p, -2, nan_value, INVALID_EXCEPTION); - - TEST_f_f (log1p, plus_infty, plus_infty); - TEST_f_f (log1p, nan_value, nan_value); - - TEST_f_f (log1p, M_El - 1.0, 1); - - TEST_f_f (log1p, -0.25L, -0.287682072451780927439219005993827432L); - TEST_f_f (log1p, -0.875, -2.07944154167983592825169636437452970L); - - END (log1p); -} - -static void -log2_test (void) -{ - errno = 0; - FUNC(log2) (1); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (log2); - - TEST_f_f (log2, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_f_f (log2, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); - - TEST_f_f (log2, 1, 0); - - TEST_f_f (log2, -1, nan_value, INVALID_EXCEPTION); - - TEST_f_f (log2, plus_infty, plus_infty); - TEST_f_f (log2, nan_value, nan_value); - - TEST_f_f (log2, M_El, M_LOG2El); - TEST_f_f (log2, 2.0, 1); - TEST_f_f (log2, 16.0, 4); - TEST_f_f (log2, 256.0, 8); - TEST_f_f (log2, 0.75L, -.415037499278843818546261056052183492L); - - END (log2); -} - -static void -logb_test (void) -{ - START (logb); - - TEST_f_f (logb, plus_infty, plus_infty); - TEST_f_f (logb, minus_infty, plus_infty); - - TEST_f_f (logb, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); - - TEST_f_f (logb, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_f_f (logb, nan_value, nan_value); - - TEST_f_f (logb, 1, 0); - TEST_f_f (logb, M_El, 1); - TEST_f_f (logb, 1024, 10); - TEST_f_f (logb, -2000, 10); - - END (logb); -} - - -#if 0 -static void -lround_test (void) -{ - START (lround); - - TEST_f_l (lround, 0, 0); - TEST_f_l (lround, minus_zero, 0); - TEST_f_l (lround, 0.2L, 0.0); - TEST_f_l (lround, -0.2L, 0); - TEST_f_l (lround, 0.5, 1); - TEST_f_l (lround, -0.5, -1); - TEST_f_l (lround, 0.8L, 1); - TEST_f_l (lround, -0.8L, -1); - TEST_f_l (lround, 1.5, 2); - TEST_f_l (lround, -1.5, -2); - TEST_f_l (lround, 22514.5, 22515); - TEST_f_l (lround, -22514.5, -22515); - TEST_f_l (lround, 1071930.0008, 1071930); -#ifndef TEST_FLOAT - TEST_f_l (lround, 1073741824.01, 1073741824); -# if LONG_MAX > 281474976710656 - TEST_f_l (lround, 281474976710656.025, 281474976710656); -# endif - TEST_f_l (lround, 2097152.5, 2097153); - TEST_f_l (lround, -2097152.5, -2097153); -#endif - END (lround); -} - - -static void -llround_test (void) -{ - START (llround); - - TEST_f_L (llround, 0, 0); - TEST_f_L (llround, minus_zero, 0); - TEST_f_L (llround, 0.2L, 0.0); - TEST_f_L (llround, -0.2L, 0); - TEST_f_L (llround, 0.5, 1); - TEST_f_L (llround, -0.5, -1); - TEST_f_L (llround, 0.8L, 1); - TEST_f_L (llround, -0.8L, -1); - TEST_f_L (llround, 1.5, 2); - TEST_f_L (llround, -1.5, -2); - TEST_f_L (llround, 22514.5, 22515); - TEST_f_L (llround, -22514.5, -22515); - TEST_f_l (llround, 1071930.0008, 1071930); -#ifndef TEST_FLOAT - TEST_f_L (llround, 2097152.5, 2097153); - TEST_f_L (llround, -2097152.5, -2097153); - TEST_f_L (llround, 34359738368.5, 34359738369ll); - TEST_f_L (llround, -34359738368.5, -34359738369ll); -#endif - - /* Test boundary conditions. */ - /* 0x1FFFFF */ - TEST_f_L (llround, 2097151.0, 2097151LL); - /* 0x800000 */ - TEST_f_L (llround, 8388608.0, 8388608LL); - /* 0x1000000 */ - TEST_f_L (llround, 16777216.0, 16777216LL); - /* 0x20000000000 */ - TEST_f_L (llround, 2199023255552.0, 2199023255552LL); - /* 0x40000000000 */ - TEST_f_L (llround, 4398046511104.0, 4398046511104LL); - /* 0x1000000000000 */ - TEST_f_L (llround, 281474976710656.0, 281474976710656LL); - /* 0x10000000000000 */ - TEST_f_L (llround, 4503599627370496.0, 4503599627370496LL); - /* 0x10000080000000 */ - TEST_f_L (llround, 4503601774854144.0, 4503601774854144LL); - /* 0x20000000000000 */ - TEST_f_L (llround, 9007199254740992.0, 9007199254740992LL); - /* 0x80000000000000 */ - TEST_f_L (llround, 36028797018963968.0, 36028797018963968LL); - /* 0x100000000000000 */ - TEST_f_L (llround, 72057594037927936.0, 72057594037927936LL); - -#ifndef TEST_FLOAT - /* 0x100000000 */ - TEST_f_L (llround, 4294967295.5, 4294967296LL); - /* 0x200000000 */ - TEST_f_L (llround, 8589934591.5, 8589934592LL); -#endif - -#ifdef TEST_LDOUBLE - /* The input can only be represented in long double. */ - TEST_f_L (llround, 4503599627370495.5L, 4503599627370496LL); - TEST_f_L (llround, 4503599627370496.25L, 4503599627370496LL); - TEST_f_L (llround, 4503599627370496.5L, 4503599627370497LL); - TEST_f_L (llround, 4503599627370496.75L, 4503599627370497LL); - TEST_f_L (llround, 4503599627370497.5L, 4503599627370498LL); - - TEST_f_L (llround, -4503599627370495.5L, -4503599627370496LL); - TEST_f_L (llround, -4503599627370496.25L, -4503599627370496LL); - TEST_f_L (llround, -4503599627370496.5L, -4503599627370497LL); - TEST_f_L (llround, -4503599627370496.75L, -4503599627370497LL); - TEST_f_L (llround, -4503599627370497.5L, -4503599627370498LL); - - TEST_f_L (llround, 9007199254740991.5L, 9007199254740992LL); - TEST_f_L (llround, 9007199254740992.25L, 9007199254740992LL); - TEST_f_L (llround, 9007199254740992.5L, 9007199254740993LL); - TEST_f_L (llround, 9007199254740992.75L, 9007199254740993LL); - TEST_f_L (llround, 9007199254740993.5L, 9007199254740994LL); - - TEST_f_L (llround, -9007199254740991.5L, -9007199254740992LL); - TEST_f_L (llround, -9007199254740992.25L, -9007199254740992LL); - TEST_f_L (llround, -9007199254740992.5L, -9007199254740993LL); - TEST_f_L (llround, -9007199254740992.75L, -9007199254740993LL); - TEST_f_L (llround, -9007199254740993.5L, -9007199254740994LL); - - TEST_f_L (llround, 72057594037927935.5L, 72057594037927936LL); - TEST_f_L (llround, 72057594037927936.25L, 72057594037927936LL); - TEST_f_L (llround, 72057594037927936.5L, 72057594037927937LL); - TEST_f_L (llround, 72057594037927936.75L, 72057594037927937LL); - TEST_f_L (llround, 72057594037927937.5L, 72057594037927938LL); - - TEST_f_L (llround, -72057594037927935.5L, -72057594037927936LL); - TEST_f_L (llround, -72057594037927936.25L, -72057594037927936LL); - TEST_f_L (llround, -72057594037927936.5L, -72057594037927937LL); - TEST_f_L (llround, -72057594037927936.75L, -72057594037927937LL); - TEST_f_L (llround, -72057594037927937.5L, -72057594037927938LL); - - TEST_f_L (llround, 9223372036854775806.25L, 9223372036854775806LL); - TEST_f_L (llround, -9223372036854775806.25L, -9223372036854775806LL); - TEST_f_L (llround, 9223372036854775806.5L, 9223372036854775807LL); - TEST_f_L (llround, -9223372036854775806.5L, -9223372036854775807LL); - TEST_f_L (llround, 9223372036854775807.0L, 9223372036854775807LL); - TEST_f_L (llround, -9223372036854775807.0L, -9223372036854775807LL); -#endif - - END (llround); -} -#endif - -static void -modf_test (void) -{ - FLOAT x; - - START (modf); - - TEST_fF_f1 (modf, plus_infty, 0, plus_infty); - TEST_fF_f1 (modf, minus_infty, minus_zero, minus_infty); - TEST_fF_f1 (modf, nan_value, nan_value, nan_value); - TEST_fF_f1 (modf, 0, 0, 0); - TEST_fF_f1 (modf, 1.5, 0.5, 1); - TEST_fF_f1 (modf, 2.5, 0.5, 2); - TEST_fF_f1 (modf, -2.5, -0.5, -2); - TEST_fF_f1 (modf, 20, 0, 20); - TEST_fF_f1 (modf, 21, 0, 21); - TEST_fF_f1 (modf, 89.5, 0.5, 89); - - END (modf); -} - - -static void -nearbyint_test (void) -{ - START (nearbyint); - - TEST_f_f (nearbyint, 0.0, 0.0); - TEST_f_f (nearbyint, minus_zero, minus_zero); - TEST_f_f (nearbyint, plus_infty, plus_infty); - TEST_f_f (nearbyint, minus_infty, minus_infty); - TEST_f_f (nearbyint, nan_value, nan_value); - - /* Default rounding mode is round to nearest. */ - TEST_f_f (nearbyint, 0.5, 0.0); - TEST_f_f (nearbyint, 1.5, 2.0); - TEST_f_f (nearbyint, -0.5, minus_zero); - TEST_f_f (nearbyint, -1.5, -2.0); - - END (nearbyint); -} - -static void -nextafter_test (void) -{ - - START (nextafter); - - TEST_ff_f (nextafter, 0, 0, 0); - TEST_ff_f (nextafter, minus_zero, 0, 0); - TEST_ff_f (nextafter, 0, minus_zero, minus_zero); - TEST_ff_f (nextafter, minus_zero, minus_zero, minus_zero); - - TEST_ff_f (nextafter, 9, 9, 9); - TEST_ff_f (nextafter, -9, -9, -9); - TEST_ff_f (nextafter, plus_infty, plus_infty, plus_infty); - TEST_ff_f (nextafter, minus_infty, minus_infty, minus_infty); - - TEST_ff_f (nextafter, nan_value, 1.1L, nan_value); - TEST_ff_f (nextafter, 1.1L, nan_value, nan_value); - TEST_ff_f (nextafter, nan_value, nan_value, nan_value); - - FLOAT fltmax = CHOOSE (LDBL_MAX, DBL_MAX, FLT_MAX, - LDBL_MAX, DBL_MAX, FLT_MAX); - TEST_ff_f (nextafter, fltmax, plus_infty, plus_infty); - TEST_ff_f (nextafter, -fltmax, minus_infty, minus_infty); - -#ifdef TEST_LDOUBLE - // XXX Enable once gcc is fixed. - //TEST_ff_f (nextafter, 0x0.00000040000000000000p-16385L, -0.1L, 0x0.0000003ffffffff00000p-16385L); -#endif - - /* XXX We need the hexadecimal FP number representation here for further - tests. */ - - END (nextafter); -} - - -static void -nexttoward_test (void) -{ - START (nexttoward); - TEST_ff_f (nexttoward, 0, 0, 0); - TEST_ff_f (nexttoward, minus_zero, 0, 0); - TEST_ff_f (nexttoward, 0, minus_zero, minus_zero); - TEST_ff_f (nexttoward, minus_zero, minus_zero, minus_zero); - - TEST_ff_f (nexttoward, 9, 9, 9); - TEST_ff_f (nexttoward, -9, -9, -9); - TEST_ff_f (nexttoward, plus_infty, plus_infty, plus_infty); - TEST_ff_f (nexttoward, minus_infty, minus_infty, minus_infty); - - TEST_ff_f (nexttoward, nan_value, 1.1L, nan_value); - TEST_ff_f (nexttoward, 1.1L, nan_value, nan_value); - TEST_ff_f (nexttoward, nan_value, nan_value, nan_value); - - /* XXX We need the hexadecimal FP number representation here for further - tests. */ - - END (nexttoward); -} - - -static void -pow_test (void) -{ - - errno = 0; - FUNC(pow) (0, 0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (pow); - - TEST_ff_f (pow, 0, 0, 1); - TEST_ff_f (pow, 0, minus_zero, 1); - TEST_ff_f (pow, minus_zero, 0, 1); - TEST_ff_f (pow, minus_zero, minus_zero, 1); - - TEST_ff_f (pow, 10, 0, 1); - TEST_ff_f (pow, 10, minus_zero, 1); - TEST_ff_f (pow, -10, 0, 1); - TEST_ff_f (pow, -10, minus_zero, 1); - - TEST_ff_f (pow, nan_value, 0, 1); - TEST_ff_f (pow, nan_value, minus_zero, 1); - - -#ifndef TEST_INLINE - TEST_ff_f (pow, 1.1L, plus_infty, plus_infty); - TEST_ff_f (pow, plus_infty, plus_infty, plus_infty); - TEST_ff_f (pow, -1.1L, plus_infty, plus_infty); - TEST_ff_f (pow, minus_infty, plus_infty, plus_infty); - - TEST_ff_f (pow, 0.9L, plus_infty, 0); - TEST_ff_f (pow, 1e-7L, plus_infty, 0); - TEST_ff_f (pow, -0.9L, plus_infty, 0); - TEST_ff_f (pow, -1e-7L, plus_infty, 0); - - TEST_ff_f (pow, 1.1L, minus_infty, 0); - TEST_ff_f (pow, plus_infty, minus_infty, 0); - TEST_ff_f (pow, -1.1L, minus_infty, 0); - TEST_ff_f (pow, minus_infty, minus_infty, 0); - - TEST_ff_f (pow, 0.9L, minus_infty, plus_infty); - TEST_ff_f (pow, 1e-7L, minus_infty, plus_infty); - TEST_ff_f (pow, -0.9L, minus_infty, plus_infty); - TEST_ff_f (pow, -1e-7L, minus_infty, plus_infty); - - TEST_ff_f (pow, plus_infty, 1e-7L, plus_infty); - TEST_ff_f (pow, plus_infty, 1, plus_infty); - TEST_ff_f (pow, plus_infty, 1e7L, plus_infty); - - TEST_ff_f (pow, plus_infty, -1e-7L, 0); - TEST_ff_f (pow, plus_infty, -1, 0); - TEST_ff_f (pow, plus_infty, -1e7L, 0); - - TEST_ff_f (pow, minus_infty, 1, minus_infty); - TEST_ff_f (pow, minus_infty, 11, minus_infty); - TEST_ff_f (pow, minus_infty, 1001, minus_infty); - - TEST_ff_f (pow, minus_infty, 2, plus_infty); - TEST_ff_f (pow, minus_infty, 12, plus_infty); - TEST_ff_f (pow, minus_infty, 1002, plus_infty); - TEST_ff_f (pow, minus_infty, 0.1L, plus_infty); - TEST_ff_f (pow, minus_infty, 1.1L, plus_infty); - TEST_ff_f (pow, minus_infty, 11.1L, plus_infty); - TEST_ff_f (pow, minus_infty, 1001.1L, plus_infty); - - TEST_ff_f (pow, minus_infty, -1, minus_zero); - TEST_ff_f (pow, minus_infty, -11, minus_zero); - TEST_ff_f (pow, minus_infty, -1001, minus_zero); - - TEST_ff_f (pow, minus_infty, -2, 0); - TEST_ff_f (pow, minus_infty, -12, 0); - TEST_ff_f (pow, minus_infty, -1002, 0); - TEST_ff_f (pow, minus_infty, -0.1L, 0); - TEST_ff_f (pow, minus_infty, -1.1L, 0); - TEST_ff_f (pow, minus_infty, -11.1L, 0); - TEST_ff_f (pow, minus_infty, -1001.1L, 0); -#endif - - TEST_ff_f (pow, nan_value, nan_value, nan_value); - TEST_ff_f (pow, 0, nan_value, nan_value); - TEST_ff_f (pow, 1, nan_value, 1); - TEST_ff_f (pow, -1, nan_value, nan_value); - TEST_ff_f (pow, nan_value, 1, nan_value); - TEST_ff_f (pow, nan_value, -1, nan_value); - - /* pow (x, NaN) == NaN. */ - TEST_ff_f (pow, 3.0, nan_value, nan_value); - - TEST_ff_f (pow, 1, plus_infty, 1); - TEST_ff_f (pow, -1, plus_infty, 1); - TEST_ff_f (pow, 1, minus_infty, 1); - TEST_ff_f (pow, -1, minus_infty, 1); - TEST_ff_f (pow, 1, 1, 1); - TEST_ff_f (pow, 1, -1, 1); - TEST_ff_f (pow, 1, 1.25, 1); - TEST_ff_f (pow, 1, -1.25, 1); - TEST_ff_f (pow, 1, 0x1p62L, 1); - TEST_ff_f (pow, 1, 0x1p63L, 1); - TEST_ff_f (pow, 1, 0x1p64L, 1); - TEST_ff_f (pow, 1, 0x1p72L, 1); - - /* pow (x, +-0) == 1. */ - TEST_ff_f (pow, plus_infty, 0, 1); - TEST_ff_f (pow, plus_infty, minus_zero, 1); - TEST_ff_f (pow, minus_infty, 0, 1); - TEST_ff_f (pow, minus_infty, minus_zero, 1); - TEST_ff_f (pow, 32.75L, 0, 1); - TEST_ff_f (pow, 32.75L, minus_zero, 1); - TEST_ff_f (pow, -32.75L, 0, 1); - TEST_ff_f (pow, -32.75L, minus_zero, 1); - TEST_ff_f (pow, 0x1p72L, 0, 1); - TEST_ff_f (pow, 0x1p72L, minus_zero, 1); - TEST_ff_f (pow, 0x1p-72L, 0, 1); - TEST_ff_f (pow, 0x1p-72L, minus_zero, 1); - - TEST_ff_f (pow, -0.1L, 1.1L, nan_value, INVALID_EXCEPTION); - TEST_ff_f (pow, -0.1L, -1.1L, nan_value, INVALID_EXCEPTION); - TEST_ff_f (pow, -10.1L, 1.1L, nan_value, INVALID_EXCEPTION); - TEST_ff_f (pow, -10.1L, -1.1L, nan_value, INVALID_EXCEPTION); - - TEST_ff_f (pow, 0, -1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_ff_f (pow, 0, -11, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_ff_f (pow, minus_zero, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_ff_f (pow, minus_zero, -11, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); - - TEST_ff_f (pow, 0, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_ff_f (pow, 0, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_ff_f (pow, minus_zero, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_ff_f (pow, minus_zero, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); - - TEST_ff_f (pow, 0x1p72L, 0x1p72L, plus_infty); - TEST_ff_f (pow, 10, -0x1p72L, 0); - TEST_ff_f (pow, max_value, max_value, plus_infty); - TEST_ff_f (pow, 10, -max_value, 0); - - TEST_ff_f (pow, 0, 1, 0); - TEST_ff_f (pow, 0, 11, 0); - - TEST_ff_f (pow, minus_zero, 1, minus_zero); - TEST_ff_f (pow, minus_zero, 11, minus_zero); - - - TEST_ff_f (pow, 0, 2, 0); - TEST_ff_f (pow, 0, 11.1L, 0); - - - TEST_ff_f (pow, minus_zero, 2, 0); - TEST_ff_f (pow, minus_zero, 11.1L, 0); - TEST_ff_f (pow, 0, plus_infty, 0); - TEST_ff_f (pow, minus_zero, plus_infty, 0); - -#ifndef TEST_INLINE - /* pow (x, +inf) == +inf for |x| > 1. */ - TEST_ff_f (pow, 1.5, plus_infty, plus_infty); - - /* pow (x, +inf) == +0 for |x| < 1. */ - TEST_ff_f (pow, 0.5, plus_infty, 0.0); - - /* pow (x, -inf) == +0 for |x| > 1. */ - TEST_ff_f (pow, 1.5, minus_infty, 0.0); - - /* pow (x, -inf) == +inf for |x| < 1. */ - TEST_ff_f (pow, 0.5, minus_infty, plus_infty); -#endif - - /* pow (+inf, y) == +inf for y > 0. */ - TEST_ff_f (pow, plus_infty, 2, plus_infty); - - /* pow (+inf, y) == +0 for y < 0. */ - TEST_ff_f (pow, plus_infty, -1, 0.0); - - /* pow (-inf, y) == -inf for y an odd integer > 0. */ - TEST_ff_f (pow, minus_infty, 27, minus_infty); - - /* pow (-inf, y) == +inf for y > 0 and not an odd integer. */ - TEST_ff_f (pow, minus_infty, 28, plus_infty); - - /* pow (-inf, y) == -0 for y an odd integer < 0. */ - TEST_ff_f (pow, minus_infty, -3, minus_zero); - /* pow (-inf, y) == +0 for y < 0 and not an odd integer. */ - TEST_ff_f (pow, minus_infty, -2.0, 0.0); - - /* pow (+0, y) == +0 for y an odd integer > 0. */ - TEST_ff_f (pow, 0.0, 27, 0.0); - - /* pow (-0, y) == -0 for y an odd integer > 0. */ - TEST_ff_f (pow, minus_zero, 27, minus_zero); - - /* pow (+0, y) == +0 for y > 0 and not an odd integer. */ - TEST_ff_f (pow, 0.0, 4, 0.0); - - /* pow (-0, y) == +0 for y > 0 and not an odd integer. */ - TEST_ff_f (pow, minus_zero, 4, 0.0); - - TEST_ff_f (pow, 16, 0.25L, 2); - TEST_ff_f (pow, 0x1p64L, 0.125L, 256); - TEST_ff_f (pow, 2, 4, 16); - TEST_ff_f (pow, 256, 8, 0x1p64L); - - TEST_ff_f (pow, 0.75L, 1.25L, 0.697953644326574699205914060237425566L); - -#if defined TEST_DOUBLE || defined TEST_LDOUBLE - TEST_ff_f (pow, -7.49321e+133, -9.80818e+16, 0); -#endif - - END (pow); -} - -static void -remainder_test (void) -{ - errno = 0; - FUNC(remainder) (1.625, 1.0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (remainder); - - TEST_ff_f (remainder, 1, 0, nan_value, INVALID_EXCEPTION); - TEST_ff_f (remainder, 1, minus_zero, nan_value, INVALID_EXCEPTION); - TEST_ff_f (remainder, plus_infty, 1, nan_value, INVALID_EXCEPTION); - TEST_ff_f (remainder, minus_infty, 1, nan_value, INVALID_EXCEPTION); - TEST_ff_f (remainder, nan_value, nan_value, nan_value); - - TEST_ff_f (remainder, 1.625, 1.0, -0.375); - TEST_ff_f (remainder, -1.625, 1.0, 0.375); - TEST_ff_f (remainder, 1.625, -1.0, -0.375); - TEST_ff_f (remainder, -1.625, -1.0, 0.375); - TEST_ff_f (remainder, 5.0, 2.0, 1.0); - TEST_ff_f (remainder, 3.0, 2.0, -1.0); - - END (remainder); -} - -static void -remquo_test (void) -{ - /* x is needed. */ - int x; - - errno = 0; - FUNC(remquo) (1.625, 1.0, &x); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (remquo); - - TEST_ffI_f1 (remquo, 1, 0, nan_value, IGNORE, INVALID_EXCEPTION); - TEST_ffI_f1 (remquo, 1, minus_zero, nan_value, IGNORE, INVALID_EXCEPTION); - TEST_ffI_f1 (remquo, plus_infty, 1, nan_value, IGNORE, INVALID_EXCEPTION); - TEST_ffI_f1 (remquo, minus_infty, 1, nan_value, IGNORE, INVALID_EXCEPTION); - TEST_ffI_f1 (remquo, nan_value, nan_value, nan_value, IGNORE); - - TEST_ffI_f1 (remquo, 1.625, 1.0, -0.375, 2); - TEST_ffI_f1 (remquo, -1.625, 1.0, 0.375, -2); - TEST_ffI_f1 (remquo, 1.625, -1.0, -0.375, -2); - TEST_ffI_f1 (remquo, -1.625, -1.0, 0.375, 2); - - TEST_ffI_f1 (remquo, 5, 2, 1, 2); - TEST_ffI_f1 (remquo, 3, 2, -1, 2); - - END (remquo); -} - -static void -rint_test (void) -{ - START (rint); - - TEST_f_f (rint, 0.0, 0.0); - TEST_f_f (rint, minus_zero, minus_zero); - TEST_f_f (rint, plus_infty, plus_infty); - TEST_f_f (rint, minus_infty, minus_infty); - - /* Default rounding mode is round to even. */ - TEST_f_f (rint, 0.5, 0.0); - TEST_f_f (rint, 1.5, 2.0); - TEST_f_f (rint, 2.5, 2.0); - TEST_f_f (rint, 3.5, 4.0); - TEST_f_f (rint, 4.5, 4.0); - TEST_f_f (rint, -0.5, -0.0); - TEST_f_f (rint, -1.5, -2.0); - TEST_f_f (rint, -2.5, -2.0); - TEST_f_f (rint, -3.5, -4.0); - TEST_f_f (rint, -4.5, -4.0); -#ifdef TEST_LDOUBLE - /* The result can only be represented in long double. */ - TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L); - TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L); - TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L); - TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L); - TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L); - - TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L); - TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L); - TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L); - TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L); - TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L); - - TEST_f_f (rint, 9007199254740991.5L, 9007199254740992.0L); - TEST_f_f (rint, 9007199254740992.25L, 9007199254740992.0L); - TEST_f_f (rint, 9007199254740992.5L, 9007199254740992.0L); - TEST_f_f (rint, 9007199254740992.75L, 9007199254740993.0L); - TEST_f_f (rint, 9007199254740993.5L, 9007199254740994.0L); - - TEST_f_f (rint, -9007199254740991.5L, -9007199254740992.0L); - TEST_f_f (rint, -9007199254740992.25L, -9007199254740992.0L); - TEST_f_f (rint, -9007199254740992.5L, -9007199254740992.0L); - TEST_f_f (rint, -9007199254740992.75L, -9007199254740993.0L); - TEST_f_f (rint, -9007199254740993.5L, -9007199254740994.0L); - - TEST_f_f (rint, 72057594037927935.5L, 72057594037927936.0L); - TEST_f_f (rint, 72057594037927936.25L, 72057594037927936.0L); - TEST_f_f (rint, 72057594037927936.5L, 72057594037927936.0L); - TEST_f_f (rint, 72057594037927936.75L, 72057594037927937.0L); - TEST_f_f (rint, 72057594037927937.5L, 72057594037927938.0L); - - TEST_f_f (rint, -72057594037927935.5L, -72057594037927936.0L); - TEST_f_f (rint, -72057594037927936.25L, -72057594037927936.0L); - TEST_f_f (rint, -72057594037927936.5L, -72057594037927936.0L); - TEST_f_f (rint, -72057594037927936.75L, -72057594037927937.0L); - TEST_f_f (rint, -72057594037927937.5L, -72057594037927938.0L); - - TEST_f_f (rint, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L); - TEST_f_f (rint, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L); - TEST_f_f (rint, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L); - TEST_f_f (rint, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L); - TEST_f_f (rint, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L); -#endif - - END (rint); -} - -#if 0 -static void -rint_test_tonearest (void) -{ - int save_round_mode; - START (rint_tonearest); - - save_round_mode = fegetround(); - - if (!fesetround (FE_TONEAREST)) - { - TEST_f_f (rint, 2.0, 2.0); - TEST_f_f (rint, 1.5, 2.0); - TEST_f_f (rint, 1.0, 1.0); - TEST_f_f (rint, 0.5, 0.0); - TEST_f_f (rint, 0.0, 0.0); - TEST_f_f (rint, minus_zero, minus_zero); - TEST_f_f (rint, -0.5, -0.0); - TEST_f_f (rint, -1.0, -1.0); - TEST_f_f (rint, -1.5, -2.0); - TEST_f_f (rint, -2.0, -2.0); - } - - fesetround(save_round_mode); - - END (rint_tonearest); -} - -static void -rint_test_towardzero (void) -{ - int save_round_mode; - START (rint_towardzero); - - save_round_mode = fegetround(); - - if (!fesetround (FE_TOWARDZERO)) - { - TEST_f_f (rint, 2.0, 2.0); - TEST_f_f (rint, 1.5, 1.0); - TEST_f_f (rint, 1.0, 1.0); - TEST_f_f (rint, 0.5, 0.0); - TEST_f_f (rint, 0.0, 0.0); - TEST_f_f (rint, minus_zero, minus_zero); - TEST_f_f (rint, -0.5, -0.0); - TEST_f_f (rint, -1.0, -1.0); - TEST_f_f (rint, -1.5, -1.0); - TEST_f_f (rint, -2.0, -2.0); - } - - fesetround(save_round_mode); - - END (rint_towardzero); -} - -static void -rint_test_downward (void) -{ - int save_round_mode; - START (rint_downward); - - save_round_mode = fegetround(); - - if (!fesetround (FE_DOWNWARD)) - { - TEST_f_f (rint, 2.0, 2.0); - TEST_f_f (rint, 1.5, 1.0); - TEST_f_f (rint, 1.0, 1.0); - TEST_f_f (rint, 0.5, 0.0); - TEST_f_f (rint, 0.0, 0.0); - TEST_f_f (rint, minus_zero, minus_zero); - TEST_f_f (rint, -0.5, -1.0); - TEST_f_f (rint, -1.0, -1.0); - TEST_f_f (rint, -1.5, -2.0); - TEST_f_f (rint, -2.0, -2.0); - } - - fesetround(save_round_mode); - - END (rint_downward); -} - -static void -rint_test_upward (void) -{ - int save_round_mode; - START (rint_upward); - - save_round_mode = fegetround(); - - if (!fesetround (FE_UPWARD)) - { - TEST_f_f (rint, 2.0, 2.0); - TEST_f_f (rint, 1.5, 2.0); - TEST_f_f (rint, 1.0, 1.0); - TEST_f_f (rint, 0.5, 1.0); - TEST_f_f (rint, 0.0, 0.0); - TEST_f_f (rint, minus_zero, minus_zero); - TEST_f_f (rint, -0.5, -0.0); - TEST_f_f (rint, -1.0, -1.0); - TEST_f_f (rint, -1.5, -1.0); - TEST_f_f (rint, -2.0, -2.0); - } - - fesetround(save_round_mode); - - END (rint_upward); -} - -static void -round_test (void) -{ - START (round); - - TEST_f_f (round, 0, 0); - TEST_f_f (round, minus_zero, minus_zero); - TEST_f_f (round, 0.2L, 0.0); - TEST_f_f (round, -0.2L, minus_zero); - TEST_f_f (round, 0.5, 1.0); - TEST_f_f (round, -0.5, -1.0); - TEST_f_f (round, 0.8L, 1.0); - TEST_f_f (round, -0.8L, -1.0); - TEST_f_f (round, 1.5, 2.0); - TEST_f_f (round, -1.5, -2.0); - TEST_f_f (round, 2097152.5, 2097153); - TEST_f_f (round, -2097152.5, -2097153); - -#ifdef TEST_LDOUBLE - /* The result can only be represented in long double. */ - TEST_f_f (round, 4503599627370495.5L, 4503599627370496.0L); - TEST_f_f (round, 4503599627370496.25L, 4503599627370496.0L); - TEST_f_f (round, 4503599627370496.5L, 4503599627370497.0L); - TEST_f_f (round, 4503599627370496.75L, 4503599627370497.0L); - TEST_f_f (round, 4503599627370497.5L, 4503599627370498.0L); - - TEST_f_f (round, -4503599627370495.5L, -4503599627370496.0L); - TEST_f_f (round, -4503599627370496.25L, -4503599627370496.0L); - TEST_f_f (round, -4503599627370496.5L, -4503599627370497.0L); - TEST_f_f (round, -4503599627370496.75L, -4503599627370497.0L); - TEST_f_f (round, -4503599627370497.5L, -4503599627370498.0L); - - TEST_f_f (round, 9007199254740991.5L, 9007199254740992.0L); - TEST_f_f (round, 9007199254740992.25L, 9007199254740992.0L); - TEST_f_f (round, 9007199254740992.5L, 9007199254740993.0L); - TEST_f_f (round, 9007199254740992.75L, 9007199254740993.0L); - TEST_f_f (round, 9007199254740993.5L, 9007199254740994.0L); - - TEST_f_f (round, -9007199254740991.5L, -9007199254740992.0L); - TEST_f_f (round, -9007199254740992.25L, -9007199254740992.0L); - TEST_f_f (round, -9007199254740992.5L, -9007199254740993.0L); - TEST_f_f (round, -9007199254740992.75L, -9007199254740993.0L); - TEST_f_f (round, -9007199254740993.5L, -9007199254740994.0L); - - TEST_f_f (round, 72057594037927935.5L, 72057594037927936.0L); - TEST_f_f (round, 72057594037927936.25L, 72057594037927936.0L); - TEST_f_f (round, 72057594037927936.5L, 72057594037927937.0L); - TEST_f_f (round, 72057594037927936.75L, 72057594037927937.0L); - TEST_f_f (round, 72057594037927937.5L, 72057594037927938.0L); - - TEST_f_f (round, -72057594037927935.5L, -72057594037927936.0L); - TEST_f_f (round, -72057594037927936.25L, -72057594037927936.0L); - TEST_f_f (round, -72057594037927936.5L, -72057594037927937.0L); - TEST_f_f (round, -72057594037927936.75L, -72057594037927937.0L); - TEST_f_f (round, -72057594037927937.5L, -72057594037927938.0L); - - TEST_f_f (round, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L); - TEST_f_f (round, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L); - TEST_f_f (round, 10141204801825835211973625643008.5L, 10141204801825835211973625643009.0L); - TEST_f_f (round, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L); - TEST_f_f (round, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L); -#endif - - END (round); -} -#endif - - -#ifdef __UCLIBC_SUSV3_LEGACY__ -static void -scalb_test (void) -{ - START (scalb); -#ifndef TEST_LDOUBLE /* uclibc doesn't have scalbl */ - - TEST_ff_f (scalb, 2.0, 0.5, nan_value, INVALID_EXCEPTION); - TEST_ff_f (scalb, 3.0, -2.5, nan_value, INVALID_EXCEPTION); - - TEST_ff_f (scalb, 0, nan_value, nan_value); - TEST_ff_f (scalb, 1, nan_value, nan_value); - - TEST_ff_f (scalb, 1, 0, 1); - TEST_ff_f (scalb, -1, 0, -1); - - TEST_ff_f (scalb, 0, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_ff_f (scalb, minus_zero, plus_infty, nan_value, INVALID_EXCEPTION); - - TEST_ff_f (scalb, 0, 2, 0); - TEST_ff_f (scalb, minus_zero, -4, minus_zero); - TEST_ff_f (scalb, 0, 0, 0); - TEST_ff_f (scalb, minus_zero, 0, minus_zero); - TEST_ff_f (scalb, 0, -1, 0); - TEST_ff_f (scalb, minus_zero, -10, minus_zero); - TEST_ff_f (scalb, 0, minus_infty, 0); - TEST_ff_f (scalb, minus_zero, minus_infty, minus_zero); - - TEST_ff_f (scalb, plus_infty, -1, plus_infty); - TEST_ff_f (scalb, minus_infty, -10, minus_infty); - TEST_ff_f (scalb, plus_infty, 0, plus_infty); - TEST_ff_f (scalb, minus_infty, 0, minus_infty); - TEST_ff_f (scalb, plus_infty, 2, plus_infty); - TEST_ff_f (scalb, minus_infty, 100, minus_infty); - - TEST_ff_f (scalb, 0.1L, minus_infty, 0.0); - TEST_ff_f (scalb, -0.1L, minus_infty, minus_zero); - - TEST_ff_f (scalb, 1, plus_infty, plus_infty); - TEST_ff_f (scalb, -1, plus_infty, minus_infty); - TEST_ff_f (scalb, plus_infty, plus_infty, plus_infty); - TEST_ff_f (scalb, minus_infty, plus_infty, minus_infty); - - TEST_ff_f (scalb, plus_infty, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_ff_f (scalb, minus_infty, minus_infty, nan_value, INVALID_EXCEPTION); - - TEST_ff_f (scalb, nan_value, 1, nan_value); - TEST_ff_f (scalb, 1, nan_value, nan_value); - TEST_ff_f (scalb, nan_value, 0, nan_value); - TEST_ff_f (scalb, 0, nan_value, nan_value); - TEST_ff_f (scalb, nan_value, plus_infty, nan_value); - TEST_ff_f (scalb, plus_infty, nan_value, nan_value); - TEST_ff_f (scalb, nan_value, nan_value, nan_value); - - TEST_ff_f (scalb, 0.8L, 4, 12.8L); - TEST_ff_f (scalb, -0.854375L, 5, -27.34L); -#endif /* TEST_LDOUBLE */ - END (scalb); -} -#endif - -static void -scalbn_test (void) -{ - - START (scalbn); - - TEST_fi_f (scalbn, 0, 0, 0); - TEST_fi_f (scalbn, minus_zero, 0, minus_zero); - - TEST_fi_f (scalbn, plus_infty, 1, plus_infty); - TEST_fi_f (scalbn, minus_infty, 1, minus_infty); - TEST_fi_f (scalbn, nan_value, 1, nan_value); - - TEST_fi_f (scalbn, 0.8L, 4, 12.8L); - TEST_fi_f (scalbn, -0.854375L, 5, -27.34L); - - TEST_fi_f (scalbn, 1, 0L, 1); - - END (scalbn); -} - - -static void -scalbln_test (void) -{ - - START (scalbln); - - TEST_fl_f (scalbln, 0, 0, 0); - TEST_fl_f (scalbln, minus_zero, 0, minus_zero); - - TEST_fl_f (scalbln, plus_infty, 1, plus_infty); - TEST_fl_f (scalbln, minus_infty, 1, minus_infty); - TEST_fl_f (scalbln, nan_value, 1, nan_value); - - TEST_fl_f (scalbln, 0.8L, 4, 12.8L); - TEST_fl_f (scalbln, -0.854375L, 5, -27.34L); - - TEST_fl_f (scalbln, 1, 0L, 1); - - END (scalbn); -} - - -static void -signbit_test (void) -{ - - START (signbit); - - TEST_f_b (signbit, 0, 0); - TEST_f_b (signbit, minus_zero, 1); - TEST_f_b (signbit, plus_infty, 0); - TEST_f_b (signbit, minus_infty, 1); - - /* signbit (x) != 0 for x < 0. */ - TEST_f_b (signbit, -1, 1); - /* signbit (x) == 0 for x >= 0. */ - TEST_f_b (signbit, 1, 0); - - END (signbit); -} - - -static void -sin_test (void) -{ - errno = 0; - FUNC(sin) (0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (sin); - - TEST_f_f (sin, 0, 0); - TEST_f_f (sin, minus_zero, minus_zero); - TEST_f_f (sin, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (sin, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (sin, nan_value, nan_value); - - TEST_f_f (sin, M_PI_6l, 0.5); - TEST_f_f (sin, -M_PI_6l, -0.5); - TEST_f_f (sin, M_PI_2l, 1); - TEST_f_f (sin, -M_PI_2l, -1); - TEST_f_f (sin, 0.75L, 0.681638760023334166733241952779893935L); - -#ifdef TEST_DOUBLE - TEST_f_f (sin, 0.80190127184058835, 0.71867942238767868); -#endif - - END (sin); - -} - - -#if 0 -static void -sincos_test (void) -{ - FLOAT sin_res, cos_res; - - errno = 0; - FUNC(sincos) (0, &sin_res, &cos_res); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (sincos); - - /* sincos is treated differently because it returns void. */ - TEST_extra (sincos, 0, 0, 1); - - TEST_extra (sincos, minus_zero, minus_zero, 1); - TEST_extra (sincos, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_extra (sincos, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_extra (sincos, nan_value, nan_value, nan_value); - - TEST_extra (sincos, M_PI_2l, 1, 0); - TEST_extra (sincos, M_PI_6l, 0.5, 0.86602540378443864676372317075293616L); - TEST_extra (sincos, M_PI_6l*2.0, 0.86602540378443864676372317075293616L, 0.5); - TEST_extra (sincos, 0.75L, 0.681638760023334166733241952779893935L, 0.731688868873820886311838753000084544L); - -#ifdef TEST_DOUBLE - TEST_extra (sincos, 0.80190127184058835, 0.71867942238767868, 0.69534156199418473); -#endif - - END (sincos); -} -#endif - -static void -sinh_test (void) -{ - errno = 0; - FUNC(sinh) (0.7L); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (sinh); - TEST_f_f (sinh, 0, 0); - TEST_f_f (sinh, minus_zero, minus_zero); - -#ifndef TEST_INLINE - TEST_f_f (sinh, plus_infty, plus_infty); - TEST_f_f (sinh, minus_infty, minus_infty); -#endif - TEST_f_f (sinh, nan_value, nan_value); - - TEST_f_f (sinh, 0.75L, 0.822316731935829980703661634446913849L); - TEST_f_f (sinh, 0x8p-32L, 1.86264514923095703232705808926175479e-9L); - - END (sinh); -} - -static void -sqrt_test (void) -{ - errno = 0; - FUNC(sqrt) (1); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (sqrt); - - TEST_f_f (sqrt, 0, 0); - TEST_f_f (sqrt, nan_value, nan_value); - TEST_f_f (sqrt, plus_infty, plus_infty); - - TEST_f_f (sqrt, minus_zero, minus_zero); - - /* sqrt (x) == NaN plus invalid exception for x < 0. */ - TEST_f_f (sqrt, -1, nan_value, INVALID_EXCEPTION); - TEST_f_f (sqrt, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (sqrt, nan_value, nan_value); - - TEST_f_f (sqrt, 2209, 47); - TEST_f_f (sqrt, 4, 2); - TEST_f_f (sqrt, 2, M_SQRT2l); - TEST_f_f (sqrt, 0.25, 0.5); - TEST_f_f (sqrt, 6642.25, 81.5); - TEST_f_f (sqrt, 15190.5625L, 123.25L); - TEST_f_f (sqrt, 0.75L, 0.866025403784438646763723170752936183L); - - END (sqrt); -} - - -static void -tan_test (void) -{ - errno = 0; - FUNC(tan) (0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (tan); - - TEST_f_f (tan, 0, 0); - TEST_f_f (tan, minus_zero, minus_zero); - TEST_f_f (tan, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (tan, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (tan, nan_value, nan_value); - - TEST_f_f (tan, M_PI_4l, 1); - TEST_f_f (tan, 0.75L, 0.931596459944072461165202756573936428L); - - END (tan); -} - -static void -tanh_test (void) -{ - errno = 0; - FUNC(tanh) (0.7L); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - START (tanh); - - TEST_f_f (tanh, 0, 0); - /* vda: uclibc: added IGNORE_ZERO_INF_SIGN to treat -0 as ok */ - TEST_f_f (tanh, minus_zero, minus_zero, IGNORE_ZERO_INF_SIGN); - -#ifndef TEST_INLINE - TEST_f_f (tanh, plus_infty, 1); - TEST_f_f (tanh, minus_infty, -1); -#endif - TEST_f_f (tanh, nan_value, nan_value); - - TEST_f_f (tanh, 0.75L, 0.635148952387287319214434357312496495L); - TEST_f_f (tanh, -0.75L, -0.635148952387287319214434357312496495L); - - TEST_f_f (tanh, 1.0L, 0.7615941559557648881194582826047935904L); - TEST_f_f (tanh, -1.0L, -0.7615941559557648881194582826047935904L); - - /* 2^-57 */ - TEST_f_f (tanh, 0x1p-57L, 6.938893903907228377647697925567626953125e-18L); - - END (tanh); -} - -static void -tgamma_test (void) -{ - errno = 0; - FUNC(tgamma) (1); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - feclearexcept (FE_ALL_EXCEPT); - - START (tgamma); - - TEST_f_f (tgamma, plus_infty, plus_infty); - TEST_f_f (tgamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_f_f (tgamma, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); - /* tgamma (x) == NaN plus invalid exception for integer x <= 0. */ - TEST_f_f (tgamma, -2, nan_value, INVALID_EXCEPTION); - TEST_f_f (tgamma, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (tgamma, nan_value, nan_value); - - TEST_f_f (tgamma, 0.5, M_SQRT_PIl); - TEST_f_f (tgamma, -0.5, -M_2_SQRT_PIl); - - TEST_f_f (tgamma, 1, 1); - TEST_f_f (tgamma, 4, 6); - - TEST_f_f (tgamma, 0.7L, 1.29805533264755778568117117915281162L); - TEST_f_f (tgamma, 1.2L, 0.918168742399760610640951655185830401L); - - END (tgamma); -} - - -#if 0 -static void -trunc_test (void) -{ - START (trunc); - - TEST_f_f (trunc, plus_infty, plus_infty); - TEST_f_f (trunc, minus_infty, minus_infty); - TEST_f_f (trunc, nan_value, nan_value); - - TEST_f_f (trunc, 0, 0); - TEST_f_f (trunc, minus_zero, minus_zero); - TEST_f_f (trunc, 0.625, 0); - TEST_f_f (trunc, -0.625, minus_zero); - TEST_f_f (trunc, 1, 1); - TEST_f_f (trunc, -1, -1); - TEST_f_f (trunc, 1.625, 1); - TEST_f_f (trunc, -1.625, -1); - - TEST_f_f (trunc, 1048580.625L, 1048580L); - TEST_f_f (trunc, -1048580.625L, -1048580L); - - TEST_f_f (trunc, 8388610.125L, 8388610.0L); - TEST_f_f (trunc, -8388610.125L, -8388610.0L); - - TEST_f_f (trunc, 4294967296.625L, 4294967296.0L); - TEST_f_f (trunc, -4294967296.625L, -4294967296.0L); - -#ifdef TEST_LDOUBLE - /* The result can only be represented in long double. */ - TEST_f_f (trunc, 4503599627370495.5L, 4503599627370495.0L); - TEST_f_f (trunc, 4503599627370496.25L, 4503599627370496.0L); - TEST_f_f (trunc, 4503599627370496.5L, 4503599627370496.0L); - TEST_f_f (trunc, 4503599627370496.75L, 4503599627370496.0L); - TEST_f_f (trunc, 4503599627370497.5L, 4503599627370497.0L); - - TEST_f_f (trunc, -4503599627370495.5L, -4503599627370495.0L); - TEST_f_f (trunc, -4503599627370496.25L, -4503599627370496.0L); - TEST_f_f (trunc, -4503599627370496.5L, -4503599627370496.0L); - TEST_f_f (trunc, -4503599627370496.75L, -4503599627370496.0L); - TEST_f_f (trunc, -4503599627370497.5L, -4503599627370497.0L); - - TEST_f_f (trunc, 9007199254740991.5L, 9007199254740991.0L); - TEST_f_f (trunc, 9007199254740992.25L, 9007199254740992.0L); - TEST_f_f (trunc, 9007199254740992.5L, 9007199254740992.0L); - TEST_f_f (trunc, 9007199254740992.75L, 9007199254740992.0L); - TEST_f_f (trunc, 9007199254740993.5L, 9007199254740993.0L); - - TEST_f_f (trunc, -9007199254740991.5L, -9007199254740991.0L); - TEST_f_f (trunc, -9007199254740992.25L, -9007199254740992.0L); - TEST_f_f (trunc, -9007199254740992.5L, -9007199254740992.0L); - TEST_f_f (trunc, -9007199254740992.75L, -9007199254740992.0L); - TEST_f_f (trunc, -9007199254740993.5L, -9007199254740993.0L); - - TEST_f_f (trunc, 72057594037927935.5L, 72057594037927935.0L); - TEST_f_f (trunc, 72057594037927936.25L, 72057594037927936.0L); - TEST_f_f (trunc, 72057594037927936.5L, 72057594037927936.0L); - TEST_f_f (trunc, 72057594037927936.75L, 72057594037927936.0L); - TEST_f_f (trunc, 72057594037927937.5L, 72057594037927937.0L); - - TEST_f_f (trunc, -72057594037927935.5L, -72057594037927935.0L); - TEST_f_f (trunc, -72057594037927936.25L, -72057594037927936.0L); - TEST_f_f (trunc, -72057594037927936.5L, -72057594037927936.0L); - TEST_f_f (trunc, -72057594037927936.75L, -72057594037927936.0L); - TEST_f_f (trunc, -72057594037927937.5L, -72057594037927937.0L); - - TEST_f_f (trunc, 10141204801825835211973625643007.5L, 10141204801825835211973625643007.0L); - TEST_f_f (trunc, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L); - TEST_f_f (trunc, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L); - TEST_f_f (trunc, 10141204801825835211973625643008.75L, 10141204801825835211973625643008.0L); - TEST_f_f (trunc, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L); -#endif - - END (trunc); -} -#endif - -#if defined __DO_XSI_MATH__ && !(defined TEST_LDOUBLE || defined TEST_FLOAT) -static void -y0_test (void) -{ - errno = 0; -#if 0 - FLOAT s, c; - FUNC (sincos) (0, &s, &c); - if (errno == ENOSYS) - /* Required function not implemented. */ - return; -#endif - FUNC(y0) (1); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - /* y0 is the Bessel function of the second kind of order 0 */ - START (y0); - - TEST_f_f (y0, -1.0, minus_infty, INVALID_EXCEPTION); - TEST_f_f (y0, 0.0, minus_infty); - TEST_f_f (y0, nan_value, nan_value); - TEST_f_f (y0, plus_infty, 0); - - TEST_f_f (y0, 0.125L, -1.38968062514384052915582277745018693L); - TEST_f_f (y0, 0.75L, -0.137172769385772397522814379396581855L); - TEST_f_f (y0, 1.0, 0.0882569642156769579829267660235151628L); - TEST_f_f (y0, 1.5, 0.382448923797758843955068554978089862L); - TEST_f_f (y0, 2.0, 0.510375672649745119596606592727157873L); - TEST_f_f (y0, 8.0, 0.223521489387566220527323400498620359L); - TEST_f_f (y0, 10.0, 0.0556711672835993914244598774101900481L); - - END (y0); -} - - -static void -y1_test (void) -{ - errno = 0; -#if 0 - FLOAT s, c; - FUNC (sincos) (0, &s, &c); - if (errno == ENOSYS) - /* Required function not implemented. */ - return; -#endif - FUNC(y1) (1); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - /* y1 is the Bessel function of the second kind of order 1 */ - START (y1); - - TEST_f_f (y1, -1.0, minus_infty, INVALID_EXCEPTION); - TEST_f_f (y1, 0.0, minus_infty); - TEST_f_f (y1, plus_infty, 0); - TEST_f_f (y1, nan_value, nan_value); - - TEST_f_f (y1, 0.125L, -5.19993611253477499595928744876579921L); - TEST_f_f (y1, 0.75L, -1.03759455076928541973767132140642198L); - TEST_f_f (y1, 1.0, -0.781212821300288716547150000047964821L); - TEST_f_f (y1, 1.5, -0.412308626973911295952829820633445323L); - TEST_f_f (y1, 2.0, -0.107032431540937546888370772277476637L); - TEST_f_f (y1, 8.0, -0.158060461731247494255555266187483550L); - TEST_f_f (y1, 10.0, 0.249015424206953883923283474663222803L); - - END (y1); -} - - -static void -yn_test (void) -{ - errno = 0; -#if 0 - FLOAT s, c; - FUNC (sincos) (0, &s, &c); - if (errno == ENOSYS) - /* Required function not implemented. */ - return; -#endif - FUNC(yn) (1, 1); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - - /* yn is the Bessel function of the second kind of order n */ - START (yn); - - /* yn (0, x) == y0 (x) */ - TEST_ff_f (yn, 0, -1.0, minus_infty, INVALID_EXCEPTION); - TEST_ff_f (yn, 0, 0.0, minus_infty); - TEST_ff_f (yn, 0, nan_value, nan_value); - TEST_ff_f (yn, 0, plus_infty, 0); - - TEST_ff_f (yn, 0, 0.125L, -1.38968062514384052915582277745018693L); - TEST_ff_f (yn, 0, 0.75L, -0.137172769385772397522814379396581855L); - TEST_ff_f (yn, 0, 1.0, 0.0882569642156769579829267660235151628L); - TEST_ff_f (yn, 0, 1.5, 0.382448923797758843955068554978089862L); - TEST_ff_f (yn, 0, 2.0, 0.510375672649745119596606592727157873L); - TEST_ff_f (yn, 0, 8.0, 0.223521489387566220527323400498620359L); - TEST_ff_f (yn, 0, 10.0, 0.0556711672835993914244598774101900481L); - - /* yn (1, x) == y1 (x) */ - TEST_ff_f (yn, 1, -1.0, minus_infty, INVALID_EXCEPTION); - TEST_ff_f (yn, 1, 0.0, minus_infty); - TEST_ff_f (yn, 1, plus_infty, 0); - TEST_ff_f (yn, 1, nan_value, nan_value); - - TEST_ff_f (yn, 1, 0.125L, -5.19993611253477499595928744876579921L); - TEST_ff_f (yn, 1, 0.75L, -1.03759455076928541973767132140642198L); - TEST_ff_f (yn, 1, 1.0, -0.781212821300288716547150000047964821L); - TEST_ff_f (yn, 1, 1.5, -0.412308626973911295952829820633445323L); - TEST_ff_f (yn, 1, 2.0, -0.107032431540937546888370772277476637L); - TEST_ff_f (yn, 1, 8.0, -0.158060461731247494255555266187483550L); - TEST_ff_f (yn, 1, 10.0, 0.249015424206953883923283474663222803L); - - /* yn (3, x) */ - TEST_ff_f (yn, 3, plus_infty, 0); - TEST_ff_f (yn, 3, nan_value, nan_value); - - TEST_ff_f (yn, 3, 0.125L, -2612.69757350066712600220955744091741L); - TEST_ff_f (yn, 3, 0.75L, -12.9877176234475433186319774484809207L); - TEST_ff_f (yn, 3, 1.0, -5.82151760596472884776175706442981440L); - TEST_ff_f (yn, 3, 2.0, -1.12778377684042778608158395773179238L); - TEST_ff_f (yn, 3, 10.0, -0.251362657183837329779204747654240998L); - - /* yn (10, x) */ - TEST_ff_f (yn, 10, plus_infty, 0); - TEST_ff_f (yn, 10, nan_value, nan_value); - - TEST_ff_f (yn, 10, 0.125L, -127057845771019398.252538486899753195L); - TEST_ff_f (yn, 10, 0.75L, -2133501638.90573424452445412893839236L); - TEST_ff_f (yn, 10, 1.0, -121618014.278689189288130426667971145L); - TEST_ff_f (yn, 10, 2.0, -129184.542208039282635913145923304214L); - TEST_ff_f (yn, 10, 10.0, -0.359814152183402722051986577343560609L); - - END (yn); - -} -#endif /* __DO_XSI_MATH__ */ - - -static void -significand_test (void) -{ - /* significand returns the mantissa of the exponential representation. */ - START (significand); - - TEST_f_f (significand, 4.0, 1.0); - TEST_f_f (significand, 6.0, 1.5); - TEST_f_f (significand, 8.0, 1.0); - - END (significand); -} - - -static void -initialize (void) -{ - fpstack_test ("start *init*"); - plus_zero = 0.0; - nan_value = plus_zero / plus_zero; /* Suppress GCC warning */ - - minus_zero = FUNC(copysign) (0.0, -1.0); - plus_infty = CHOOSE (HUGE_VALL, HUGE_VAL, HUGE_VALF, - HUGE_VALL, HUGE_VAL, HUGE_VALF); - minus_infty = CHOOSE (-HUGE_VALL, -HUGE_VAL, -HUGE_VALF, - -HUGE_VALL, -HUGE_VAL, -HUGE_VALF); - max_value = CHOOSE (LDBL_MAX, DBL_MAX, FLT_MAX, - LDBL_MAX, DBL_MAX, FLT_MAX); - min_value = CHOOSE (LDBL_MIN, DBL_MIN, FLT_MIN, - LDBL_MIN, DBL_MIN, FLT_MIN); - - (void) &plus_zero; - (void) &nan_value; - (void) &minus_zero; - (void) &plus_infty; - (void) &minus_infty; - (void) &max_value; - (void) &min_value; - - /* Clear all exceptions. From now on we must not get random exceptions. */ - feclearexcept (FE_ALL_EXCEPT); - - /* Test to make sure we start correctly. */ - fpstack_test ("end *init*"); -} - -#if 0 -/* function to check our ulp calculation. */ -void -check_ulp (void) -{ - int i; - - FLOAT u, diff, ulp; - /* This gives one ulp. */ - u = FUNC(nextafter) (10, 20); - check_equal (10.0, u, 1, &diff, &ulp); - printf ("One ulp: % .4" PRINTF_NEXPR "\n", ulp); - - /* This gives one more ulp. */ - u = FUNC(nextafter) (u, 20); - check_equal (10.0, u, 2, &diff, &ulp); - printf ("two ulp: % .4" PRINTF_NEXPR "\n", ulp); - - /* And now calculate 100 ulp. */ - for (i = 2; i < 100; i++) - u = FUNC(nextafter) (u, 20); - check_equal (10.0, u, 100, &diff, &ulp); - printf ("100 ulp: % .4" PRINTF_NEXPR "\n", ulp); -} -#endif - -int -main (int argc, char **argv) -{ - - int key; - - verbose = 1; - output_ulps = 0; - output_max_error = 1; - output_points = 1; - /* XXX set to 0 for releases. */ - ignore_max_ulp = 0; - - /* Parse and process arguments. */ - while ((key = getopt(argc, argv, "fi:puv")) > 0) { - switch (key) - { - case 'f': - output_max_error = 0; - break; - case 'i': - if (strcmp (optarg, "yes") == 0) - ignore_max_ulp = 1; - else if (strcmp (optarg, "no") == 0) - ignore_max_ulp = 0; - break; - case 'p': - output_points = 0; - break; - case 'u': - output_ulps = 1; - break; - case 'v': - verbose = 3; - break; - default: - fprintf (stderr, "Unknown argument: %c", key); - exit (EXIT_FAILURE); - } - } - - if (optind != argc) - { - fprintf (stderr, "wrong number of arguments"); - exit (EXIT_FAILURE); - } - - if (output_ulps) - { - ulps_file = fopen ("ULPs", "a"); - if (ulps_file == NULL) - { - perror ("can't open file `ULPs' for writing: "); - exit (1); - } - } - - - initialize (); - printf (TEST_MSG); - -#if 0 - check_ulp (); -#endif - - /* Keep the tests a wee bit ordered (according to ISO C99). */ - /* Classification macros: */ - fpclassify_test (); - isfinite_test (); - isnormal_test (); - signbit_test (); - - /* Trigonometric functions: */ - acos_test (); - asin_test (); - atan_test (); - atan2_test (); - cos_test (); - sin_test (); -#if 0 - sincos_test (); -#endif - tan_test (); - - /* Hyperbolic functions: */ - acosh_test (); - asinh_test (); - atanh_test (); - cosh_test (); - sinh_test (); - tanh_test (); - - /* Exponential and logarithmic functions: */ - exp_test (); -#if 0 - exp10_test (); - exp2_test (); -#endif - expm1_test (); - frexp_test (); - ldexp_test (); - log_test (); - log10_test (); - log1p_test (); - log2_test (); - logb_test (); - modf_test (); - ilogb_test (); -#ifdef __UCLIBC_SUSV3_LEGACY__ - scalb_test (); -#endif - scalbn_test (); - scalbln_test (); - significand_test (); - - /* Power and absolute value functions: */ - cbrt_test (); - fabs_test (); - hypot_test (); - pow_test (); - sqrt_test (); - - /* Error and gamma functions: */ - erf_test (); - erfc_test (); - gamma_test (); - lgamma_test (); - tgamma_test (); - - /* Nearest integer functions: */ - ceil_test (); - floor_test (); - nearbyint_test (); - rint_test (); -#if 0 - rint_test_tonearest (); - rint_test_towardzero (); - rint_test_downward (); - rint_test_upward (); - lrint_test (); - llrint_test (); - round_test (); - lround_test (); - llround_test (); - trunc_test (); -#endif - - /* Remainder functions: */ - fmod_test (); - remainder_test (); - remquo_test (); - - /* Manipulation functions: */ - copysign_test (); - nextafter_test (); - nexttoward_test (); - - /* maximum, minimum and positive difference functions */ - fdim_test (); - fmax_test (); - fmin_test (); - - /* Multiply and add: */ - fma_test (); - - - /* Complex functions: */ - cabs_test (); -#if __CHK_COMPLEX_STUFF -#if 0 - cacos_test (); - cacosh_test (); -#endif - carg_test (); -#if 0 - casin_test (); - casinh_test (); - catan_test (); - catanh_test (); - ccos_test (); - ccosh_test (); -#endif - cexp_test (); -#if 0 - cimag_test (); - clog10_test (); - clog_test (); - conj_test (); - cpow_test (); - cproj_test (); - creal_test (); - csin_test (); - csinh_test (); - csqrt_test (); - ctan_test (); - ctanh_test (); -#endif -#endif /* __CHK_COMPLEX_STUFF */ - - /* Bessel functions: */ -#if defined __DO_XSI_MATH__ && !(defined TEST_LDOUBLE || defined TEST_FLOAT) - j0_test (); - j1_test (); - jn_test (); - y0_test (); - y1_test (); - yn_test (); -#endif /* __DO_XSI_MATH__ */ - - if (output_ulps) - fclose (ulps_file); - - printf ("\nTest suite completed:\n"); - printf (" %d test cases plus %d tests for exception flags executed.\n", - noTests, noExcTests); - if (noXFails) - printf (" %d expected failures occurred.\n", noXFails); - if (noXPasses) - printf (" %d unexpected passes occurred.\n", noXPasses); - if (noErrors) - { - printf (" %d errors occurred.\n", noErrors); - return 1; - } - printf (" All tests passed successfully.\n"); - - return 0; -} - -/* - * Local Variables: - * mode:c - * End: - */ diff --git a/test/math/rint.c b/test/math/rint.c deleted file mode 100644 index b595459a3..000000000 --- a/test/math/rint.c +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include -#include -#include -#include - -#define check_d1(func, param, expected) \ -do { \ - int err; hex_union ur; hex_union up; \ - double result = func(param); up.f = param; ur.f = result; \ - errors += (err = (result != (expected))); \ - err \ - ? printf("FAIL: %s(%g/"HEXFMT")=%g/"HEXFMT" (expected %g)\n", \ - #func, (double)(param), (long long)up.hex, result, (long long)ur.hex, (double)(expected)) \ - : printf("PASS: %s(%g)=%g\n", #func, (double)(param), result); \ -} while (0) - -#define HEXFMT "%08llx" -typedef union { - double f; - uint64_t hex; -} hex_union; -double result; - -int errors = 0; - -int main(void) -{ - check_d1(rint, 0.6, 1.0); - - printf("Errors: %d\n", errors); - return errors; -} diff --git a/test/math/signgam.c b/test/math/signgam.c deleted file mode 100644 index 2f1adbaad..000000000 --- a/test/math/signgam.c +++ /dev/null @@ -1,28 +0,0 @@ -#define _XOPEN_SOURCE 600 -#include -#include -#include - -double zero = 0.0; -double mzero; - -int main(void) -{ - double d; - int errors = 0; - - mzero = copysign(zero, -1.0); - - d = lgamma(zero); - printf("%g %d\n", d, signgam); - errors += !(d == HUGE_VAL); - errors += !(signgam == 1); - - d = lgamma(mzero); - printf("%g %d\n", d, signgam); - errors += !(d == HUGE_VAL); - errors += !(signgam == -1); - - printf("Errors: %d\n", errors); - return errors; -} diff --git a/test/math/test-double.c b/test/math/test-double.c deleted file mode 100644 index 3c9733e03..000000000 --- a/test/math/test-double.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 1997, 1999 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#define FUNC(function) function -#define FLOAT double -#define TEST_MSG "testing double (without inline functions)\n" -#define MATHCONST(x) x -#define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cdouble -#define PRINTF_EXPR "e" -#define PRINTF_XEXPR "a" -#define PRINTF_NEXPR "f" -#define TEST_DOUBLE 1 - -#ifndef __NO_MATH_INLINES -# define __NO_MATH_INLINES -#endif - -#include "libm-test.c" diff --git a/test/math/test-float.c b/test/math/test-float.c deleted file mode 100644 index 6764fff47..000000000 --- a/test/math/test-float.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 1997, 1999 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#define FUNC(function) function ## f -#define FLOAT float -#define TEST_MSG "testing float (without inline functions)\n" -#define MATHCONST(x) x -#define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cfloat -#define PRINTF_EXPR "e" -#define PRINTF_XEXPR "a" -#define PRINTF_NEXPR "f" -#define TEST_FLOAT 1 - -#ifndef __NO_MATH_INLINES -# define __NO_MATH_INLINES -#endif - -#include "libm-test.c" diff --git a/test/math/test-fpucw.c b/test/math/test-fpucw.c deleted file mode 100644 index 93237eae8..000000000 --- a/test/math/test-fpucw.c +++ /dev/null @@ -1,42 +0,0 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 2000. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - -int -main (void) -{ -#ifdef _FPU_GETCW -/* Some architectures don't have _FPU_GETCW (e.g. Linux/Alpha). */ - fpu_control_t cw; - - _FPU_GETCW (cw); - - cw &= ~_FPU_RESERVED; - - if (cw != (_FPU_DEFAULT & ~_FPU_RESERVED)) - printf ("control word is 0x%lx but should be 0x%lx.\n", - (long int) cw, (long int) (_FPU_DEFAULT & ~_FPU_RESERVED)); - - return cw != (_FPU_DEFAULT & ~_FPU_RESERVED); - -#else - return 0; -#endif -} diff --git a/test/math/test-idouble.c b/test/math/test-idouble.c deleted file mode 100644 index e340e1951..000000000 --- a/test/math/test-idouble.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 1997, 1999 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#define FUNC(function) function -#define FLOAT double -#define TEST_MSG "testing double (inline functions)\n" -#define MATHCONST(x) x -#define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cinlinedouble -#define PRINTF_EXPR "e" -#define PRINTF_XEXPR "a" -#define PRINTF_NEXPR "f" -#define TEST_DOUBLE 1 -#define TEST_INLINE - -#ifdef __NO_MATH_INLINES -# undef __NO_MATH_INLINES -#endif - -#include "libm-test.c" diff --git a/test/math/test-ifloat.c b/test/math/test-ifloat.c deleted file mode 100644 index b8291d1f5..000000000 --- a/test/math/test-ifloat.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 1997, 1999 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#define FUNC(function) function ## f -#define FLOAT float -#define TEST_MSG "testing float (inline functions)\n" -#define MATHCONST(x) x -#define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cinlinefloat -#define PRINTF_EXPR "e" -#define PRINTF_XEXPR "a" -#define PRINTF_NEXPR "f" -#define TEST_FLOAT 1 -#define TEST_INLINE 1 - -#ifdef __NO_MATH_INLINES -# undef __NO_MATH_INLINES -#endif - -#include "libm-test.c" diff --git a/test/math/test-ildoubl.c b/test/math/test-ildoubl.c deleted file mode 100644 index 787380431..000000000 --- a/test/math/test-ildoubl.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 1997, 1999, 2001 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#define FUNC(function) function##l -#define FLOAT long double -#define TEST_MSG "testing long double (inline functions)\n" -#define MATHCONST(x) x##L -#define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cinlinelongdouble -#define PRINTF_EXPR "Le" -#define PRINTF_XEXPR "La" -#define PRINTF_NEXPR "Lf" -#define TEST_INLINE -#define TEST_LDOUBLE 1 - -#ifdef __NO_MATH_INLINES -# undef __NO_MATH_INLINES -#endif - -#include "libm-test.c" diff --git a/test/math/test-ldouble.c b/test/math/test-ldouble.c deleted file mode 100644 index a5ec7cba8..000000000 --- a/test/math/test-ldouble.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 1997, 1999, 2001 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#define FUNC(function) function##l -#define FLOAT long double -#define TEST_MSG "testing long double (without inline functions)\n" -#define MATHCONST(x) x##L -#define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Clongdouble -#define PRINTF_EXPR "Le" -#define PRINTF_XEXPR "La" -#define PRINTF_NEXPR "Lf" -#define TEST_LDOUBLE 1 - -#ifndef __NO_MATH_INLINES -# define __NO_MATH_INLINES -#endif - -#include "libm-test.c" diff --git a/test/math/tst-definitions.c b/test/math/tst-definitions.c deleted file mode 100644 index 3f71611ef..000000000 --- a/test/math/tst-definitions.c +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2000. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - - -int -main (void) -{ - int result = 0; - - if (FP_ILOGB0 != INT_MIN && FP_ILOGB0 != -INT_MAX) - { - puts ("FP_ILOGB0 has no valid value"); - result = 1; - } - else - puts ("FP_ILOGB0 value is OK"); - - if (FP_ILOGBNAN != INT_MIN && FP_ILOGBNAN != INT_MAX) - { - puts ("FP_ILOBNAN has no valid value"); - result = 1; - } - else - puts ("FP_ILOGBNAN value is OK"); - - return result; -} diff --git a/test/misc/Makefile b/test/misc/Makefile deleted file mode 100644 index 09fa233a6..000000000 --- a/test/misc/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc misc tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/misc/Makefile.in b/test/misc/Makefile.in deleted file mode 100644 index 7d7bb1048..000000000 --- a/test/misc/Makefile.in +++ /dev/null @@ -1,42 +0,0 @@ -# uClibc misc tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -TESTS_DISABLED := outb tst-fnmatch bug-glob1 tst-gnuglob - -ifeq ($(TARGET_avr32),y) -TESTS_DISABLED += tst-inotify -endif - -ifeq ($(UCLIBC_HAS_LFS),) -TESTS_DISABLED += dirent64 -TESTS_DISABLED += tst-statfs # assuming host has LFS on -endif -CFLAGS_dirent64 := -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 - -ifeq ($(UCLIBC_LINUX_SPECIFIC),) -TESTS_DISABLED += tst-inotify -endif - -ifeq ($(UCLIBC_HAS_GLOB),) -TESTS_DISABLED += bug-glob2 -endif - -ifeq ($(UCLIBC_HAS_UTMPX),) -TESTS_DISABLED += tst-utmpx -endif - -ifeq ($(UCLIBC_HAS_UTMP),) -TESTS_DISABLED += tst-utmp -endif - -DODIFF_dirent := 1 -DODIFF_dirent64 := 1 -DODIFF_tst-statfs := 1 -DODIFF_tst-statvfs := 1 - -OPTS_bug-glob1 := $(PWD) -OPTS_tst-fnmatch := < tst-fnmatch.input - -MNTENTS = / /sys /proc /dev -OPTS_tst-statfs := $(MNTENTS) -OPTS_tst-statvfs := $(MNTENTS) diff --git a/test/misc/bug-glob1.c b/test/misc/bug-glob1.c deleted file mode 100644 index 276983a0d..000000000 --- a/test/misc/bug-glob1.c +++ /dev/null @@ -1,92 +0,0 @@ -/* Test case for globbing dangling symlink. By Ulrich Drepper. */ -#include -#include -#include -#include -#include -#include -#include - - -static void prepare (int argc, char *argv[]); -#define PREPARE prepare -static int do_test (void); -#define TEST_FUNCTION do_test () - -#include "../test-skeleton.c" - - -static char *fname; - -static void -prepare (int argc, char *argv[]) -{ - if (argc < 2) - error (EXIT_FAILURE, 0, "missing argument"); - - size_t len = strlen (argv[1]); - static const char ext[] = "globXXXXXX"; - fname = malloc (len + sizeof (ext)); - if (fname == NULL) - error (EXIT_FAILURE, errno, "cannot create temp file"); - again: - strcpy (stpcpy (fname, argv[1]), ext); - -/* fname = mktemp (fname); */ - close(mkstemp(fname)); - unlink(fname); - - if (fname == NULL || *fname == '\0') - error (EXIT_FAILURE, errno, "cannot create temp file name"); - if (symlink ("bug-glob1-does-not-exist", fname) != 0) - { - if (errno == EEXIST) - goto again; - - error (EXIT_FAILURE, errno, "cannot create symlink"); - } - add_temp_file (fname); -} - - -static int -do_test (void) -{ - glob_t gl; - int retval = 0; - int e; - - e = glob (fname, 0, NULL, &gl); - if (e == 0) - { - printf ("glob(\"%s\") succeeded when it should not have\n", fname); - retval = 1; - } - globfree (&gl); - - size_t fnamelen = strlen (fname); - char buf[fnamelen + 2]; - - strcpy (buf, fname); - buf[fnamelen - 1] = '?'; - e = glob (buf, 0, NULL, &gl); - if (e == 0) - { - printf ("glob(\"%s\") succeeded when it should not have\n", buf); - retval = 1; - } - globfree (&gl); - - strcpy (buf, fname); - buf[fnamelen] = '*'; - buf[fnamelen + 1] = '\0'; - e = glob (buf, 0, NULL, &gl); - if (e == 0) - { - printf ("glob(\"%s\") succeeded when it should not have\n", buf); - retval = 1; - } - globfree (&gl); - - return retval; -} diff --git a/test/misc/bug-glob2.c b/test/misc/bug-glob2.c deleted file mode 100644 index 069891b03..000000000 --- a/test/misc/bug-glob2.c +++ /dev/null @@ -1,300 +0,0 @@ -/* Test glob memory management. - for the filesystem access functions. - Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - -// #define DEBUG -#ifdef DEBUG -# define PRINTF(fmt, args...) \ - do \ - { \ - int save_errno = errno; \ - printf (fmt, ##args); \ - errno = save_errno; \ - } while (0) -#else -# define PRINTF(fmt, args...) -#endif - - -#ifdef GLOB_ALTDIRFUNC -static struct -{ - const char *name; - int level; - int type; - mode_t mode; -} filesystem[] = -{ - { ".", 1, DT_DIR, 0755 }, - { "..", 1, DT_DIR, 0755 }, - { "dir", 1, DT_DIR, 0755 }, - { ".", 2, DT_DIR, 0755 }, - { "..", 2, DT_DIR, 0755 }, - { "readable", 2, DT_DIR, 0755 }, - { ".", 3, DT_DIR, 0755 }, - { "..", 3, DT_DIR, 0755 }, - { "a", 3, DT_REG, 0644 }, - { "unreadable", 2, DT_DIR, 0111 }, - { ".", 3, DT_DIR, 0111 }, - { "..", 3, DT_DIR, 0755 }, - { "a", 3, DT_REG, 0644 }, - { "zz-readable", 2, DT_DIR, 0755 }, - { ".", 3, DT_DIR, 0755 }, - { "..", 3, DT_DIR, 0755 }, - { "a", 3, DT_REG, 0644 } -}; -#define nfiles (sizeof (filesystem) / sizeof (filesystem[0])) - - -typedef struct -{ - int level; - int idx; - struct dirent d; - char room_for_dirent[NAME_MAX]; -} my_DIR; - - -static long int -find_file (const char *s) -{ - int level = 1; - long int idx = 0; - - if (strcmp (s, ".") == 0) - return 0; - - if (s[0] == '.' && s[1] == '/') - s += 2; - - while (*s != '\0') - { - char *endp = strchrnul (s, '/'); - - PRINTF ("looking for %.*s, level %d\n", (int) (endp - s), s, level); - - while (idx < nfiles && filesystem[idx].level >= level) - { - if (filesystem[idx].level == level - && memcmp (s, filesystem[idx].name, endp - s) == 0 - && filesystem[idx].name[endp - s] == '\0') - break; - ++idx; - } - - if (idx == nfiles || filesystem[idx].level < level) - { - errno = ENOENT; - return -1; - } - - if (*endp == '\0') - return idx + 1; - - if (filesystem[idx].type != DT_DIR - && (idx + 1 >= nfiles - || filesystem[idx].level >= filesystem[idx + 1].level)) - { - errno = ENOTDIR; - return -1; - } - - ++idx; - - s = endp + 1; - ++level; - } - - errno = ENOENT; - return -1; -} - - -static void * -my_opendir (const char *s) -{ - long int idx = find_file (s); - my_DIR *dir; - - if (idx == -1) - { - PRINTF ("my_opendir(\"%s\") == NULL (%m)\n", s); - return NULL; - } - - if ((filesystem[idx].mode & 0400) == 0) - { - errno = EACCES; - PRINTF ("my_opendir(\"%s\") == NULL (%m)\n", s); - return NULL; - } - - dir = (my_DIR *) malloc (sizeof (my_DIR)); - if (dir == NULL) - { - printf ("cannot allocate directory handle: %m\n"); - exit (EXIT_FAILURE); - } - - dir->level = filesystem[idx].level; - dir->idx = idx; - - PRINTF ("my_opendir(\"%s\") == { level: %d, idx: %ld }\n", - s, filesystem[idx].level, idx); - - return dir; -} - - -static struct dirent * -my_readdir (void *gdir) -{ - my_DIR *dir = gdir; - - if (dir->idx == -1) - { - PRINTF ("my_readdir ({ level: %d, idx: %ld }) = NULL\n", - dir->level, (long int) dir->idx); - return NULL; - } - - while (dir->idx < nfiles && filesystem[dir->idx].level > dir->level) - ++dir->idx; - - if (dir->idx == nfiles || filesystem[dir->idx].level < dir->level) - { - dir->idx = -1; - PRINTF ("my_readdir ({ level: %d, idx: %ld }) = NULL\n", - dir->level, (long int) dir->idx); - return NULL; - } - - dir->d.d_ino = dir->idx; - -#ifdef _DIRENT_HAVE_D_TYPE - dir->d.d_type = filesystem[dir->idx].type; -#endif - - strcpy (dir->d.d_name, filesystem[dir->idx].name); - -#ifdef _DIRENT_HAVE_D_TYPE - PRINTF ("my_readdir ({ level: %d, idx: %ld }) = { d_ino: %ld, d_type: %d, d_name: \"%s\" }\n", - dir->level, (long int) dir->idx, dir->d.d_ino, dir->d.d_type, - dir->d.d_name); -#else - PRINTF ("my_readdir ({ level: %d, idx: %ld }) = { d_ino: %ld, d_name: \"%s\" }\n", - dir->level, (long int) dir->idx, dir->d.d_ino, - dir->d.d_name); -#endif - - ++dir->idx; - - return &dir->d; -} - - -static void -my_closedir (void *dir) -{ - PRINTF ("my_closedir ()\n"); - free (dir); -} - - -/* We use this function for lstat as well since we don't have any. */ -static int -my_stat (const char *name, struct stat *st) -{ - long int idx = find_file (name); - - if (idx == -1) - { - PRINTF ("my_stat (\"%s\", ...) = -1 (%m)\n", name); - return -1; - } - - memset (st, '\0', sizeof (*st)); - - if (filesystem[idx].type == DT_UNKNOWN) - st->st_mode = DTTOIF (idx + 1 < nfiles - && filesystem[idx].level < filesystem[idx + 1].level - ? DT_DIR : DT_REG) | filesystem[idx].mode; - else - st->st_mode = DTTOIF (filesystem[idx].type) | filesystem[idx].mode; - - PRINTF ("my_stat (\"%s\", { st_mode: %o }) = 0\n", name, st->st_mode); - - return 0; -} - - -static void -init_glob_altdirfuncs (glob_t *pglob) -{ - pglob->gl_closedir = my_closedir; - pglob->gl_readdir = my_readdir; - pglob->gl_opendir = my_opendir; - pglob->gl_lstat = my_stat; - pglob->gl_stat = my_stat; -} - - -static int -do_test (void) -{ - glob_t gl; - memset (&gl, 0, sizeof (gl)); - init_glob_altdirfuncs (&gl); - - if (glob ("dir/*able/*", GLOB_ERR | GLOB_ALTDIRFUNC, NULL, &gl) - != GLOB_ABORTED) - { - puts ("glob did not fail with GLOB_ABORTED"); - exit (EXIT_FAILURE); - } - - globfree (&gl); - - memset (&gl, 0, sizeof (gl)); - init_glob_altdirfuncs (&gl); - - gl.gl_offs = 3; - if (glob ("dir2/*", GLOB_DOOFFS, NULL, &gl) != GLOB_NOMATCH) - { - puts ("glob did not fail with GLOB_NOMATCH"); - exit (EXIT_FAILURE); - } - - globfree (&gl); - - return 0; -} -#else -static int do_test (void) { return 0; } -#endif - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/misc/bug-readdir1.c b/test/misc/bug-readdir1.c deleted file mode 100644 index a8594a82e..000000000 --- a/test/misc/bug-readdir1.c +++ /dev/null @@ -1,37 +0,0 @@ -#include -#include -#include -#include -#include -#include - - -int -main (void) -{ - DIR *dirp; - struct dirent* ent; - - /* open a dir stream */ - dirp = opendir ("/tmp"); - if (dirp == NULL) - { - if (errno == ENOENT) - exit (0); - - perror ("opendir"); - exit (1); - } - - /* close the directory file descriptor, making it invalid */ - if (close (dirfd (dirp)) != 0) - { - puts ("could not close directory file descriptor"); - /* This is not an error. It is not guaranteed this is possible. */ - return 0; - } - - ent = readdir (dirp); - - return ent != NULL || errno != EBADF; -} diff --git a/test/misc/dirent.c b/test/misc/dirent.c deleted file mode 100644 index 491e3cf75..000000000 --- a/test/misc/dirent.c +++ /dev/null @@ -1,39 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#define _DTIFY(DT) [DT] #DT -const char * const types[] = { - _DTIFY(DT_UNKNOWN), - _DTIFY(DT_FIFO), - _DTIFY(DT_CHR), - _DTIFY(DT_DIR), - _DTIFY(DT_BLK), - _DTIFY(DT_REG), - _DTIFY(DT_LNK), - _DTIFY(DT_SOCK), - _DTIFY(DT_WHT) -}; - -int main(int argc, char *argv[]) -{ - DIR *dirh; - struct dirent *de; - const char *mydir = (argc == 1 ? "/" : argv[1]); - - if ((dirh = opendir(mydir)) == NULL) { - perror("opendir"); - return 1; - } - - printf("readdir() says:\n"); - while ((de = readdir(dirh)) != NULL) - printf("\tdir entry %s: %s\n", types[de->d_type], de->d_name); - - closedir(dirh); - - return 0; -} diff --git a/test/misc/dirent64.c b/test/misc/dirent64.c deleted file mode 100644 index 26455ab68..000000000 --- a/test/misc/dirent64.c +++ /dev/null @@ -1 +0,0 @@ -#include "dirent.c" diff --git a/test/misc/fdopen.c b/test/misc/fdopen.c deleted file mode 100644 index 97e66de0a..000000000 --- a/test/misc/fdopen.c +++ /dev/null @@ -1,52 +0,0 @@ -/* Test for fdopen bugs. */ - -#include -#include -#include -#include - -#define assert(x) \ - if (!(x)) \ - { \ - fputs ("test failed: " #x "\n", stderr); \ - retval = 1; \ - goto the_end; \ - } - -int -main (int argc, char *argv[]) -{ - char name[256]; - FILE *fp = NULL; - int retval = 0; - int fd; - - /* hack to get a tempfile name w/out using tmpname() - * as that func causes a link time warning */ - sprintf(name, "%s-uClibc-test.XXXXXX", __FILE__); - fd = mkstemp(name); - close(fd); - - fp = fopen (name, "w"); - assert (fp != NULL) - assert (fputs ("foobar and baz", fp) > 0); - assert (fclose (fp) == 0); - fp = NULL; - - fd = open (name, O_RDWR|O_CREAT, 0660); - assert (fd != -1); - assert (lseek (fd, 5, SEEK_SET) == 5); - - fp = fdopen (fd, "a"); - assert (fp != NULL); - /* SuSv3 says that doing a fdopen() does not reset the file position, - * thus the '5' here is correct, not '14'. */ - assert (ftell (fp) == 5); - -the_end: - if (fp != NULL) - assert (fclose (fp) == 0); - unlink (name); - - return retval; -} diff --git a/test/misc/opendir-tst1.c b/test/misc/opendir-tst1.c deleted file mode 100644 index ffd785f80..000000000 --- a/test/misc/opendir-tst1.c +++ /dev/null @@ -1,95 +0,0 @@ -/* Copyright (C) 1998, 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1998. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/* Name of the FIFO. */ -char tmpname[] = "fifoXXXXXX"; - - -/* Do the real work. */ -static int -real_test (void) -{ - DIR *dirp; - - /* This should not block for an FIFO. */ - dirp = opendir (tmpname); - - /* Successful. */ - if (dirp != NULL) - { - /* Oh, oh, how can this work? */ - fputs ("`opendir' succeeded on a FIFO???\n", stdout); - closedir (dirp); - return 1; - } - - if (errno != ENOTDIR) - { - fprintf (stdout, "`opendir' return error `%s' instead of `%s'\n", - strerror (errno), strerror (ENOTDIR)); - return 1; - } - - return 0; -} - - -static int -do_test (int argc, char *argv[]) -{ - int retval; - - retval = mkstemp(tmpname); - close(retval); - unlink(tmpname); - - /* Try to generate a FIFO. */ - if (mknod (tmpname, 0600 | S_IFIFO, 0) < 0) - { - perror ("mknod"); - /* We cannot make this an error. */ - return 0; - } - - retval = real_test (); - - remove (tmpname); - - return retval; -} - - -static void -do_cleanup (void) -{ - remove (tmpname); -} -#define CLEANUP_HANDLER do_cleanup () - - -/* Include the test skeleton. */ -#include "../test-skeleton.c" diff --git a/test/misc/outb.c b/test/misc/outb.c deleted file mode 100644 index bbe18eaec..000000000 --- a/test/misc/outb.c +++ /dev/null @@ -1,9 +0,0 @@ -#include - -int main(void) -{ - ioperm(0x340,0x342,1); - outb(0x340,0x0); - exit(0); -} - diff --git a/test/misc/popen.c b/test/misc/popen.c deleted file mode 100644 index 868b70eed..000000000 --- a/test/misc/popen.c +++ /dev/null @@ -1,47 +0,0 @@ -#include -#include -#include -#include -#include - -#define TEST(r, f, x, m) ( \ -((r) = (f)) == (x) || \ -(printf(__FILE__ ":%d: %s failed (" m ")\n", __LINE__, #f, r, x), err++, 0) ) - -#define TEST_E(f) ( (errno = 0), (f) || \ -(printf(__FILE__ ":%d: %s failed (errno = %d)\n", __LINE__, #f, errno), err++, 0) ) - -#define TEST_S(s, x, m) ( \ -!strcmp((s),(x)) || \ -(printf(__FILE__ ":%d: [%s] != [%s] (%s)\n", __LINE__, s, x, m), err++, 0) ) - -static sig_atomic_t got_sig; - -static void handler(int sig) -{ - got_sig = 1; -} - -int main(void) -{ - int i; - char foo[6]; - char cmd[64]; - int err = 0; - FILE *f; - - TEST_E(f = popen("echo hello", "r")); - TEST_E(fgets(foo, sizeof foo, f)); - TEST_S(foo, "hello", "child process did not say hello"); - TEST(i, pclose(f), 0, "exit status %04x != %04x"); - - signal(SIGUSR1, handler); - snprintf(cmd, sizeof cmd, "read a ; test \"x$a\" = xhello && kill -USR1 %d", getpid()); - TEST_E(f = popen(cmd, "w")); - TEST_E(fputs("hello", f) >= 0); - TEST(i, pclose(f), 0, "exit status %04x != %04x"); - signal(SIGUSR1, SIG_DFL); - TEST(i, got_sig, 1, "child process did not send signal (%i!=%i)"); - - return err; -} diff --git a/test/misc/seek.c b/test/misc/seek.c deleted file mode 100644 index c5edb94c9..000000000 --- a/test/misc/seek.c +++ /dev/null @@ -1,82 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof(*arr)) - -int main(void) -{ - struct { - off_t offset; - int whence; - } tests[] = { - { 0x00, SEEK_SET }, - { 0x01, SEEK_SET }, - { 0xFF, SEEK_SET } - }; - char buf[2000]; - off_t ret; - int i, fd; - FILE *fp; - int tmp; - - fd = open("lseek.out", O_RDWR|O_CREAT, 0600); - if (fd == -1) { - perror("open(lseek.out) failed"); - return 1; - } - unlink("lseek.out"); - fp = fdopen(fd, "rw"); - if (fp == NULL) { - perror("fopen(lseek.out) failed"); - return 1; - } - - memset(buf, 0xAB, sizeof(buf)); - ret = write(fd, buf, sizeof(buf)); - if (ret != sizeof(buf)) { - fprintf(stderr, "write() failed to write %zi bytes (wrote %li): ", sizeof(buf), (long)ret); - perror(""); - return 1; - } - - tmp = fseeko(fp, 1024, SEEK_SET); - assert(tmp == 0); - tmp = fseeko(fp, (off_t)-16, SEEK_CUR); - assert(tmp == 0); - ret = ftell(fp); - if (ret != (1024-16)) { - fprintf(stderr, "ftell() failed, we wanted pos %i but got %li: ", (1024-16), (long)ret); - perror(""); - return 1; - } - - for (i = 0; i < ARRAY_SIZE(tests); ++i) { - ret = lseek(fd, tests[i].offset, tests[i].whence); - if (ret != tests[i].offset) { - fprintf(stderr, "lseek(%li,%i) failed (wanted %li, got %li): ", (long)tests[i].offset, - tests[i].whence, (long)tests[i].offset, (long)ret); - perror(""); - return 1; - } - ret = fseek(fp, tests[i].offset, tests[i].whence); - if (ret != 0) { - fprintf(stderr, "fseek(%li,%i) failed (wanted 0, got %li): ", (long)tests[i].offset, - tests[i].whence, (long)ret); - perror(""); - return 1; - } - } - - fclose(fp); - close(fd); - - printf("Success!\n"); - - return 0; -} diff --git a/test/misc/sem.c b/test/misc/sem.c deleted file mode 100644 index 62a59b1e9..000000000 --- a/test/misc/sem.c +++ /dev/null @@ -1,45 +0,0 @@ -#include -#include -#include -#include -#include -#include - -int main(void) -{ - int k, r; - union semun { - int val; - struct semid_ds *buf; - unsigned short int *array; - struct seminfo *__buf; - } sd; - struct semid_ds sd_buf; - - k = semget(IPC_PRIVATE, 10, IPC_CREAT | 0666 ); - printf("semget(IPC_CREAT) = %d\n", k); - - if (k < 0) { - fprintf(stderr, "semget failed: %s\n", strerror(errno)); - return 1; - } - - sd.buf = &sd_buf; - r = semctl(k, 0, IPC_STAT, sd); - printf("semctl(k) = %d\n", r); - - if (r < 0) { - perror("semctl IPC_STAT failed"); - return 1; - } - - printf("sem_nsems = %lu\n", sd_buf.sem_nsems); - if (sd_buf.sem_nsems != 10) { - fprintf(stderr, "failed: incorrect sem_nsems!\n"); - return 1; - } - - printf("succeeded\n"); - - return 0; -} diff --git a/test/misc/stdarg.c b/test/misc/stdarg.c deleted file mode 100644 index 1566e0ce8..000000000 --- a/test/misc/stdarg.c +++ /dev/null @@ -1,23 +0,0 @@ -/* copied from rsync */ - -#include -#include -#include -#include -#include -static int foo(const char *format, ...) -{ - va_list ap; - size_t len; - char buf[5]; - - va_start(ap, format); - len = vsnprintf(0, 0, format, ap); - va_end(ap); - if (len != 5) return(1); - - if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) return(1); - - return(0); -} -int main(void) { return foo("hello"); } diff --git a/test/misc/tst-fnmatch.c b/test/misc/tst-fnmatch.c deleted file mode 100644 index e7d5324bb..000000000 --- a/test/misc/tst-fnmatch.c +++ /dev/null @@ -1,443 +0,0 @@ -/* Tests for fnmatch function. - Copyright (C) 2000, 2001 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -static char *next_input (char **line, int first, int last); -static int convert_flags (const char *str); -static char *flag_output (int flags); -static char *escape (const char *str, size_t *reslenp, char **resbuf); - - -int str_isalpha(const char *str) -{ - size_t i = strlen(str); - while (i--) - if (isascii(str[i]) == 0) - return 0; - return 1; -} -int str_has_funk(const char *str, const char x) -{ - size_t i, max = strlen(str); - for (i=0; i+1 reslen) - { - resbuf = (char *) realloc (resbuf, 2 * len + 1); - if (resbuf == NULL) - error (EXIT_FAILURE, errno, "while allocating buffer for printing"); - *reslenp = 2 * len + 1; - *resbufp = resbuf; - } - - wp = resbuf; - while (*str != '\0') - if (*str == '\t') - { - *wp++ = '\\'; - *wp++ = 't'; - ++str; - } - else if (*str == '\n') - { - *wp++ = '\\'; - *wp++ = 'n'; - ++str; - } - else if (*str == '"') - { - *wp++ = '\\'; - *wp++ = '"'; - ++str; - } - else if (*str == '\\') - { - *wp++ = '\\'; - *wp++ = '\\'; - ++str; - } - else - *wp++ = *str++; - - *wp = '\0'; - - return resbuf; -} diff --git a/test/misc/tst-fnmatch.input b/test/misc/tst-fnmatch.input deleted file mode 100644 index bf69c12c0..000000000 --- a/test/misc/tst-fnmatch.input +++ /dev/null @@ -1,754 +0,0 @@ -# Tests for fnmatch. -# Copyright (C) 2000, 2001, 2004 Free Software Foundation, Inc. -# This file is part of the GNU C Library. -# Contributes by Ulrich Drepper . -# - -# The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. - -# The GNU C Library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. - -# You should have received a copy of the GNU Lesser General Public -# License along with the GNU C Library; see the file COPYING.LIB. If -# not, see . - - -# Derived from the IEEE 2003.2 text. The standard only contains some -# wording describing the situations to be tested. It does not specify -# any specific tests. I.e., the tests below are in no case sufficient. -# They are hopefully necessary, though. - -# B.6 004(C) -C "!#%+,-./01234567889" "!#%+,-./01234567889" 0 -C ":;=@ABCDEFGHIJKLMNO" ":;=@ABCDEFGHIJKLMNO" 0 -C "PQRSTUVWXYZ]abcdefg" "PQRSTUVWXYZ]abcdefg" 0 -C "hijklmnopqrstuvwxyz" "hijklmnopqrstuvwxyz" 0 -C "^_{}~" "^_{}~" 0 - -# B.6 005(C) -C "\"$&'()" "\\\"\\$\\&\\'\\(\\)" 0 -C "*?[\\`|" "\\*\\?\\[\\\\\\`\\|" 0 -C "<>" "\\<\\>" 0 - -# B.6 006(C) -C "?*[" "[?*[][?*[][?*[]" 0 -C "a/b" "?/b" 0 - -# B.6 007(C) -C "a/b" "a?b" 0 -C "a/b" "a/?" 0 -C "aa/b" "?/b" NOMATCH -C "aa/b" "a?b" NOMATCH -C "a/bb" "a/?" NOMATCH - -# B.6 009(C) -C "abc" "[abc]" NOMATCH -C "x" "[abc]" NOMATCH -C "a" "[abc]" 0 -C "[" "[[abc]" 0 -C "a" "[][abc]" 0 -C "a]" "[]a]]" 0 - -# B.6 010(C) -C "xyz" "[!abc]" NOMATCH -C "x" "[!abc]" 0 -C "a" "[!abc]" NOMATCH - -# B.6 011(C) -C "]" "[][abc]" 0 -C "abc]" "[][abc]" NOMATCH -C "[]abc" "[][]abc" NOMATCH -C "]" "[!]]" NOMATCH -C "aa]" "[!]a]" NOMATCH -C "]" "[!a]" 0 -C "]]" "[!a]]" 0 - -# B.6 012(C) -C "a" "[[.a.]]" 0 -C "-" "[[.-.]]" 0 -C "-" "[[.-.][.].]]" 0 -C "-" "[[.].][.-.]]" 0 -C "-" "[[.-.][=u=]]" 0 -C "-" "[[.-.][:alpha:]]" 0 -C "a" "[![.a.]]" NOMATCH - -# B.6 013(C) -C "a" "[[.b.]]" NOMATCH -C "a" "[[.b.][.c.]]" NOMATCH -C "a" "[[.b.][=b=]]" NOMATCH - - -# B.6 015(C) -C "a" "[[=a=]]" 0 -C "b" "[[=a=]b]" 0 -C "b" "[[=a=][=b=]]" 0 -C "a" "[[=a=][=b=]]" 0 -C "a" "[[=a=][.b.]]" 0 -C "a" "[[=a=][:digit:]]" 0 - -# B.6 016(C) -C "=" "[[=a=]b]" NOMATCH -C "]" "[[=a=]b]" NOMATCH -C "a" "[[=b=][=c=]]" NOMATCH -C "a" "[[=b=][.].]]" NOMATCH -C "a" "[[=b=][:digit:]]" NOMATCH - -# B.6 017(C) -C "a" "[[:alnum:]]" 0 -C "a" "[![:alnum:]]" NOMATCH -C "-" "[[:alnum:]]" NOMATCH -C "a]a" "[[:alnum:]]a" NOMATCH -C "-" "[[:alnum:]-]" 0 -C "aa" "[[:alnum:]]a" 0 -C "-" "[![:alnum:]]" 0 -C "]" "[!][:alnum:]]" NOMATCH -C "[" "[![:alnum:][]" NOMATCH -C "a" "[[:alnum:]]" 0 -C "b" "[[:alnum:]]" 0 -C "c" "[[:alnum:]]" 0 -C "d" "[[:alnum:]]" 0 -C "e" "[[:alnum:]]" 0 -C "f" "[[:alnum:]]" 0 -C "g" "[[:alnum:]]" 0 -C "h" "[[:alnum:]]" 0 -C "i" "[[:alnum:]]" 0 -C "j" "[[:alnum:]]" 0 -C "k" "[[:alnum:]]" 0 -C "l" "[[:alnum:]]" 0 -C "m" "[[:alnum:]]" 0 -C "n" "[[:alnum:]]" 0 -C "o" "[[:alnum:]]" 0 -C "p" "[[:alnum:]]" 0 -C "q" "[[:alnum:]]" 0 -C "r" "[[:alnum:]]" 0 -C "s" "[[:alnum:]]" 0 -C "t" "[[:alnum:]]" 0 -C "u" "[[:alnum:]]" 0 -C "v" "[[:alnum:]]" 0 -C "w" "[[:alnum:]]" 0 -C "x" "[[:alnum:]]" 0 -C "y" "[[:alnum:]]" 0 -C "z" "[[:alnum:]]" 0 -C "A" "[[:alnum:]]" 0 -C "B" "[[:alnum:]]" 0 -C "C" "[[:alnum:]]" 0 -C "D" "[[:alnum:]]" 0 -C "E" "[[:alnum:]]" 0 -C "F" "[[:alnum:]]" 0 -C "G" "[[:alnum:]]" 0 -C "H" "[[:alnum:]]" 0 -C "I" "[[:alnum:]]" 0 -C "J" "[[:alnum:]]" 0 -C "K" "[[:alnum:]]" 0 -C "L" "[[:alnum:]]" 0 -C "M" "[[:alnum:]]" 0 -C "N" "[[:alnum:]]" 0 -C "O" "[[:alnum:]]" 0 -C "P" "[[:alnum:]]" 0 -C "Q" "[[:alnum:]]" 0 -C "R" "[[:alnum:]]" 0 -C "S" "[[:alnum:]]" 0 -C "T" "[[:alnum:]]" 0 -C "U" "[[:alnum:]]" 0 -C "V" "[[:alnum:]]" 0 -C "W" "[[:alnum:]]" 0 -C "X" "[[:alnum:]]" 0 -C "Y" "[[:alnum:]]" 0 -C "Z" "[[:alnum:]]" 0 -C "0" "[[:alnum:]]" 0 -C "1" "[[:alnum:]]" 0 -C "2" "[[:alnum:]]" 0 -C "3" "[[:alnum:]]" 0 -C "4" "[[:alnum:]]" 0 -C "5" "[[:alnum:]]" 0 -C "6" "[[:alnum:]]" 0 -C "7" "[[:alnum:]]" 0 -C "8" "[[:alnum:]]" 0 -C "9" "[[:alnum:]]" 0 -C "!" "[[:alnum:]]" NOMATCH -C "#" "[[:alnum:]]" NOMATCH -C "%" "[[:alnum:]]" NOMATCH -C "+" "[[:alnum:]]" NOMATCH -C "," "[[:alnum:]]" NOMATCH -C "-" "[[:alnum:]]" NOMATCH -C "." "[[:alnum:]]" NOMATCH -C "/" "[[:alnum:]]" NOMATCH -C ":" "[[:alnum:]]" NOMATCH -C ";" "[[:alnum:]]" NOMATCH -C "=" "[[:alnum:]]" NOMATCH -C "@" "[[:alnum:]]" NOMATCH -C "[" "[[:alnum:]]" NOMATCH -C "\\" "[[:alnum:]]" NOMATCH -C "]" "[[:alnum:]]" NOMATCH -C "^" "[[:alnum:]]" NOMATCH -C "_" "[[:alnum:]]" NOMATCH -C "{" "[[:alnum:]]" NOMATCH -C "}" "[[:alnum:]]" NOMATCH -C "~" "[[:alnum:]]" NOMATCH -C "\"" "[[:alnum:]]" NOMATCH -C "$" "[[:alnum:]]" NOMATCH -C "&" "[[:alnum:]]" NOMATCH -C "'" "[[:alnum:]]" NOMATCH -C "(" "[[:alnum:]]" NOMATCH -C ")" "[[:alnum:]]" NOMATCH -C "*" "[[:alnum:]]" NOMATCH -C "?" "[[:alnum:]]" NOMATCH -C "`" "[[:alnum:]]" NOMATCH -C "|" "[[:alnum:]]" NOMATCH -C "<" "[[:alnum:]]" NOMATCH -C ">" "[[:alnum:]]" NOMATCH -C "\t" "[[:cntrl:]]" 0 -C "t" "[[:cntrl:]]" NOMATCH -C "t" "[[:lower:]]" 0 -C "\t" "[[:lower:]]" NOMATCH -C "T" "[[:lower:]]" NOMATCH -C "\t" "[[:space:]]" 0 -C "t" "[[:space:]]" NOMATCH -C "t" "[[:alpha:]]" 0 -C "\t" "[[:alpha:]]" NOMATCH -C "0" "[[:digit:]]" 0 -C "\t" "[[:digit:]]" NOMATCH -C "t" "[[:digit:]]" NOMATCH -C "\t" "[[:print:]]" NOMATCH -C "t" "[[:print:]]" 0 -C "T" "[[:upper:]]" 0 -C "\t" "[[:upper:]]" NOMATCH -C "t" "[[:upper:]]" NOMATCH -C "\t" "[[:blank:]]" 0 -C "t" "[[:blank:]]" NOMATCH -C "\t" "[[:graph:]]" NOMATCH -C "t" "[[:graph:]]" 0 -C "." "[[:punct:]]" 0 -C "t" "[[:punct:]]" NOMATCH -C "\t" "[[:punct:]]" NOMATCH -C "0" "[[:xdigit:]]" 0 -C "\t" "[[:xdigit:]]" NOMATCH -C "a" "[[:xdigit:]]" 0 -C "A" "[[:xdigit:]]" 0 -C "t" "[[:xdigit:]]" NOMATCH -C "a" "[[alpha]]" NOMATCH -C "a" "[[alpha:]]" NOMATCH -C "a]" "[[alpha]]" 0 -C "a]" "[[alpha:]]" 0 -C "a" "[[:alpha:][.b.]]" 0 -C "a" "[[:alpha:][=b=]]" 0 -C "a" "[[:alpha:][:digit:]]" 0 -C "a" "[[:digit:][:alpha:]]" 0 - -# B.6 018(C) -C "a" "[a-c]" 0 -C "b" "[a-c]" 0 -C "c" "[a-c]" 0 -C "a" "[b-c]" NOMATCH -C "d" "[b-c]" NOMATCH -C "B" "[a-c]" NOMATCH -C "b" "[A-C]" NOMATCH -C "" "[a-c]" NOMATCH -C "as" "[a-ca-z]" NOMATCH -C "a" "[[.a.]-c]" 0 -C "a" "[a-[.c.]]" 0 -C "a" "[[.a.]-[.c.]]" 0 -C "b" "[[.a.]-c]" 0 -C "b" "[a-[.c.]]" 0 -C "b" "[[.a.]-[.c.]]" 0 -C "c" "[[.a.]-c]" 0 -C "c" "[a-[.c.]]" 0 -C "c" "[[.a.]-[.c.]]" 0 -C "d" "[[.a.]-c]" NOMATCH -C "d" "[a-[.c.]]" NOMATCH -C "d" "[[.a.]-[.c.]]" NOMATCH - -# B.6 019(C) -C "a" "[c-a]" NOMATCH -C "a" "[[.c.]-a]" NOMATCH -C "a" "[c-[.a.]]" NOMATCH -C "a" "[[.c.]-[.a.]]" NOMATCH -C "c" "[c-a]" NOMATCH -C "c" "[[.c.]-a]" NOMATCH -C "c" "[c-[.a.]]" NOMATCH -C "c" "[[.c.]-[.a.]]" NOMATCH - -# B.6 020(C) -C "a" "[a-c0-9]" 0 -C "d" "[a-c0-9]" NOMATCH -C "B" "[a-c0-9]" NOMATCH - -# B.6 021(C) -C "-" "[-a]" 0 -C "a" "[-b]" NOMATCH -C "-" "[!-a]" NOMATCH -C "a" "[!-b]" 0 -C "-" "[a-c-0-9]" 0 -C "b" "[a-c-0-9]" 0 -C "a:" "a[0-9-a]" NOMATCH -C "a:" "a[09-a]" 0 - -# B.6 024(C) -C "" "*" 0 -C "asd/sdf" "*" 0 - -# B.6 025(C) -C "as" "[a-c][a-z]" 0 -C "as" "??" 0 - -# B.6 026(C) -C "asd/sdf" "as*df" 0 -C "asd/sdf" "as*" 0 -C "asd/sdf" "*df" 0 -C "asd/sdf" "as*dg" NOMATCH -C "asdf" "as*df" 0 -C "asdf" "as*df?" NOMATCH -C "asdf" "as*??" 0 -C "asdf" "a*???" 0 -C "asdf" "*????" 0 -C "asdf" "????*" 0 -C "asdf" "??*?" 0 - -# B.6 027(C) -C "/" "/" 0 -C "/" "/*" 0 -C "/" "*/" 0 -C "/" "/?" NOMATCH -C "/" "?/" NOMATCH -C "/" "?" 0 -C "." "?" 0 -C "/." "??" 0 -C "/" "[!a-c]" 0 -C "." "[!a-c]" 0 - -# B.6 029(C) -C "/" "/" 0 PATHNAME -C "//" "//" 0 PATHNAME -C "/.a" "/*" 0 PATHNAME -C "/.a" "/?a" 0 PATHNAME -C "/.a" "/[!a-z]a" 0 PATHNAME -C "/.a/.b" "/*/?b" 0 PATHNAME - -# B.6 030(C) -C "/" "?" NOMATCH PATHNAME -C "/" "*" NOMATCH PATHNAME -C "a/b" "a?b" NOMATCH PATHNAME -C "/.a/.b" "/*b" NOMATCH PATHNAME - -# B.6 031(C) -C "/$" "\\/\\$" 0 -C "/[" "\\/\\[" 0 -C "/[" "\\/[" NOMATCH - -# B.6 032(C) -C "/$" "\\/\\$" NOMATCH NOESCAPE -C "/\\$" "\\/\\$" NOMATCH NOESCAPE -C "\\/\\$" "\\/\\$" 0 NOESCAPE - -# B.6 033(C) -C ".asd" ".*" 0 PERIOD -C "/.asd" "*" 0 PERIOD -C "/as/.df" "*/?*f" 0 PERIOD -C "..asd" ".[!a-z]*" 0 PERIOD - -# B.6 034(C) -C ".asd" "*" NOMATCH PERIOD -C ".asd" "?asd" NOMATCH PERIOD -C ".asd" "[!a-z]*" NOMATCH PERIOD - -# B.6 035(C) -C "/." "/." 0 PATHNAME|PERIOD -C "/.a./.b." "/.*/.*" 0 PATHNAME|PERIOD -C "/.a./.b." "/.??/.??" 0 PATHNAME|PERIOD - -# B.6 036(C) -C "/." "*" NOMATCH PATHNAME|PERIOD -C "/." "/*" NOMATCH PATHNAME|PERIOD -C "/." "/?" NOMATCH PATHNAME|PERIOD -C "/." "/[!a-z]" NOMATCH PATHNAME|PERIOD -C "/a./.b." "/*/*" NOMATCH PATHNAME|PERIOD -C "/a./.b." "/??/???" NOMATCH PATHNAME|PERIOD - -# Some home-grown tests. -C "foobar" "foo*[abc]z" NOMATCH -C "foobaz" "foo*[abc][xyz]" 0 -C "foobaz" "foo?*[abc][xyz]" 0 -C "foobaz" "foo?*[abc][x/yz]" 0 -C "foobaz" "foo?*[abc]/[xyz]" NOMATCH PATHNAME -C "a" "a/" NOMATCH PATHNAME -C "a/" "a" NOMATCH PATHNAME -C "//a" "/a" NOMATCH PATHNAME -C "/a" "//a" NOMATCH PATHNAME -C "az" "[a-]z" 0 -C "bz" "[ab-]z" 0 -C "cz" "[ab-]z" NOMATCH -C "-z" "[ab-]z" 0 -C "az" "[-a]z" 0 -C "bz" "[-ab]z" 0 -C "cz" "[-ab]z" NOMATCH -C "-z" "[-ab]z" 0 -C "\\" "[\\\\-a]" 0 -C "_" "[\\\\-a]" 0 -C "a" "[\\\\-a]" 0 -C "-" "[\\\\-a]" NOMATCH -C "\\" "[\\]-a]" NOMATCH -C "_" "[\\]-a]" 0 -C "a" "[\\]-a]" 0 -C "]" "[\\]-a]" 0 -C "-" "[\\]-a]" NOMATCH -C "\\" "[!\\\\-a]" NOMATCH -C "_" "[!\\\\-a]" NOMATCH -C "a" "[!\\\\-a]" NOMATCH -C "-" "[!\\\\-a]" 0 -C "!" "[\\!-]" 0 -C "-" "[\\!-]" 0 -C "\\" "[\\!-]" NOMATCH -C "Z" "[Z-\\\\]" 0 -C "[" "[Z-\\\\]" 0 -C "\\" "[Z-\\\\]" 0 -C "-" "[Z-\\\\]" NOMATCH -C "Z" "[Z-\\]]" 0 -C "[" "[Z-\\]]" 0 -C "\\" "[Z-\\]]" 0 -C "]" "[Z-\\]]" 0 -C "-" "[Z-\\]]" NOMATCH - -# Following are tests outside the scope of IEEE 2003.2 since they are using -# locales other than the C locale. The main focus of the tests is on the -# handling of ranges and the recognition of character (vs bytes). -de_DE.ISO-8859-1 "a" "[a-z]" 0 -de_DE.ISO-8859-1 "z" "[a-z]" 0 -de_DE.ISO-8859-1 "ä" "[a-z]" 0 -de_DE.ISO-8859-1 "ö" "[a-z]" 0 -de_DE.ISO-8859-1 "ü" "[a-z]" 0 -de_DE.ISO-8859-1 "A" "[a-z]" NOMATCH -de_DE.ISO-8859-1 "Z" "[a-z]" NOMATCH -de_DE.ISO-8859-1 "Ä" "[a-z]" NOMATCH -de_DE.ISO-8859-1 "Ö" "[a-z]" NOMATCH -de_DE.ISO-8859-1 "Ü" "[a-z]" NOMATCH -de_DE.ISO-8859-1 "a" "[A-Z]" NOMATCH -de_DE.ISO-8859-1 "z" "[A-Z]" NOMATCH -de_DE.ISO-8859-1 "ä" "[A-Z]" NOMATCH -de_DE.ISO-8859-1 "ö" "[A-Z]" NOMATCH -de_DE.ISO-8859-1 "ü" "[A-Z]" NOMATCH -de_DE.ISO-8859-1 "A" "[A-Z]" 0 -de_DE.ISO-8859-1 "Z" "[A-Z]" 0 -de_DE.ISO-8859-1 "Ä" "[A-Z]" 0 -de_DE.ISO-8859-1 "Ö" "[A-Z]" 0 -de_DE.ISO-8859-1 "Ü" "[A-Z]" 0 -de_DE.ISO-8859-1 "a" "[[:lower:]]" 0 -de_DE.ISO-8859-1 "z" "[[:lower:]]" 0 -de_DE.ISO-8859-1 "ä" "[[:lower:]]" 0 -de_DE.ISO-8859-1 "ö" "[[:lower:]]" 0 -de_DE.ISO-8859-1 "ü" "[[:lower:]]" 0 -de_DE.ISO-8859-1 "A" "[[:lower:]]" NOMATCH -de_DE.ISO-8859-1 "Z" "[[:lower:]]" NOMATCH -de_DE.ISO-8859-1 "Ä" "[[:lower:]]" NOMATCH -de_DE.ISO-8859-1 "Ö" "[[:lower:]]" NOMATCH -de_DE.ISO-8859-1 "Ü" "[[:lower:]]" NOMATCH -de_DE.ISO-8859-1 "a" "[[:upper:]]" NOMATCH -de_DE.ISO-8859-1 "z" "[[:upper:]]" NOMATCH -de_DE.ISO-8859-1 "ä" "[[:upper:]]" NOMATCH -de_DE.ISO-8859-1 "ö" "[[:upper:]]" NOMATCH -de_DE.ISO-8859-1 "ü" "[[:upper:]]" NOMATCH -de_DE.ISO-8859-1 "A" "[[:upper:]]" 0 -de_DE.ISO-8859-1 "Z" "[[:upper:]]" 0 -de_DE.ISO-8859-1 "Ä" "[[:upper:]]" 0 -de_DE.ISO-8859-1 "Ö" "[[:upper:]]" 0 -de_DE.ISO-8859-1 "Ü" "[[:upper:]]" 0 -de_DE.ISO-8859-1 "a" "[[:alpha:]]" 0 -de_DE.ISO-8859-1 "z" "[[:alpha:]]" 0 -de_DE.ISO-8859-1 "ä" "[[:alpha:]]" 0 -de_DE.ISO-8859-1 "ö" "[[:alpha:]]" 0 -de_DE.ISO-8859-1 "ü" "[[:alpha:]]" 0 -de_DE.ISO-8859-1 "A" "[[:alpha:]]" 0 -de_DE.ISO-8859-1 "Z" "[[:alpha:]]" 0 -de_DE.ISO-8859-1 "Ä" "[[:alpha:]]" 0 -de_DE.ISO-8859-1 "Ö" "[[:alpha:]]" 0 -de_DE.ISO-8859-1 "Ü" "[[:alpha:]]" 0 - -de_DE.ISO-8859-1 "a" "[[=a=]b]" 0 -de_DE.ISO-8859-1 "â" "[[=a=]b]" 0 -de_DE.ISO-8859-1 "à" "[[=a=]b]" 0 -de_DE.ISO-8859-1 "á" "[[=a=]b]" 0 -de_DE.ISO-8859-1 "ä" "[[=a=]b]" 0 -de_DE.ISO-8859-1 "b" "[[=a=]b]" 0 -de_DE.ISO-8859-1 "c" "[[=a=]b]" NOMATCH -de_DE.ISO-8859-1 "a" "[[=â=]b]" 0 -de_DE.ISO-8859-1 "â" "[[=â=]b]" 0 -de_DE.ISO-8859-1 "à" "[[=â=]b]" 0 -de_DE.ISO-8859-1 "á" "[[=â=]b]" 0 -de_DE.ISO-8859-1 "ä" "[[=â=]b]" 0 -de_DE.ISO-8859-1 "b" "[[=â=]b]" 0 -de_DE.ISO-8859-1 "c" "[[=â=]b]" NOMATCH -de_DE.ISO-8859-1 "a" "[[=à=]b]" 0 -de_DE.ISO-8859-1 "â" "[[=à=]b]" 0 -de_DE.ISO-8859-1 "à" "[[=à=]b]" 0 -de_DE.ISO-8859-1 "á" "[[=à=]b]" 0 -de_DE.ISO-8859-1 "ä" "[[=à=]b]" 0 -de_DE.ISO-8859-1 "b" "[[=à=]b]" 0 -de_DE.ISO-8859-1 "c" "[[=à=]b]" NOMATCH -de_DE.ISO-8859-1 "a" "[[=á=]b]" 0 -de_DE.ISO-8859-1 "â" "[[=á=]b]" 0 -de_DE.ISO-8859-1 "à" "[[=á=]b]" 0 -de_DE.ISO-8859-1 "á" "[[=á=]b]" 0 -de_DE.ISO-8859-1 "ä" "[[=á=]b]" 0 -de_DE.ISO-8859-1 "b" "[[=á=]b]" 0 -de_DE.ISO-8859-1 "c" "[[=á=]b]" NOMATCH -de_DE.ISO-8859-1 "a" "[[=ä=]b]" 0 -de_DE.ISO-8859-1 "â" "[[=ä=]b]" 0 -de_DE.ISO-8859-1 "à" "[[=ä=]b]" 0 -de_DE.ISO-8859-1 "á" "[[=ä=]b]" 0 -de_DE.ISO-8859-1 "ä" "[[=ä=]b]" 0 -de_DE.ISO-8859-1 "b" "[[=ä=]b]" 0 -de_DE.ISO-8859-1 "c" "[[=ä=]b]" NOMATCH - -de_DE.ISO-8859-1 "aa" "[[.a.]]a" 0 -de_DE.ISO-8859-1 "ba" "[[.a.]]a" NOMATCH - - -# And with a multibyte character set. -de_DE.UTF-8 "a" "[a-z]" 0 -de_DE.UTF-8 "z" "[a-z]" 0 -de_DE.UTF-8 "ä" "[a-z]" 0 -de_DE.UTF-8 "ö" "[a-z]" 0 -de_DE.UTF-8 "ü" "[a-z]" 0 -de_DE.UTF-8 "A" "[a-z]" NOMATCH -de_DE.UTF-8 "Z" "[a-z]" NOMATCH -de_DE.UTF-8 "Ä" "[a-z]" NOMATCH -de_DE.UTF-8 "Ö" "[a-z]" NOMATCH -de_DE.UTF-8 "Ãœ" "[a-z]" NOMATCH -de_DE.UTF-8 "a" "[A-Z]" NOMATCH -de_DE.UTF-8 "z" "[A-Z]" NOMATCH -de_DE.UTF-8 "ä" "[A-Z]" NOMATCH -de_DE.UTF-8 "ö" "[A-Z]" NOMATCH -de_DE.UTF-8 "ü" "[A-Z]" NOMATCH -de_DE.UTF-8 "A" "[A-Z]" 0 -de_DE.UTF-8 "Z" "[A-Z]" 0 -de_DE.UTF-8 "Ä" "[A-Z]" 0 -de_DE.UTF-8 "Ö" "[A-Z]" 0 -de_DE.UTF-8 "Ãœ" "[A-Z]" 0 -de_DE.UTF-8 "a" "[[:lower:]]" 0 -de_DE.UTF-8 "z" "[[:lower:]]" 0 -de_DE.UTF-8 "ä" "[[:lower:]]" 0 -de_DE.UTF-8 "ö" "[[:lower:]]" 0 -de_DE.UTF-8 "ü" "[[:lower:]]" 0 -de_DE.UTF-8 "A" "[[:lower:]]" NOMATCH -de_DE.UTF-8 "Z" "[[:lower:]]" NOMATCH -de_DE.UTF-8 "Ä" "[[:lower:]]" NOMATCH -de_DE.UTF-8 "Ö" "[[:lower:]]" NOMATCH -de_DE.UTF-8 "Ãœ" "[[:lower:]]" NOMATCH -de_DE.UTF-8 "a" "[[:upper:]]" NOMATCH -de_DE.UTF-8 "z" "[[:upper:]]" NOMATCH -de_DE.UTF-8 "ä" "[[:upper:]]" NOMATCH -de_DE.UTF-8 "ö" "[[:upper:]]" NOMATCH -de_DE.UTF-8 "ü" "[[:upper:]]" NOMATCH -de_DE.UTF-8 "A" "[[:upper:]]" 0 -de_DE.UTF-8 "Z" "[[:upper:]]" 0 -de_DE.UTF-8 "Ä" "[[:upper:]]" 0 -de_DE.UTF-8 "Ö" "[[:upper:]]" 0 -de_DE.UTF-8 "Ãœ" "[[:upper:]]" 0 -de_DE.UTF-8 "a" "[[:alpha:]]" 0 -de_DE.UTF-8 "z" "[[:alpha:]]" 0 -de_DE.UTF-8 "ä" "[[:alpha:]]" 0 -de_DE.UTF-8 "ö" "[[:alpha:]]" 0 -de_DE.UTF-8 "ü" "[[:alpha:]]" 0 -de_DE.UTF-8 "A" "[[:alpha:]]" 0 -de_DE.UTF-8 "Z" "[[:alpha:]]" 0 -de_DE.UTF-8 "Ä" "[[:alpha:]]" 0 -de_DE.UTF-8 "Ö" "[[:alpha:]]" 0 -de_DE.UTF-8 "Ãœ" "[[:alpha:]]" 0 - -de_DE.UTF-8 "a" "[[=a=]b]" 0 -de_DE.UTF-8 "â" "[[=a=]b]" 0 -de_DE.UTF-8 "à" "[[=a=]b]" 0 -de_DE.UTF-8 "á" "[[=a=]b]" 0 -de_DE.UTF-8 "ä" "[[=a=]b]" 0 -de_DE.UTF-8 "b" "[[=a=]b]" 0 -de_DE.UTF-8 "c" "[[=a=]b]" NOMATCH -de_DE.UTF-8 "a" "[[=â=]b]" 0 -de_DE.UTF-8 "â" "[[=â=]b]" 0 -de_DE.UTF-8 "à" "[[=â=]b]" 0 -de_DE.UTF-8 "á" "[[=â=]b]" 0 -de_DE.UTF-8 "ä" "[[=â=]b]" 0 -de_DE.UTF-8 "b" "[[=â=]b]" 0 -de_DE.UTF-8 "c" "[[=â=]b]" NOMATCH -de_DE.UTF-8 "a" "[[=à=]b]" 0 -de_DE.UTF-8 "â" "[[=à=]b]" 0 -de_DE.UTF-8 "à" "[[=à=]b]" 0 -de_DE.UTF-8 "á" "[[=à=]b]" 0 -de_DE.UTF-8 "ä" "[[=à=]b]" 0 -de_DE.UTF-8 "b" "[[=à=]b]" 0 -de_DE.UTF-8 "c" "[[=à=]b]" NOMATCH -de_DE.UTF-8 "a" "[[=á=]b]" 0 -de_DE.UTF-8 "â" "[[=á=]b]" 0 -de_DE.UTF-8 "à" "[[=á=]b]" 0 -de_DE.UTF-8 "á" "[[=á=]b]" 0 -de_DE.UTF-8 "ä" "[[=á=]b]" 0 -de_DE.UTF-8 "b" "[[=á=]b]" 0 -de_DE.UTF-8 "c" "[[=á=]b]" NOMATCH -de_DE.UTF-8 "a" "[[=ä=]b]" 0 -de_DE.UTF-8 "â" "[[=ä=]b]" 0 -de_DE.UTF-8 "à" "[[=ä=]b]" 0 -de_DE.UTF-8 "á" "[[=ä=]b]" 0 -de_DE.UTF-8 "ä" "[[=ä=]b]" 0 -de_DE.UTF-8 "b" "[[=ä=]b]" 0 -de_DE.UTF-8 "c" "[[=ä=]b]" NOMATCH - -de_DE.UTF-8 "aa" "[[.a.]]a" 0 -de_DE.UTF-8 "ba" "[[.a.]]a" NOMATCH - - -# Test of GNU extensions. -C "x" "x" 0 PATHNAME|LEADING_DIR -C "x/y" "x" 0 PATHNAME|LEADING_DIR -C "x/y/z" "x" 0 PATHNAME|LEADING_DIR -C "x" "*" 0 PATHNAME|LEADING_DIR -C "x/y" "*" 0 PATHNAME|LEADING_DIR -C "x/y/z" "*" 0 PATHNAME|LEADING_DIR -C "x" "*x" 0 PATHNAME|LEADING_DIR -C "x/y" "*x" 0 PATHNAME|LEADING_DIR -C "x/y/z" "*x" 0 PATHNAME|LEADING_DIR -C "x" "x*" 0 PATHNAME|LEADING_DIR -C "x/y" "x*" 0 PATHNAME|LEADING_DIR -C "x/y/z" "x*" 0 PATHNAME|LEADING_DIR -C "x" "a" NOMATCH PATHNAME|LEADING_DIR -C "x/y" "a" NOMATCH PATHNAME|LEADING_DIR -C "x/y/z" "a" NOMATCH PATHNAME|LEADING_DIR -C "x" "x/y" NOMATCH PATHNAME|LEADING_DIR -C "x/y" "x/y" 0 PATHNAME|LEADING_DIR -C "x/y/z" "x/y" 0 PATHNAME|LEADING_DIR -C "x" "x?y" NOMATCH PATHNAME|LEADING_DIR -C "x/y" "x?y" NOMATCH PATHNAME|LEADING_DIR -C "x/y/z" "x?y" NOMATCH PATHNAME|LEADING_DIR - -# ksh style matching. -C "abcd" "?@(a|b)*@(c)d" 0 EXTMATCH -C "/dev/udp/129.22.8.102/45" "/dev/@(tcp|udp)/*/*" 0 PATHNAME|EXTMATCH -C "12" "[1-9]*([0-9])" 0 EXTMATCH -C "12abc" "[1-9]*([0-9])" NOMATCH EXTMATCH -C "1" "[1-9]*([0-9])" 0 EXTMATCH -C "07" "+([0-7])" 0 EXTMATCH -C "0377" "+([0-7])" 0 EXTMATCH -C "09" "+([0-7])" NOMATCH EXTMATCH -C "paragraph" "para@(chute|graph)" 0 EXTMATCH -C "paramour" "para@(chute|graph)" NOMATCH EXTMATCH -C "para991" "para?([345]|99)1" 0 EXTMATCH -C "para381" "para?([345]|99)1" NOMATCH EXTMATCH -C "paragraph" "para*([0-9])" NOMATCH EXTMATCH -C "para" "para*([0-9])" 0 EXTMATCH -C "para13829383746592" "para*([0-9])" 0 EXTMATCH -C "paragraph" "para+([0-9])" NOMATCH EXTMATCH -C "para" "para+([0-9])" NOMATCH EXTMATCH -C "para987346523" "para+([0-9])" 0 EXTMATCH -C "paragraph" "para!(*.[0-9])" 0 EXTMATCH -C "para.38" "para!(*.[0-9])" 0 EXTMATCH -C "para.graph" "para!(*.[0-9])" 0 EXTMATCH -C "para39" "para!(*.[0-9])" 0 EXTMATCH -C "" "*(0|1|3|5|7|9)" 0 EXTMATCH -C "137577991" "*(0|1|3|5|7|9)" 0 EXTMATCH -C "2468" "*(0|1|3|5|7|9)" NOMATCH EXTMATCH -C "1358" "*(0|1|3|5|7|9)" NOMATCH EXTMATCH -C "file.c" "*.c?(c)" 0 EXTMATCH -C "file.C" "*.c?(c)" NOMATCH EXTMATCH -C "file.cc" "*.c?(c)" 0 EXTMATCH -C "file.ccc" "*.c?(c)" NOMATCH EXTMATCH -C "parse.y" "!(*.c|*.h|Makefile.in|config*|README)" 0 EXTMATCH -C "shell.c" "!(*.c|*.h|Makefile.in|config*|README)" NOMATCH EXTMATCH -C "Makefile" "!(*.c|*.h|Makefile.in|config*|README)" 0 EXTMATCH -C "VMS.FILE;1" "*\;[1-9]*([0-9])" 0 EXTMATCH -C "VMS.FILE;0" "*\;[1-9]*([0-9])" NOMATCH EXTMATCH -C "VMS.FILE;" "*\;[1-9]*([0-9])" NOMATCH EXTMATCH -C "VMS.FILE;139" "*\;[1-9]*([0-9])" 0 EXTMATCH -C "VMS.FILE;1N" "*\;[1-9]*([0-9])" NOMATCH EXTMATCH -C "abcfefg" "ab**(e|f)" 0 EXTMATCH -C "abcfefg" "ab**(e|f)g" 0 EXTMATCH -C "ab" "ab*+(e|f)" NOMATCH EXTMATCH -C "abef" "ab***ef" 0 EXTMATCH -C "abef" "ab**" 0 EXTMATCH -C "fofo" "*(f*(o))" 0 EXTMATCH -C "ffo" "*(f*(o))" 0 EXTMATCH -C "foooofo" "*(f*(o))" 0 EXTMATCH -C "foooofof" "*(f*(o))" 0 EXTMATCH -C "fooofoofofooo" "*(f*(o))" 0 EXTMATCH -C "foooofof" "*(f+(o))" NOMATCH EXTMATCH -C "xfoooofof" "*(f*(o))" NOMATCH EXTMATCH -C "foooofofx" "*(f*(o))" NOMATCH EXTMATCH -C "ofxoofxo" "*(*(of*(o)x)o)" 0 EXTMATCH -C "ofooofoofofooo" "*(f*(o))" NOMATCH EXTMATCH -C "foooxfooxfoxfooox" "*(f*(o)x)" 0 EXTMATCH -C "foooxfooxofoxfooox" "*(f*(o)x)" NOMATCH EXTMATCH -C "foooxfooxfxfooox" "*(f*(o)x)" 0 EXTMATCH -C "ofxoofxo" "*(*(of*(o)x)o)" 0 EXTMATCH -C "ofoooxoofxo" "*(*(of*(o)x)o)" 0 EXTMATCH -C "ofoooxoofxoofoooxoofxo" "*(*(of*(o)x)o)" 0 EXTMATCH -C "ofoooxoofxoofoooxoofxoo" "*(*(of*(o)x)o)" 0 EXTMATCH -C "ofoooxoofxoofoooxoofxofo" "*(*(of*(o)x)o)" NOMATCH EXTMATCH -C "ofoooxoofxoofoooxoofxooofxofxo" "*(*(of*(o)x)o)" 0 EXTMATCH -C "aac" "*(@(a))a@(c)" 0 EXTMATCH -C "ac" "*(@(a))a@(c)" 0 EXTMATCH -C "c" "*(@(a))a@(c)" NOMATCH EXTMATCH -C "aaac" "*(@(a))a@(c)" 0 EXTMATCH -C "baaac" "*(@(a))a@(c)" NOMATCH EXTMATCH -C "abcd" "?@(a|b)*@(c)d" 0 EXTMATCH -C "abcd" "@(ab|a*@(b))*(c)d" 0 EXTMATCH -C "acd" "@(ab|a*(b))*(c)d" 0 EXTMATCH -C "abbcd" "@(ab|a*(b))*(c)d" 0 EXTMATCH -C "effgz" "@(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH -C "efgz" "@(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH -C "egz" "@(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH -C "egzefffgzbcdij" "*(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH -C "egz" "@(b+(c)d|e+(f)g?|?(h)i@(j|k))" NOMATCH EXTMATCH -C "ofoofo" "*(of+(o))" 0 EXTMATCH -C "oxfoxoxfox" "*(oxf+(ox))" 0 EXTMATCH -C "oxfoxfox" "*(oxf+(ox))" NOMATCH EXTMATCH -C "ofoofo" "*(of+(o)|f)" 0 EXTMATCH -C "foofoofo" "@(foo|f|fo)*(f|of+(o))" 0 EXTMATCH -C "oofooofo" "*(of|oof+(o))" 0 EXTMATCH -C "fffooofoooooffoofffooofff" "*(*(f)*(o))" 0 EXTMATCH -C "fofoofoofofoo" "*(fo|foo)" 0 EXTMATCH -C "foo" "!(x)" 0 EXTMATCH -C "foo" "!(x)*" 0 EXTMATCH -C "foo" "!(foo)" NOMATCH EXTMATCH -C "foo" "!(foo)*" 0 EXTMATCH -C "foobar" "!(foo)" 0 EXTMATCH -C "foobar" "!(foo)*" 0 EXTMATCH -C "moo.cow" "!(*.*).!(*.*)" 0 EXTMATCH -C "mad.moo.cow" "!(*.*).!(*.*)" NOMATCH EXTMATCH -C "mucca.pazza" "mu!(*(c))?.pa!(*(z))?" NOMATCH EXTMATCH -C "fff" "!(f)" 0 EXTMATCH -C "fff" "*(!(f))" 0 EXTMATCH -C "fff" "+(!(f))" 0 EXTMATCH -C "ooo" "!(f)" 0 EXTMATCH -C "ooo" "*(!(f))" 0 EXTMATCH -C "ooo" "+(!(f))" 0 EXTMATCH -C "foo" "!(f)" 0 EXTMATCH -C "foo" "*(!(f))" 0 EXTMATCH -C "foo" "+(!(f))" 0 EXTMATCH -C "f" "!(f)" NOMATCH EXTMATCH -C "f" "*(!(f))" NOMATCH EXTMATCH -C "f" "+(!(f))" NOMATCH EXTMATCH -C "foot" "@(!(z*)|*x)" 0 EXTMATCH -C "zoot" "@(!(z*)|*x)" NOMATCH EXTMATCH -C "foox" "@(!(z*)|*x)" 0 EXTMATCH -C "zoox" "@(!(z*)|*x)" 0 EXTMATCH -C "foo" "*(!(foo)) 0 EXTMATCH -C "foob" "!(foo)b*" NOMATCH EXTMATCH -C "foobb" "!(foo)b*" 0 EXTMATCH -C "[" "*([a[])" 0 EXTMATCH -C "]" "*([]a[])" 0 EXTMATCH -C "a" "*([]a[])" 0 EXTMATCH -C "b" "*([!]a[])" 0 EXTMATCH -C "[" "*([!]a[]|[[])" 0 EXTMATCH -C "]" "*([!]a[]|[]])" 0 EXTMATCH -C "[" "!([!]a[])" 0 EXTMATCH -C "]" "!([!]a[])" 0 EXTMATCH -C ")" "*([)])" 0 EXTMATCH -C "*" "*([*(])" 0 EXTMATCH -C "abcd" "*!(|a)cd" 0 EXTMATCH -C "ab/.a" "+([abc])/*" NOMATCH EXTMATCH|PATHNAME|PERIOD -C "" "" 0 -C "" "" 0 EXTMATCH -C "" "*([abc])" 0 EXTMATCH -C "" "?([abc])" 0 EXTMATCH diff --git a/test/misc/tst-gnuglob.c b/test/misc/tst-gnuglob.c deleted file mode 100644 index 53bc0cff2..000000000 --- a/test/misc/tst-gnuglob.c +++ /dev/null @@ -1,446 +0,0 @@ -/* Test the GNU extensions in glob which allow the user to provide callbacks - for the filesystem access functions. - Copyright (C) 2001-2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2001. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include - - -// #define DEBUG -#ifdef DEBUG -# define PRINTF(fmt, args...) printf (fmt, ##args) -#else -# define PRINTF(fmt, args...) -#endif - - -#ifdef GLOB_ALTDIRFUNC -static struct -{ - const char *name; - int level; - int type; -} filesystem[] = -{ - { ".", 1, DT_DIR }, - { "..", 1, DT_DIR }, - { "file1lev1", 1, DT_REG }, - { "file2lev1", 1, DT_UNKNOWN }, - { "dir1lev1", 1, DT_UNKNOWN }, - { ".", 2, DT_DIR }, - { "..", 2, DT_DIR }, - { "file1lev2", 2, DT_REG }, - { "dir1lev2", 2, DT_DIR }, - { ".", 3, DT_DIR }, - { "..", 3, DT_DIR }, - { "dir2lev2", 2, DT_DIR }, - { ".", 3, DT_DIR }, - { "..", 3, DT_DIR }, - { ".foo", 3, DT_REG }, - { "dir1lev3", 3, DT_DIR }, - { ".", 4, DT_DIR }, - { "..", 4, DT_DIR }, - { "file1lev4", 4, DT_REG }, - { "file1lev3", 3, DT_REG }, - { "file2lev3", 3, DT_REG }, - { "file2lev2", 2, DT_REG }, - { "file3lev2", 2, DT_REG }, - { "dir3lev2", 2, DT_DIR }, - { ".", 3, DT_DIR }, - { "..", 3, DT_DIR }, - { "file3lev3", 3, DT_REG }, - { "file4lev3", 3, DT_REG }, - { "dir2lev1", 1, DT_DIR }, - { ".", 2, DT_DIR }, - { "..", 2, DT_DIR }, - { "dir1lev2", 2, DT_UNKNOWN }, - { ".", 3, DT_DIR }, - { "..", 3, DT_DIR }, - { ".foo", 3, DT_REG }, - { ".dir", 3, DT_DIR }, - { ".", 4, DT_DIR }, - { "..", 4, DT_DIR }, - { "hidden", 4, DT_REG } -}; -#define nfiles (sizeof (filesystem) / sizeof (filesystem[0])) - - -typedef struct -{ - int level; - int idx; - struct dirent d; - char room_for_dirent[NAME_MAX]; -} my_DIR; - - -static long int -find_file (const char *s) -{ - int level = 1; - long int idx = 0; - - if (strcmp (s, ".") == 0) - return 0; - - if (s[0] == '.' && s[1] == '/') - s += 2; - - while (*s != '\0') - { - char *endp = strchrnul (s, '/'); - - PRINTF ("looking for %.*s, level %d\n", (int) (endp - s), s, level); - - while (idx < nfiles && filesystem[idx].level >= level) - { - if (filesystem[idx].level == level - && memcmp (s, filesystem[idx].name, endp - s) == 0 - && filesystem[idx].name[endp - s] == '\0') - break; - ++idx; - } - - if (idx == nfiles || filesystem[idx].level < level) - { - errno = ENOENT; - return -1; - } - - if (*endp == '\0') - return idx + 1; - - if (filesystem[idx].type != DT_DIR - && (idx + 1 >= nfiles - || filesystem[idx].level >= filesystem[idx + 1].level)) - { - errno = ENOTDIR; - return -1; - } - - ++idx; - - s = endp + 1; - ++level; - } - - errno = ENOENT; - return -1; -} - - -static void * -my_opendir (const char *s) -{ - long int idx = find_file (s); - my_DIR *dir; - - - if (idx == -1) - { - PRINTF ("my_opendir(\"%s\") == NULL\n", s); - return NULL; - } - - dir = (my_DIR *) malloc (sizeof (my_DIR)); - if (dir == NULL) - error (EXIT_FAILURE, errno, "cannot allocate directory handle"); - - dir->level = filesystem[idx].level; - dir->idx = idx; - - PRINTF ("my_opendir(\"%s\") == { level: %d, idx: %ld }\n", - s, filesystem[idx].level, idx); - - return dir; -} - - -static struct dirent * -my_readdir (void *gdir) -{ - my_DIR *dir = gdir; - - if (dir->idx == -1) - { - PRINTF ("my_readdir ({ level: %d, idx: %ld }) = NULL\n", - dir->level, (long int) dir->idx); - return NULL; - } - - while (dir->idx < nfiles && filesystem[dir->idx].level > dir->level) - ++dir->idx; - - if (dir->idx == nfiles || filesystem[dir->idx].level < dir->level) - { - dir->idx = -1; - PRINTF ("my_readdir ({ level: %d, idx: %ld }) = NULL\n", - dir->level, (long int) dir->idx); - return NULL; - } - - dir->d.d_ino = dir->idx; - -#ifdef _DIRENT_HAVE_D_TYPE - dir->d.d_type = filesystem[dir->idx].type; -#endif - - strcpy (dir->d.d_name, filesystem[dir->idx].name); - -#ifdef _DIRENT_HAVE_D_TYPE - PRINTF ("my_readdir ({ level: %d, idx: %ld }) = { d_ino: %ld, d_type: %d, d_name: \"%s\" }\n", - dir->level, (long int) dir->idx, dir->d.d_ino, dir->d.d_type, - dir->d.d_name); -#else - PRINTF ("my_readdir ({ level: %d, idx: %ld }) = { d_ino: %ld, d_name: \"%s\" }\n", - dir->level, (long int) dir->idx, dir->d.d_ino, - dir->d.d_name); -#endif - - ++dir->idx; - - return &dir->d; -} - - -static void -my_closedir (void *dir) -{ - PRINTF ("my_closedir ()\n"); - free (dir); -} - - -/* We use this function for lstat as well since we don't have any. */ -static int -my_stat (const char *name, struct stat *st) -{ - long int idx = find_file (name); - - if (idx == -1) - { - PRINTF ("my_stat (\"%s\", ...) = -1 (%s)\n", name, strerror (errno)); - return -1; - } - - memset (st, '\0', sizeof (*st)); - - if (filesystem[idx].type == DT_UNKNOWN) - st->st_mode = DTTOIF (idx + 1 < nfiles - && filesystem[idx].level < filesystem[idx + 1].level - ? DT_DIR : DT_REG) | 0777; - else - st->st_mode = DTTOIF (filesystem[idx].type) | 0777; - - PRINTF ("my_stat (\"%s\", { st_mode: %o }) = 0\n", name, st->st_mode); - - return 0; -} - - -static const char *glob_errstring[] = -{ - [GLOB_NOSPACE] = "out of memory", - [GLOB_ABORTED] = "read error", - [GLOB_NOMATCH] = "no matches found" -}; -#define nglob_errstring (sizeof (glob_errstring) / sizeof (glob_errstring[0])) - - -static const char * -flagstr (int flags) -{ - const char *strs[] = - { - "GLOB_ERR", "GLOB_MARK", "GLOB_NOSORT", "GLOB_DOOFSS", "GLOB_NOCHECK", - "GLOB_APPEND", "GLOB_NOESCAPE", "GLOB_PERIOD", "GLOB_MAGCHAR", - "GLOB_ALTDIRFUNC", "GLOB_BRACE", "GLOB_NOMAGIC", "GLOB_TILDE", - "GLOB_ONLYDIR", "GLOB_TILDECHECK" - }; -#define nstrs (sizeof (strs) / sizeof (strs[0])) - static char buf[100]; - char *cp = buf; - int cnt; - - for (cnt = 0; cnt < nstrs; ++cnt) - if (flags & (1 << cnt)) - { - flags &= ~(1 << cnt); - if (cp != buf) - *cp++ = '|'; - cp = stpcpy (cp, strs[cnt]); - } - - if (flags != 0) - { - if (cp != buf) - *cp++ = '|'; - sprintf (cp, "%#x", flags); - } - - return buf; -} - - -static int -test_result (const char *fmt, int flags, glob_t *gl, const char *str[]) -{ - size_t cnt; - int result = 0; - - printf ("results for glob (\"%s\", %s)\n", fmt, flagstr (flags)); - for (cnt = 0; cnt < gl->gl_pathc && str[cnt] != NULL; ++cnt) - { - int ok = strcmp (gl->gl_pathv[cnt], str[cnt]) == 0; - const char *errstr = ""; - - if (! ok) - { - size_t inner; - - for (inner = 0; str[inner] != NULL; ++inner) - if (strcmp (gl->gl_pathv[cnt], str[inner]) == 0) - break; - - if (str[inner] == NULL) - errstr = ok ? "" : " *** WRONG"; - else - errstr = ok ? "" : " * wrong position"; - - result = 1; - } - - printf (" %s%s\n", gl->gl_pathv[cnt], errstr); - } - puts (""); - - if (str[cnt] != NULL || cnt < gl->gl_pathc) - { - puts (" *** incorrect number of entries"); - result = 1; - } - - return result; -} - - -int -main (void) -{ - glob_t gl; - int errval; - int result = 0; - const char *fmt; - int flags; - - memset (&gl, '\0', sizeof (gl)); - - gl.gl_closedir = my_closedir; - gl.gl_readdir = my_readdir; - gl.gl_opendir = my_opendir; - gl.gl_lstat = my_stat; - gl.gl_stat = my_stat; - -#define test(a, b, c...) \ - fmt = a; \ - flags = b; \ - errval = glob (fmt, flags, NULL, &gl); \ - if (errval != 0) \ - { \ - printf ("glob (\"%s\", %s) failed: %s\n", fmt, flagstr (flags), \ - errval >= 0 && errval < nglob_errstring \ - ? glob_errstring[errval] : "???"); \ - result = 1; \ - } \ - else \ - result |= test_result (fmt, flags, &gl, (const char *[]) { c, NULL }) - - test ("*/*/*", GLOB_ALTDIRFUNC, - "dir1lev1/dir2lev2/dir1lev3", - "dir1lev1/dir2lev2/file1lev3", - "dir1lev1/dir2lev2/file2lev3", - "dir1lev1/dir3lev2/file3lev3", - "dir1lev1/dir3lev2/file4lev3"); - - test ("*/*/*", GLOB_ALTDIRFUNC | GLOB_PERIOD, - "dir1lev1/dir1lev2/.", - "dir1lev1/dir1lev2/..", - "dir1lev1/dir2lev2/.", - "dir1lev1/dir2lev2/..", - "dir1lev1/dir2lev2/.foo", - "dir1lev1/dir2lev2/dir1lev3", - "dir1lev1/dir2lev2/file1lev3", - "dir1lev1/dir2lev2/file2lev3", - "dir1lev1/dir3lev2/.", - "dir1lev1/dir3lev2/..", - "dir1lev1/dir3lev2/file3lev3", - "dir1lev1/dir3lev2/file4lev3", - "dir2lev1/dir1lev2/.", - "dir2lev1/dir1lev2/..", - "dir2lev1/dir1lev2/.dir", - "dir2lev1/dir1lev2/.foo"); - - test ("*/*/.*", GLOB_ALTDIRFUNC, - "dir1lev1/dir1lev2/.", - "dir1lev1/dir1lev2/..", - "dir1lev1/dir2lev2/.", - "dir1lev1/dir2lev2/..", - "dir1lev1/dir2lev2/.foo", - "dir1lev1/dir3lev2/.", - "dir1lev1/dir3lev2/..", - "dir2lev1/dir1lev2/.", - "dir2lev1/dir1lev2/..", - "dir2lev1/dir1lev2/.dir", - "dir2lev1/dir1lev2/.foo"); - - test ("*1*/*2*/.*", GLOB_ALTDIRFUNC, - "dir1lev1/dir1lev2/.", - "dir1lev1/dir1lev2/..", - "dir1lev1/dir2lev2/.", - "dir1lev1/dir2lev2/..", - "dir1lev1/dir2lev2/.foo", - "dir1lev1/dir3lev2/.", - "dir1lev1/dir3lev2/..", - "dir2lev1/dir1lev2/.", - "dir2lev1/dir1lev2/..", - "dir2lev1/dir1lev2/.dir", - "dir2lev1/dir1lev2/.foo"); - - test ("*1*/*1*/.*", GLOB_ALTDIRFUNC, - "dir1lev1/dir1lev2/.", - "dir1lev1/dir1lev2/..", - "dir2lev1/dir1lev2/.", - "dir2lev1/dir1lev2/..", - "dir2lev1/dir1lev2/.dir", - "dir2lev1/dir1lev2/.foo"); - - globfree (&gl); - - return result; -} - -#else -int main(void) { return 0; } -#endif diff --git a/test/misc/tst-inotify.c b/test/misc/tst-inotify.c deleted file mode 100644 index f9f6830e3..000000000 --- a/test/misc/tst-inotify.c +++ /dev/null @@ -1,65 +0,0 @@ -/* vi: set sw=4 ts=4 sts=4: */ -/* - * inotify test for uClibc - * Copyright (C) 2012 by Kevin Cernekee - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -static int -do_test(void) -{ - int ifd, fd, ret, result = 0; - struct inotify_event e; - char tfile[] = "/tmp/inotify.XXXXXX"; - - fd = mkstemp(tfile); - close(fd); - - ifd = inotify_init1(IN_NONBLOCK); - if (ifd < 0) { - perror("inotify_init1()"); - result = 1; - } - if (inotify_add_watch(ifd, tfile, IN_DELETE_SELF) < 0) { - perror("inotify_add_watch()"); - result = 1; - } - - /* nonblocking inotify should return immediately with no events */ - ret = read(ifd, &e, sizeof(e)); - if (ret != -1 || errno != EAGAIN) { - fprintf(stderr, "first read() returned %d\n", ret); - result = 1; - } - - /* generate an event */ - unlink(tfile); - - /* now check whether our event was seen */ - ret = read(ifd, &e, sizeof(e)); - if (ret != sizeof(e)) { - fprintf(stderr, "second read() returned %d\n", ret); - result = 1; - } - - if (!(e.mask & IN_DELETE_SELF)) { - fprintf(stderr, "incorrect event mask: %" PRIx32 "\n", e.mask); - result = 1; - } - - return result; -} - -#define TIMEOUT 5 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/misc/tst-mkostemps.c b/test/misc/tst-mkostemps.c deleted file mode 100644 index 272e747a1..000000000 --- a/test/misc/tst-mkostemps.c +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Test application for mkstemp/mkstemps/mkostemp/mkostemps - * Copyright (C) 2015 by Romain Naour - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include -#include -#include -#include -#include -#include - -#define assert(x) \ - if (!(x)) \ - { \ - fputs ("test failed: " #x "\n", stderr); \ - retval = 1; \ - goto the_end; \ - } - -int -main (int argc, char *argv[]) -{ - char name[256]; - char name_suffix[256]; - FILE *fp = NULL; - int retval = 0; - int fd; - int flags = O_RDONLY | O_CLOEXEC; - struct stat sb_f1; - struct stat sb_f2; - - /* mkstemp test */ - sprintf(name, "/tmp/%s-uClibc-test.XXXXXX", __FILE__); - - fd = mkstemp(name); - - fstat(fd, &sb_f1); - assert ((sb_f1.st_mode & S_IFMT) == S_IFREG) - - stat(name, &sb_f2); - assert ((sb_f2.st_mode & S_IFMT) == S_IFREG) - - assert (sb_f1.st_ino == sb_f2.st_ino) - - close(fd); - unlink (name); - - /* mkstemps test */ - sprintf(name_suffix, "/tmp/%s-uClibc-test.XXXXXX.txt", __FILE__); - - fd = mkstemps(name_suffix, 4); - - fstat(fd, &sb_f1); - assert ((sb_f1.st_mode & S_IFMT) == S_IFREG) - - stat(name_suffix, &sb_f2); - assert ((sb_f2.st_mode & S_IFMT) == S_IFREG) - - assert (sb_f1.st_ino == sb_f2.st_ino) - - close(fd); - unlink (name_suffix); - - /* mkostemp test */ - sprintf(name, "/tmp/%s-uClibc-test.XXXXXX", __FILE__); - - fd = mkostemp(name, flags); - - fstat(fd, &sb_f1); - assert ((sb_f1.st_mode & S_IFMT) == S_IFREG) - - stat(name, &sb_f2); - assert ((sb_f2.st_mode & S_IFMT) == S_IFREG) - - assert (sb_f1.st_ino == sb_f2.st_ino) - assert (sb_f1.st_mode == sb_f2.st_mode) - - close(fd); - unlink (name); - - /* mkostemps test */ - sprintf(name_suffix, "/tmp/%s-uClibc-test.XXXXXX.txt", __FILE__); - - fd = mkostemps(name_suffix, 4, flags); - - fstat(fd, &sb_f1); - assert ((sb_f1.st_mode & S_IFMT) == S_IFREG) - - stat(name_suffix, &sb_f2); - assert ((sb_f2.st_mode & S_IFMT) == S_IFREG) - - assert (sb_f1.st_ino == sb_f2.st_ino) - assert (sb_f1.st_mode == sb_f2.st_mode) - - close(fd); - unlink (name_suffix); - - /* suffixlen = 0 */ - sprintf(name_suffix, "/tmp/%s-uClibc-test.XXXXXX", __FILE__); - - fd = mkostemps(name_suffix, 0, flags); - - fstat(fd, &sb_f1); - assert ((sb_f1.st_mode & S_IFMT) == S_IFREG) - - stat(name_suffix, &sb_f2); - assert ((sb_f2.st_mode & S_IFMT) == S_IFREG) - - assert (sb_f1.st_ino == sb_f2.st_ino) - assert (sb_f1.st_mode == sb_f2.st_mode) - - close(fd); - unlink (name_suffix); - - /* stress tests */ - - /* template len < 6 */ - sprintf(name, "XXXXX"); - - fd = mkstemp(name); - - assert(fd == -1); - assert(errno == EINVAL); - - /* suffixlen < 0 */ - sprintf(name_suffix, "/tmp/%s-uClibc-test.XXXXXX.txt", __FILE__); - - fd = mkostemps(name_suffix, -1, flags); - - assert(fd == -1); - assert(errno == EINVAL); - - /* Missing one X */ - sprintf(name_suffix, "/tmp/%s-uClibc-test.XXXXX.txt", __FILE__); - - fd = mkostemps(name_suffix, 4, flags); - - assert(fd == -1); - assert(errno == EINVAL); - - /* wrong suffixlen */ - sprintf(name_suffix, "/tmp/%s-uClibc-test.XXXXXX.txt", __FILE__); - - fd = mkostemps(name_suffix, 2, flags); - - assert(fd == -1); - assert(errno == EINVAL); - -the_end: - if (fp != NULL) - assert (fclose (fp) == 0); - unlink (name); - unlink (name_suffix); - - return retval; -} diff --git a/test/misc/tst-nftw.c b/test/misc/tst-nftw.c deleted file mode 100644 index 76d11eb41..000000000 --- a/test/misc/tst-nftw.c +++ /dev/null @@ -1,57 +0,0 @@ -#define _XOPEN_SOURCE 500 -#define _GNU_SOURCE -#include -#include -#include -#include -#include -#include - -int result = 0; - -static int process_one_entry(const char *fpath, const struct stat *sb, - int typeflag, struct FTW *ftwbuf) -{ - - struct stat buf; - const char *rel_path = fpath+ftwbuf->base; - - printf("Processing %s in working dir %s\n", - rel_path, get_current_dir_name()); - if (stat(rel_path, &buf) < 0) { - perror("Oops...relative path does not exist in current directory"); - result = 1; - } -} - -static int -do_test(void) -{ - char *path = "/tmp/stest_dir"; - char *subpath = "/tmp/stest_dir/d1"; - char *filepath = "/tmp/stest_dir/f1"; - char *filesubpath = "/tmp/stest_dir/d1/f2"; - - if ((mkdir(path, 0700)) < 0) - perror("Creating path"); - if ((mkdir(subpath, 0700)) < 0) - perror("Creating subpath"); - if ((open(filepath, O_CREAT)) < 0) - perror("Opening filepath"); - if ((open(filesubpath, O_CREAT)) < 0) - perror("Opening filesubpath"); - - if (nftw(path, process_one_entry, 100, (FTW_CHDIR|FTW_DEPTH|FTW_PHYS)) < 0) - perror("ntfw"); - - unlink(filesubpath); - unlink(filepath); - rmdir(subpath); - rmdir(path); - - return result; -} - -#define TIMEOUT 5 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/misc/tst-scandir.c b/test/misc/tst-scandir.c deleted file mode 100644 index e1c72e3c9..000000000 --- a/test/misc/tst-scandir.c +++ /dev/null @@ -1,23 +0,0 @@ -#include -#include -#include /* perror() */ -#include - -static int skip_all(const struct dirent *dirbuf) -{ - errno = EBADF; - return 0; -} - -int main(void) -{ - struct dirent **namelist; - int n; - - n = scandir(".", &namelist, skip_all, 0); - if (n < 0) { - perror("scandir"); - return EXIT_FAILURE; - } - return EXIT_SUCCESS; -} diff --git a/test/misc/tst-seekdir.c b/test/misc/tst-seekdir.c deleted file mode 100644 index 7dd5d2e85..000000000 --- a/test/misc/tst-seekdir.c +++ /dev/null @@ -1,79 +0,0 @@ -#include -#include -#include -#include -#include - -int -main (int argc, char *argv[]) -{ - DIR * dirp; - long int save3 = 0; - long int cur; - int i = 0; - int result = 0; - struct dirent *dp; - off_t save0, rewind_ret; - - dirp = opendir ("."); - if (dirp == NULL) - { - printf ("opendir failed: %s\n", strerror(errno)); - return 1; - } - - save0 = telldir (dirp); - if (save0 == -1) - { - printf ("telldir failed: %s\n", strerror(errno)); - result = 1; - } - - for (dp = readdir (dirp); dp != NULL; dp = readdir (dirp)) - { - /* save position 3 (after fourth entry) */ - if (i++ == 3) - save3 = telldir (dirp); - - printf ("%s\n", dp->d_name); - - /* stop at 400 (just to make sure dirp->__offset and dirp->__size are - scrambled */ - if (i == 400) - break; - } - - printf ("going back past 4-th entry...\n"); - - /* go back to saved entry */ - seekdir (dirp, save3); - - /* Check whether telldir equals to save3 now. */ - cur = telldir (dirp); - if (cur != save3) - { - printf ("seekdir (d, %ld); telldir (d) == %ld\n", save3, cur); - result = 1; - } - - /* print remaining files (3-last) */ - for (dp = readdir (dirp); dp != NULL; dp = readdir (dirp)) - printf ("%s\n", dp->d_name); - - /* Check rewinddir */ - rewinddir (dirp); - rewind_ret = telldir (dirp); - if (rewind_ret == -1) - { - printf ("telldir failed: %s\n", strerror(errno)); - result = 1; - } - else if (save0 != rewind_ret) - { - printf ("rewinddir didn't reset directory stream\n"); - result = 1; - } - - closedir (dirp); - return result; -} diff --git a/test/misc/tst-statfs.c b/test/misc/tst-statfs.c deleted file mode 100644 index b8b4229ba..000000000 --- a/test/misc/tst-statfs.c +++ /dev/null @@ -1,31 +0,0 @@ -#include -#include -#include -#include -#include - -int -main(int argc, char* argv[]) -{ - struct statfs s; - int ret = 0, i; - - for (i = 1; i < argc; i++) { - if (statfs(argv[i], &s) != 0) { - fprintf(stderr, "%s: %s: statfs failed. %s\n", - *argv, argv[i], strerror(errno)); - exit(EXIT_FAILURE); - } - ++ret; - printf("statfs %s:\n\tblocks=%lld\n\tblkfree=%lld\n\tbsize=%d\n", - argv[i], s.f_blocks, s.f_bfree, s.f_bsize); -#ifdef _STATFS_F_FRSIZE - printf("\tfrsize=%lld\n", s.f_frsize); -#elif defined __mips__ - printf("\tfrsize=mips, unsupported?\n"); -#else -# error no _STATFS_F_FRSIZE -#endif - } - exit(ret ? EXIT_SUCCESS : EXIT_FAILURE); -} diff --git a/test/misc/tst-statvfs.c b/test/misc/tst-statvfs.c deleted file mode 100644 index 4b67719e9..000000000 --- a/test/misc/tst-statvfs.c +++ /dev/null @@ -1,26 +0,0 @@ -#include -#include -#include -#include -#include - -int -main(int argc, char* argv[]) -{ - struct statvfs s; - int i; - - for (i = 1; i < argc; i++) { - if (statvfs(argv[i], &s) != 0) { - fprintf(stderr, "%s: %s: statvfs failed. %s\n", - *argv, argv[i], strerror(errno)); - exit(EXIT_FAILURE); - } - printf("statvfs %s:\n\tblocks=%lld\n\tblkfree=%lld\n\tbsize=%d\n", - argv[i], s.f_blocks, s.f_bfree, s.f_bsize); -#if 1 // def _STATFS_F_FRSIZE - printf("\tfrsize=%lld\n", s.f_frsize); -#endif - } - exit(EXIT_SUCCESS); -} diff --git a/test/misc/tst-utmp.c b/test/misc/tst-utmp.c deleted file mode 100644 index 1b0333a32..000000000 --- a/test/misc/tst-utmp.c +++ /dev/null @@ -1,423 +0,0 @@ -/* Tests for UTMP functions. - Copyright (C) 1998, 2001-2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Mark Kettenis , 1998. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - -#ifdef UTMPX -# include -# define utmp utmpx -# define utmpname utmpxname -# define setutent setutxent -# define getutent getutxent -# define endutent endutxent -# define getutline getutxline -# define getutid getutxid -# define pututline pututxline -#else -# include -#endif - -#ifndef _HAVE_UT_TYPE -# define _HAVE_UT_TYPE 0 -#endif -#ifndef _HAVE_UT_PID -# define _HAVE_UT_PID 0 -#endif -#ifndef _HAVE_UT_ID -# define _HAVE_UT_ID 0 -#endif -#ifndef _HAVE_UT_TV -# define _HAVE_UT_TV 0 -#endif -#ifndef _HAVE_UT_HOST -# define _HAVE_UT_HOST 0 -#endif - -#if _HAVE_UT_TYPE || defined UTMPX - -/* Prototype for our test function. */ -static int do_test (int argc, char *argv[]); - -/* We have a preparation function. */ -static void do_prepare (int argc, char *argv[]); -#define PREPARE do_prepare - -/* This defines the `main' function and some more. */ -#include "../test-skeleton.c" - - -/* These are for the temporary file we generate. */ -char *name; -int fd; - -static void -do_prepare (int argc, char *argv[]) -{ - size_t name_len; - - name_len = strlen (test_dir); - name = malloc (name_len + sizeof ("/utmpXXXXXX")); - mempcpy (mempcpy (name, test_dir, name_len), - "/utmpXXXXXX", sizeof ("/utmpXXXXXX")); - add_temp_file (name); - - /* Open our test file. */ - fd = mkstemp (name); - if (fd == -1) { - fprintf (stderr, "cannot open test file `%s': ", name); - perror (NULL); - exit (EXIT_FAILURE); - } -} - -struct utmp entry[] = -{ -#if _HAVE_UT_TV || defined UTMPX -#define UT(a) .ut_tv = { .tv_sec = (a)} -#else -#define UT(a) .ut_time = (a) -#endif - - { .ut_type = BOOT_TIME, .ut_pid = 1, UT(1000) }, - { .ut_type = RUN_LVL, .ut_pid = 1, UT(2000) }, - { .ut_type = INIT_PROCESS, .ut_pid = 5, .ut_id = "si", UT(3000) }, - { .ut_type = LOGIN_PROCESS, .ut_pid = 23, .ut_line = "tty1", .ut_id = "1", - .ut_user = "LOGIN", UT(4000) }, - { .ut_type = USER_PROCESS, .ut_pid = 24, .ut_line = "tty2", .ut_id = "2", - .ut_user = "albert", UT(8000) }, - { .ut_type = USER_PROCESS, .ut_pid = 196, .ut_line = "ttyp0", .ut_id = "p0", - .ut_user = "niels", UT(10000) }, - { .ut_type = DEAD_PROCESS, .ut_line = "ttyp1", .ut_id = "p1", UT(16000) }, - { .ut_type = EMPTY }, - { .ut_type = EMPTY } -}; -int num_entries = sizeof entry / sizeof (struct utmp); - -time_t entry_time = 20000; -pid_t entry_pid = 234; - -static int -do_init (void) -{ - int n; - - setutent (); - - for (n = 0; n < num_entries; n++) - { - if (pututline (&entry[n]) == NULL) - { - perror ("cannot write UTMP entry"); - return 1; - } - } - - endutent (); - - return 0; -} - - -static int -do_check (void) -{ - struct utmp *ut; - int n; - - setutent (); - - n = 0; - while ((ut = getutent ())) - { - if (n < num_entries && - memcmp (ut, &entry[n], sizeof (struct utmp))) - { - fprintf (stderr, "UTMP entry does not match\n"); - return 1; - } - - n++; - } - - if (n != num_entries) - { - fprintf (stderr, "number of UTMP entries is incorrect\n"); - return 1; - } - - endutent (); - - return 0; -} - -static int -simulate_login (const char *line, const char *user) -{ - int n; - - for (n = 0; n < num_entries; n++) - { - if (strcmp (line, entry[n].ut_line) == 0 || - entry[n].ut_type == DEAD_PROCESS) - { - if (entry[n].ut_pid == DEAD_PROCESS) - entry[n].ut_pid = (entry_pid += 27); - entry[n].ut_type = USER_PROCESS; - strncpy (entry[n].ut_user, user, sizeof (entry[n].ut_user)); -#if _HAVE_UT_TV - 0 || defined UTMPX - entry[n].ut_tv.tv_sec = (entry_time += 1000); -#else - entry[n].ut_time = (entry_time += 1000); -#endif - setutent (); - - if (pututline (&entry[n]) == NULL) - { - perror ("cannot write UTMP entry"); - return 1; - } - - endutent (); - - return 0; - } - } - - fprintf (stderr, "no entries available\n"); - return 1; -} - -static int -simulate_logout (const char *line) -{ - int n; - - for (n = 0; n < num_entries; n++) - { - if (strcmp (line, entry[n].ut_line) == 0) - { - entry[n].ut_type = DEAD_PROCESS; - strncpy (entry[n].ut_user, "", sizeof (entry[n].ut_user)); -#if _HAVE_UT_TV - 0 || defined UTMPX - entry[n].ut_tv.tv_sec = (entry_time += 1000); -#else - entry[n].ut_time = (entry_time += 1000); -#endif - setutent (); - - if (pututline (&entry[n]) == NULL) - { - perror ("cannot write UTMP entry"); - return 1; - } - - endutent (); - - return 0; - } - } - - fprintf (stderr, "no entry found for `%s'\n", line); - return 1; -} - -static int -check_login (const char *line) -{ - struct utmp *up; - struct utmp ut; - int n; - - setutent (); - - strcpy (ut.ut_line, line); - up = getutline (&ut); - if (up == NULL) - { - fprintf (stderr, "cannot get entry for line `%s': ", line); - perror(NULL); - return 1; - } - - endutent (); - - for (n = 0; n < num_entries; n++) - { - if (strcmp (line, entry[n].ut_line) == 0) - { - if (memcmp (up, &entry[n], sizeof (struct utmp))) - { - fprintf (stderr, "UTMP entry does not match\n"); - return 1; - } - - return 0; - } - } - - fprintf (stderr, "bogus entry for line `%s'\n", line); - return 1; -} - -static int -check_logout (const char *line) -{ - struct utmp ut; - - setutent (); - - strcpy (ut.ut_line, line); - if (getutline (&ut) != NULL) - { - fprintf (stderr, "bogus login entry for `%s'\n", line); - return 1; - } - - endutent (); - - return 0; -} - -static int -check_id (const char *id) -{ - struct utmp *up; - struct utmp ut; - int n; - - setutent (); - - ut.ut_type = USER_PROCESS; - strcpy (ut.ut_id, id); - up = getutid (&ut); - if (up == NULL) - { - fprintf (stderr, "cannot get entry for ID `%s': ", id); - perror (NULL); - return 1; - } - - endutent (); - - for (n = 0; n < num_entries; n++) - { - if (strcmp (id, entry[n].ut_id) == 0) - { - if (memcmp (up, &entry[n], sizeof (struct utmp))) - { - fprintf (stderr, "UTMP entry does not match\n"); - return 1; - } - - return 0; - } - } - - fprintf (stderr, "bogus entry for ID `%s'\n", id); - return 1; -} - -static int -check_type (int type) -{ - struct utmp *up; - struct utmp ut; - int n; - - setutent (); - - ut.ut_type = type; - up = getutid (&ut); - if (up == NULL) - { - fprintf (stderr, "cannot get entry for type `%d': ", type); - perror (NULL); - return 1; - } - - endutent (); - - for (n = 0; n < num_entries; n++) - { - if (type == entry[n].ut_type) - { - if (memcmp (up, &entry[n], sizeof (struct utmp))) - { - fprintf (stderr, "UTMP entry does not match\n"); - return 1; - } - - return 0; - } - } - - fprintf (stderr, "bogus entry for type `%d'\n", type); - return 1; -} - -static int -do_test (int argc, char *argv[]) -{ - int result = 0; - - utmpname (name); - - result |= do_init (); - result |= do_check (); - - result |= simulate_login ("tty1", "erwin"); - result |= do_check (); - - result |= simulate_login ("ttyp1", "paul"); - result |= do_check (); - - result |= simulate_logout ("tty2"); - result |= do_check (); - - result |= simulate_logout ("ttyp0"); - result |= do_check (); - - result |= simulate_login ("ttyp2", "richard"); - result |= do_check (); - - result |= check_login ("tty1"); - result |= check_logout ("ttyp0"); - result |= check_id ("p1"); - result |= check_id ("2"); - result |= check_id ("si"); - result |= check_type (BOOT_TIME); - result |= check_type (RUN_LVL); - - return result; -} - -#else - -/* No field 'ut_type' in struct utmp. */ -int -main () -{ - return 0; -} - -#endif diff --git a/test/misc/tst-utmpx.c b/test/misc/tst-utmpx.c deleted file mode 100644 index edb5551d7..000000000 --- a/test/misc/tst-utmpx.c +++ /dev/null @@ -1,2 +0,0 @@ -#define UTMPX -#include "tst-utmp.c" diff --git a/test/mmap/Makefile b/test/mmap/Makefile deleted file mode 100644 index 89e7195fb..000000000 --- a/test/mmap/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc mmap tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/mmap/Makefile.in b/test/mmap/Makefile.in deleted file mode 100644 index 581f3b062..000000000 --- a/test/mmap/Makefile.in +++ /dev/null @@ -1,2 +0,0 @@ -# uClibc mmap tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. diff --git a/test/mmap/mmap.c b/test/mmap/mmap.c deleted file mode 100644 index 8b29737a0..000000000 --- a/test/mmap/mmap.c +++ /dev/null @@ -1,73 +0,0 @@ - -/* The mmap test is useful, since syscalls with 6 arguments - * (as mmap) are done differently on various architectures. - */ - -#include -#include -#include -#include -#include -#include - -#define SIZEOF_ARRAY(type) (sizeof(type)/sizeof(*type)) - -struct mmap_test { - void *ret; - int err; - struct { - void *start; - size_t length; - int prot; - int flags; - int fd; - off_t offset; - } args; -}; - -struct mmap_test tests[] = { - [0] { - .err = 0, - .args.start = NULL, - .args.length = 4096, - .args.prot = PROT_READ|PROT_WRITE, - .args.flags = MAP_PRIVATE|MAP_ANONYMOUS, - .args.fd = 0, - .args.offset = 0 - }, -}; - -#define err(fmt, args...) \ - do { \ - fprintf(stderr, fmt "\n" , ## args); \ - exit(1); \ - } while (0) -#define errp(fmt, args...) err(fmt ": %s" , ## args , strerror(errno)) - -int main(int argc, char **argv) -{ - int i; - struct mmap_test *t; - - for (i=0; iret = mmap(t->args.start, t->args.length, t->args.prot, - t->args.flags, t->args.fd, t->args.offset); - - if (t->err) { - if (t->ret != MAP_FAILED) - err("mmap test %i should have failed, but gave us %p", i, t->ret); - else if (t->err != errno) - errp("mmap test %i failed, but gave us wrong errno (got %i instead of %i)", i, errno, t->err); - } else { - if (t->ret == MAP_FAILED) - errp("mmap test %i failed", i); - else if (munmap(t->ret, t->args.length) != 0) - errp("munmap test %i failed", i); - } - } - - exit(0); -} diff --git a/test/mmap/mmap2.c b/test/mmap/mmap2.c deleted file mode 100644 index 1d5f5db5e..000000000 --- a/test/mmap/mmap2.c +++ /dev/null @@ -1,46 +0,0 @@ -/* When trying to map /dev/mem with offset 0xFFFFF000 on the ARM platform, mmap - * returns -EOVERFLOW. - * - * Since off_t is defined as a long int and the sign bit is set in the address, - * the shift operation shifts in ones instead of zeroes - * from the left. This results the offset sent to the kernel function becomes - * 0xFFFFFFFF instead of 0x000FFFFF with MMAP2_PAGE_SHIFT set to 12. - */ - -#include -#include -#include -#include -#include -#include -#include - -#define FATAL do { fprintf(stderr, "Error at line %d, file %s (%d) [%s]\n", \ - __LINE__, __FILE__, errno, strerror(errno)); exit(1); } while(0) - -#define MAP_SIZE sysconf(_SC_PAGESIZE) -#define MAP_MASK (MAP_SIZE - 1) - -int main(int argc, char **argv) { - void* map_base = 0; - int fd; - off_t target = 0xfffff000; - if((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) { - /* skip test for non-root users */ - if (errno == EACCES) - return 0; - FATAL; - } - printf("/dev/mem opened.\n"); - fflush(stdout); - - /* Map one page */ - map_base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, - fd, target & ~MAP_MASK); - if(map_base == (void *) -1) FATAL; - printf("Memory mapped at address %p.\n", map_base); - fflush(stdout); - if(munmap(map_base, MAP_SIZE) == -1) FATAL; - close(fd); - return 0; -} diff --git a/test/mmap/mmap64.c b/test/mmap/mmap64.c deleted file mode 100644 index 87165fe20..000000000 --- a/test/mmap/mmap64.c +++ /dev/null @@ -1,29 +0,0 @@ - -/* The mmap test is useful, since syscalls with 6 arguments - * (as mmap) are done differently on various architectures. - */ - -#include -#include -#include -#include -#include - -int main(int argc, char **argv) -{ -#ifdef __UCLIBC_HAS_LFS__ - void *ptr; - - ptr = mmap64(NULL, 4096, PROT_READ|PROT_WRITE, - MAP_PRIVATE|MAP_ANONYMOUS, 0, 0); - - if (ptr == MAP_FAILED) { - perror("mmap"); - exit(1); - } - printf("mmap returned %p\n", ptr); - exit(0); -#else - exit(0); -#endif -} diff --git a/test/mmap/tst-mmap-eofsync.c b/test/mmap/tst-mmap-eofsync.c deleted file mode 100644 index e8ef72714..000000000 --- a/test/mmap/tst-mmap-eofsync.c +++ /dev/null @@ -1,106 +0,0 @@ -/* Test program for synchronization of stdio state with file after EOF. */ - -#include -#include -#include - -static void do_prepare (void); -#define PREPARE(argc, argv) do_prepare () -static int do_test (void); -#define TEST_FUNCTION do_test () -#include - -static char *temp_file; -static int temp_fd; - -static char text1[] = "Line the first\n"; -static char text2[] = "Line the second\n"; - -static void -do_prepare (void) -{ - temp_fd = create_temp_file ("tst-mmap-eofsync.", &temp_file); - if (temp_fd == -1) - error (1, errno, "cannot create temporary file"); - else - { - ssize_t cc = write (temp_fd, text1, sizeof text1 - 1); - if (cc != sizeof text1 - 1) - error (1, errno, "cannot write to temporary file"); - } -} - -static int -do_test (void) -{ - FILE *f; - char buf[128]; - int result = 0; - int c; - - f = fopen (temp_file, "rm"); - if (f == NULL) - { - perror (temp_file); - return 1; - } - - if (fgets (buf, sizeof buf, f) == NULL) - { - perror ("fgets"); - return 1; - } - - if (strcmp (buf, text1)) - { - printf ("read \"%s\", expected \"%s\"\n", buf, text1); - result = 1; - } - - printf ("feof = %d, ferror = %d immediately after fgets\n", - feof (f), ferror (f)); - -#if 1 - c = fgetc (f); - if (c == EOF) - printf ("fgetc -> EOF (feof = %d, ferror = %d)\n", - feof (f), ferror (f)); - else - { - printf ("fgetc returned %o (feof = %d, ferror = %d)\n", - c, feof (f), ferror (f)); - result = 1; - } -#endif - - c = write (temp_fd, text2, sizeof text2 - 1); - if (c == sizeof text2 - 1) - printf ("wrote more to file\n"); - else - { - printf ("wrote %d != %zd (%m)\n", c, sizeof text2 - 1); - result = 1; - } - - if (fgets (buf, sizeof buf, f) == NULL) - { - printf ("second fgets fails: feof = %d, ferror = %d (%m)\n", - feof (f), ferror (f)); - clearerr (f); - if (fgets (buf, sizeof buf, f) == NULL) - { - printf ("retry fgets fails: feof = %d, ferror = %d (%m)\n", - feof (f), ferror (f)); - result = 1; - } - } - if (result == 0 && strcmp (buf, text2)) - { - printf ("second time read \"%s\", expected \"%s\"\n", buf, text2); - result = 1; - } - - fclose (f); - - return result; -} diff --git a/test/mmap/tst-mmap-fflushsync.c b/test/mmap/tst-mmap-fflushsync.c deleted file mode 100644 index 24ae33cae..000000000 --- a/test/mmap/tst-mmap-fflushsync.c +++ /dev/null @@ -1,99 +0,0 @@ -/* Test program for synchronization of stdio state with file after fflush. */ - -#include -#include -#include - -static void do_prepare (void); -#define PREPARE(argc, argv) do_prepare () -static int do_test (void); -#define TEST_FUNCTION do_test () -#include - -static char *temp_file; -static int temp_fd; - -static char text1[] = "Line the first\n"; -static char text2[] = "Line the second\n"; - -static void -do_prepare (void) -{ - temp_fd = create_temp_file ("tst-mmap-eofsync.", &temp_file); - if (temp_fd == -1) - error (1, errno, "cannot create temporary file"); - else - { - ssize_t cc = write (temp_fd, text1, sizeof text1 - 1); - if (cc != sizeof text1 - 1) - error (1, errno, "cannot write to temporary file"); - } -} - -static int -do_test (void) -{ - FILE *f; - char buf[128]; - int result = 0; - int c; - - f = fopen (temp_file, "rm"); - if (f == NULL) - { - perror (temp_file); - return 1; - } - - if (fgets (buf, sizeof buf, f) == NULL) - { - perror ("fgets"); - return 1; - } - - if (strcmp (buf, text1)) - { - printf ("read \"%s\", expected \"%s\"\n", buf, text1); - result = 1; - } - - printf ("feof = %d, ferror = %d immediately after fgets\n", - feof (f), ferror (f)); - - if (fflush (f) != 0) - { - printf ("fflush failed! %m\n"); - result = 1; - } - - c = write (temp_fd, text2, sizeof text2 - 1); - if (c == sizeof text2 - 1) - printf ("wrote more to file\n"); - else - { - printf ("wrote %d != %zd (%m)\n", c, sizeof text2 - 1); - result = 1; - } - - if (fgets (buf, sizeof buf, f) == NULL) - { - printf ("second fgets fails: feof = %d, ferror = %d (%m)\n", - feof (f), ferror (f)); - clearerr (f); - if (fgets (buf, sizeof buf, f) == NULL) - { - printf ("retry fgets fails: feof = %d, ferror = %d (%m)\n", - feof (f), ferror (f)); - result = 1; - } - } - if (result == 0 && strcmp (buf, text2)) - { - printf ("second time read \"%s\", expected \"%s\"\n", buf, text2); - result = 1; - } - - fclose (f); - - return result; -} diff --git a/test/mmap/tst-mmap-offend.c b/test/mmap/tst-mmap-offend.c deleted file mode 100644 index 19732e620..000000000 --- a/test/mmap/tst-mmap-offend.c +++ /dev/null @@ -1,86 +0,0 @@ -/* Test case for bug with mmap stdio read past end of file. */ - -#include -#include -#include - -static void do_prepare (void); -#define PREPARE(argc, argv) do_prepare () -static int do_test (void); -#define TEST_FUNCTION do_test () -#include - -static char *temp_file; - -static const char text1[] = "hello\n"; - -static void -do_prepare (void) -{ - int temp_fd = create_temp_file ("tst-mmap-offend.", &temp_file); - if (temp_fd == -1) - error (1, errno, "cannot create temporary file"); - else - { - ssize_t cc = write (temp_fd, text1, sizeof text1 - 1); - if (cc != sizeof text1 - 1) - error (1, errno, "cannot write to temporary file"); - } - close (temp_fd); -} - -static int -do_test (void) -{ - unsigned char buffer[8192]; - int result = 0; - FILE *f = fopen (temp_file, "rm"); - size_t cc; - - if (f == NULL) - { - perror (temp_file); - return 1; - } - - cc = fread (buffer, 1, sizeof (buffer), f); - printf ("fread %zu: \"%.*s\"\n", cc, (int) cc, buffer); - if (cc != sizeof text1 - 1) - { - perror ("fread"); - result = 1; - } - - if (fseek (f, 2048, SEEK_SET) != 0) - { - perror ("fseek off end"); - result = 1; - } - - if (fread (buffer, 1, sizeof (buffer), f) != 0 - || ferror (f) || !feof (f)) - { - printf ("after fread error %d eof %d\n", - ferror (f), feof (f)); - result = 1; - } - - printf ("ftell %ld\n", ftell (f)); - - if (fseek (f, 0, SEEK_SET) != 0) - { - perror ("fseek rewind"); - result = 1; - } - - cc = fread (buffer, 1, sizeof (buffer), f); - printf ("fread after rewind %zu: \"%.*s\"\n", cc, (int) cc, buffer); - if (cc != sizeof text1 - 1) - { - perror ("fread after rewind"); - result = 1; - } - - fclose (f); - return result; -} diff --git a/test/mmap/tst-mmap-setvbuf.c b/test/mmap/tst-mmap-setvbuf.c deleted file mode 100644 index 33d60b7bd..000000000 --- a/test/mmap/tst-mmap-setvbuf.c +++ /dev/null @@ -1,81 +0,0 @@ -/* Test setvbuf on readonly fopen (using mmap stdio). - Copyright (C) 2002-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - -int main (void) -{ - char name[] = "/tmp/tst-mmap-setvbuf.XXXXXX"; - char buf[4096]; - const char * const test = "Let's see if mmap stdio works with setvbuf.\n"; - char temp[strlen (test) + 1]; - int fd = mkstemp (name); - FILE *f; - - if (fd == -1) - { - printf ("%u: cannot open temporary file: %m\n", __LINE__); - exit (1); - } - - f = fdopen (fd, "w"); - if (f == NULL) - { - printf ("%u: cannot fdopen temporary file: %m\n", __LINE__); - exit (1); - } - - fputs (test, f); - fclose (f); - - f = fopen (name, "rm"); - if (f == NULL) - { - printf ("%u: cannot fopen temporary file: %m\n", __LINE__); - exit (1); - } - - if (setvbuf (f, buf, _IOFBF, sizeof buf)) - { - printf ("%u: setvbuf failed: %m\n", __LINE__); - exit (1); - } - - if (fread (temp, 1, strlen (test), f) != strlen (test)) - { - printf ("%u: couldn't read the file back: %m\n", __LINE__); - exit (1); - } - temp [strlen (test)] = '\0'; - - if (strcmp (test, temp)) - { - printf ("%u: read different string than was written:\n%s%s", - __LINE__, test, temp); - exit (1); - } - - fclose (f); - - unlink (name); - exit (0); -} diff --git a/test/nptl/Makefile b/test/nptl/Makefile deleted file mode 100644 index c22b635b7..000000000 --- a/test/nptl/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc NPTL tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/nptl/Makefile.in b/test/nptl/Makefile.in deleted file mode 100644 index 9a3b10489..000000000 --- a/test/nptl/Makefile.in +++ /dev/null @@ -1,242 +0,0 @@ -# uClibc NPTL tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -TESTS := tst-align tst-align2 tst-atfork1 tst-attr1 tst-attr2 tst-attr3 \ - tst-barrier1 tst-barrier2 tst-barrier3 tst-barrier4 tst-basic1 \ - tst-basic2 tst-basic3 tst-basic4 tst-basic5 tst-basic6 \ - tst-cancel1 tst-cancel2 tst-cancel3 tst-cancel6 tst-cancel7 \ - tst-cancel8 tst-cancel9 tst-cancel10 tst-cancel11 tst-cancel12 \ - tst-cancel13 tst-cancel14 tst-cancel15 tst-cancel16 \ - tst-cancel19 tst-cancel20 tst-cancel21 tst-cancel22 \ - tst-cleanup0 tst-cleanup1 tst-cleanup2 tst-cleanup3 \ - tst-cleanup4 tst-clock1 tst-clock2 tst-cond1 tst-cond2 \ - tst-cond3 tst-cond4 tst-cond5 tst-cond6 tst-cond7 tst-cond8 \ - tst-cond9 tst-cond10 tst-cond11 tst-cond12 tst-cond13 \ - tst-cond14 tst-cond15 tst-cond16 tst-cond17 tst-cond18 \ - tst-cond19 tst-cond20 tst-cond21 tst-detach1 tst-eintr1 \ - tst-eintr2 tst-eintr3 tst-eintr4 tst-eintr5 tst-exec2 tst-exec3 \ - tst-exec4 tst-exit1 tst-exit2 tst-exit3 tst-flock1 tst-flock2 \ - tst-fork1 tst-fork2 tst-fork3 tst-fork4 tst-initializers1 \ - tst-join1 tst-join2 tst-join3 tst-join4 tst-join5 tst-key1 \ - tst-key2 tst-key3 tst-key4 tst-kill1 tst-kill2 tst-kill3 \ - tst-kill4 tst-kill5 tst-kill6 tst-mutex1 tst-mutex2 tst-mutex3 \ - tst-mutex4 tst-mutex5 tst-mutex6 tst-mutex7 tst-mutex8 \ - tst-mutex9 tst-mutex5a tst-mutex7a tst-once1 tst-once2 \ - tst-once3 tst-once4 tst-popen1 tst-raise1 tst-rwlock1 \ - tst-rwlock2 tst-rwlock3 tst-rwlock4 tst-rwlock5 tst-rwlock6 \ - tst-rwlock7 tst-rwlock8 tst-rwlock9 tst-rwlock10 tst-rwlock11 \ - tst-rwlock12 tst-rwlock13 tst-rwlock14 tst-sched1 tst-sem1 \ - tst-sem2 tst-sem3 tst-sem4 tst-sem5 tst-sem6 tst-sem7 tst-sem8 \ - tst-sem9 tst-signal1 tst-signal2 tst-signal3 tst-signal4 \ - tst-signal5 tst-signal6 tst-spin1 tst-spin2 tst-spin3 \ - tst-stack1 tst-stack2 tst-stdio1 tst-stdio2 tst-sysconf \ - tst-tls1 tst-tls2 tst-tls3 tst-tls4 tst-tls5 tst-tsd1 tst-tsd2 \ - tst-tsd3 tst-tsd4 tst-tsd5 tst-umask1 tst-cond-deadlock \ - tst-align3 tst-cancel4 tst-cancel5 tst-cancel18 tst-cancel23 \ - tst-cancel25 tst-cancelx2 tst-cancelx3 tst-cancelx4 tst-cancelx6 \ - tst-cancelx7 tst-cancelx8 tst-cancelx9 tst-cancelx10 tst-cancelx11 \ - tst-cancelx12 tst-cancelx13 tst-cancelx14 tst-cancelx15 tst-cancelx16 \ - tst-cancelx18 tst-cancelx20 tst-cancelx21 tst-cleanupx0 tst-cleanupx1 \ - tst-cleanupx2 tst-cleanupx3 tst-cleanupx4 tst-cond22 tst-cond23 \ - tst-getpid1 tst-getpid2 tst-getpid3 tst-join6 tst-tsd6 \ - tst-oddstacklimit tst-oncex3 tst-oncex4 tst-rwlock2a \ - tst-basic7 tst-signal7 tst-vfork1x tst-vfork2x tst-sem10 tst-sem11 \ - tst-sem12 tst-typesizes tst-initializers1-c89 tst-initializers1-c99 \ - tst-initializers1-gnu89 tst-initializers1-gnu99 \ - tst-atfork2 - -# -# These are for the RT library and POSIX timers. -# -TESTS += tst-clock tst-clock_nanosleep tst-cpuclock1 tst-cpuclock2 \ - tst-cputimer1 tst-cputimer2 tst-cputimer3 tst-mqueue1 \ - tst-mqueue2 tst-mqueue3 tst-mqueue4 tst-mqueue5 tst-mqueue6 \ - tst-mqueue7 tst-mqueue8 tst-mqueue9 tst-timer2 tst-timer3 \ - tst-timer4 tst-timer5 - -ifeq ($(UCLIBC_HAS_OBSOLETE_BSD_SIGNAL),) -TESTS_DISABLED += tst-exec2 tst-exec3 tst-exec4 -endif - -ifeq ($(UCLIBC_SUSV4_LEGACY),) -TESTS_DISABLED += tst-basic5 tst-cancel4 tst-cancel5 tst-cancelx4 -endif - -GLIBC_TESTS_DISABLED := tst-eintr1_glibc tst-eintr2_glibc \ - tst-eintr3_glibc tst-eintr4_glibc tst-eintr5_glibc \ - tst-tls1_glibc tst-tls2_glibc - - -ifeq ($(HAVE_SHARED),) -TESTS_DISABLED += tst-tls3 tst-tls4 tst-tls5 tst-dlsym1 tst-fini1 \ - tst-unload -else -GLIBC_TESTS_DISABLED += tst-tls3_glibc tst-tls4_glibc tst-tls5_glibc -endif - -EXTRA_CFLAGS := -DNOT_IN_libc=1 -D_LIBC -D__USE_GNU -std=gnu99 \ - $(PTINC) \ - -I$(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH) \ - -I$(top_srcdir)libc/sysdeps/linux \ - -I$(top_builddir)include \ - -include $(top_builddir)include/libc-symbols.h - -ifeq ($(TARGET_ARCH),i386) -CFLAGS_tst-align := -malign-double -mpreferred-stack-boundary=4 -endif -ifeq ($(TARGET_ARCH),i686) -CFLAGS_tst-align := -malign-double -mpreferred-stack-boundary=4 -msse -endif -CFLAGS_tst-cleanup4aux.o := -W -CFLAGS_tst-initializers1 := -W -Werror -CFLAGS_tst-tls3mod.so := -fPIC -DPIC -DSHARED -shared -DNOT_IN_libc -CFLAGS_tst-tls4moda.so := -fPIC -DPIC -DSHARED -shared -DNOT_IN_libc -CFLAGS_tst-tls4modb.so := -fPIC -DPIC -DSHARED -shared -DNOT_IN_libc -CFLAGS_tst-tls5mod.so := -fPIC -DPIC -DSHARED -shared -DNOT_IN_libc -CFLAGS_tst-tls5moda.so := -fPIC -DPIC -DSHARED -shared -DNOT_IN_libc -CFLAGS_tst-tls5modb.so := -fPIC -DPIC -DSHARED -shared -DNOT_IN_libc -CFLAGS_tst-tls5modc.so := -fPIC -DPIC -DSHARED -shared -DNOT_IN_libc -CFLAGS_tst-tls5modd.so := -fPIC -DPIC -DSHARED -shared -DNOT_IN_libc -CFLAGS_tst-tls5mode.so := -fPIC -DPIC -DSHARED -shared -DNOT_IN_libc -CFLAGS_tst-tls5modf.so := -fPIC -DPIC -DSHARED -shared -DNOT_IN_libc - -CFLAGS_tst-fini1mod.so := -fPIC -DPIC -DSHARED -shared -DNOT_IN_libc -LDFLAGS_tst-cond11 = -lrt -LDFLAGS_tst-cond19 = -lrt - -LDFLAGS_tst-cancelx2 = -lc -LDFLAGS_tst-cancelx3 = -lc -LDFLAGS_tst-cancelx4 = -lc -LDFLAGS_tst-cancelx6 = -lc -LDFLAGS_tst-cancelx6 = -lc -LDFLAGS_tst-cancelx7 = -lc -LDFLAGS_tst-cancelx8 = -lc -LDFLAGS_tst-cancelx9 = -lc -LDFLAGS_tst-cancelx10 = -lc -LDFLAGS_tst-cancelx11 = -lc -LDFLAGS_tst-cancelx12 = -lc -LDFLAGS_tst-cancelx13 = -lc -LDFLAGS_tst-cancelx14 = -lc -LDFLAGS_tst-cancelx15 = -lc -LDFLAGS_tst-cancelx16 = -lc -LDFLAGS_tst-cancelx18 = -lc -LDFLAGS_tst-cancelx20 = -lc -LDFLAGS_tst-cancelx21 = -lc -LDFLAGS_tst-cleanupx0 = -lc -LDFLAGS_tst-cleanupx1 = -lc -LDFLAGS_tst-cleanupx2 = -lc -LDFLAGS_tst-cleanupx3 = -lc -LDFLAGS_tst-oncex3 = -lc -LDFLAGS_tst-oncex4 = -lc -LDFLAGS_tst-rwlock14 = -lrt -LDFLAGS_tst-fini1 = -Wl,-rpath=./ tst-fini1mod.so -LDFLAGS_tst-fini1mod.so = -Wl,-soname=tst-fini1mod.so -LDFLAGS_tst-unload = -ldl -LDFLAGS_tst-cancel5 := -lpthread -LDFLAGS_tst-cancel23 := -lc -lpthread -LDFLAGS_tst-vfork1x := -lc -lpthread -LDFLAGS_tst-vfork2x := -lc -lpthread - -CFLAGS_tst-cancelx2 += -fexceptions -CFLAGS_tst-cancelx3 += -fexceptions -CFLAGS_tst-cancelx4 += -fexceptions -CFLAGS_tst-cancelx6 += -fexceptions -CFLAGS_tst-cancelx7 += -fexceptions -CFLAGS_tst-cancelx8 += -fexceptions -CFLAGS_tst-cancelx9 += -fexceptions -CFLAGS_tst-cancelx10 += -fexceptions -CFLAGS_tst-cancelx11 += -fexceptions -CFLAGS_tst-cancelx12 += -fexceptions -CFLAGS_tst-cancelx13 += -fexceptions -CFLAGS_tst-cancelx14 += -fexceptions -CFLAGS_tst-cancelx15 += -fexceptions -CFLAGS_tst-cancelx16 += -fexceptions -CFLAGS_tst-cancelx18 += -fexceptions -CFLAGS_tst-cancelx20 += -fexceptions -fasynchronous-unwind-tables -CFLAGS_tst-cancelx21 += -fexceptions -fasynchronous-unwind-tables -CFLAGS_tst-cleanupx0 += -fexceptions -fasynchronous-unwind-tables -CFLAGS_tst-cleanupx1 += -fexceptions -fasynchronous-unwind-tables -CFLAGS_tst-cleanupx2 += -fexceptions -CFLAGS_tst-cleanupx3 += -fexceptions - -CFLAGS_tst-oncex3 += -fexceptions -CFLAGS_tst-oncex4 += -fexceptions -CFLAGS_tst-align += $(stack-align-test-flags) -CFLAGS_tst-align3 += $(stack-align-test-flags) -CFLAGS_tst-initializers1 = -W -Wall -Werror -CFLAGS_tst-sem11 += -fexceptions -fasynchronous-unwind-tables -CFLAGS_tst-sem12 += -fexceptions -fasynchronous-unwind-tables -CFLAGS_tst-initializers1 = -W -Wall -Werror -CFLAGS_tst-initializers1-c89 = $(CFLAGS-tst-initializers1) -std=c89 -CFLAGS_tst-initializers1-c99 = $(CFLAGS-tst-initializers1) -std=c99 -CFLAGS_tst-initializers1-gnu89 = $(CFLAGS-tst-initializers1) -std=gnu89 -CFLAGS_tst-initializers1-gnu99 = $(CFLAGS-tst-initializers1) -std=gnu99 - -EXTRA_LDFLAGS = $(if $(findstring -lpthread,$(LDFLAGS_$@)),,-lpthread) - -LDFLAGS_tst-atfork2 := -ldl -rdynamic -LDFLAGS_tst-atfork2mod.so := -shared -static-libgcc -lpthread -LDFLAGS_tst-cleanup4 := tst-cleanup4aux.o -LDFLAGS_tst-cleanupx4 := tst-cleanup4aux.o -LDFLAGS_tst-clock2 := -lrt -LDFLAGS_tst-cond11 := -lrt -LDFLAGS_tst-cond19 := -lrt -LDFLAGS_tst-rwlock14 := -lrt -LDFLAGS_tst-tls3 := -ldl -rdynamic -LDFLAGS_tst-tls4 := -ldl -LDFLAGS_tst-tls5 := tst-tls5mod.so -LDFLAGS_tst-clock := -lrt -LDFLAGS_tst-clock_nanosleep := -lrt -LDFLAGS_tst-cpuclock1 := -lrt -LDFLAGS_tst-cpuclock2 := -lrt -lpthread -LDFLAGS_tst-cputimer1 := -lrt -lpthread -LDFLAGS_tst-cputimer2 := -lrt -lpthread -LDFLAGS_tst-cputimer3 := -lrt -lpthread -LDFLAGS_tst-mqueue1 := -lrt -LDFLAGS_tst-mqueue2 := -lrt -LDFLAGS_tst-mqueue3 := -lrt -lpthread -LDFLAGS_tst-mqueue4 := -lrt -LDFLAGS_tst-mqueue5 := -lrt -lpthread -LDFLAGS_tst-mqueue6 := -lrt -lpthread -LDFLAGS_tst-mqueue7 := -lrt -LDFLAGS_tst-mqueue8 := -lrt -LDFLAGS_tst-mqueue9 := -lrt -LDFLAGS_tst-timer2 := -lrt -lpthread -LDFLAGS_tst-timer3 := -lrt -lpthread -LDFLAGS_tst-timer4 := -lrt -lpthread -LDFLAGS_tst-timer5 := -lrt -lpthread -LDFLAGS_tst-dlsym1 := -ldl -rdynamic -LDFLAGS_tst-tls3mod.so := -shared -static-libgcc -lpthread -LDFLAGS_tst-tls4moda.so := -shared -static-libgcc -LDFLAGS_tst-tls4modb.so := -shared -static-libgcc -LDFLAGS_tst-tls5mod.so := -shared -static-libgcc -Wl,-soname,tst-tls5mod.so -LDFLAGS_tst-tls5moda.so := -shared -static-libgcc -LDFLAGS_tst-tls5modb.so := -shared -static-libgcc -LDFLAGS_tst-tls5modc.so := -shared -static-libgcc -LDFLAGS_tst-tls5modd.so := -shared -static-libgcc -LDFLAGS_tst-tls5mode.so := -shared -static-libgcc -LDFLAGS_tst-tls5modf.so := -shared -static-libgcc -LDFLAGS_tst-cleanupx4 := tst-cleanup4aux.o - -# -# Special case -# -tst-cleanup4aux.o: - $(Q)$(CC) $(CFLAGS) $(CFLAGS_$@) $(EXTRA_CFLAGS) -c tst-cleanup4aux.c -o $@ - -tst-cleanup4: tst-cleanup4aux.o -tst-tls3: tst-tls3mod.so -tst-tls4: tst-tls4moda.so tst-tls4modb.so -tst-tls5: tst-tls5mod.so - -tst-cleanupx4 : tst-cleanup4aux.o -tst-fini1: tst-fini1mod.so - -tst-atfork2: tst-atfork2mod.so -tst-atfork2_glibc: tst-atfork2mod.so.glibc - -OPTS_tst-cancel7 = -c ./tst-cancel7 -OPTS_tst-mqueue7 = -- ./tst-mqueue7 -OPTS_tst-exec4 = ./tst-exec4 - -WRAPPER := env LD_LIBRARY_PATH="$$PWD:.:$(LD_LIBRARY_PATH)" TIMEOUTFACTOR=10 diff --git a/test/nptl/eintr.c b/test/nptl/eintr.c deleted file mode 100644 index d6425b51b..000000000 --- a/test/nptl/eintr.c +++ /dev/null @@ -1,88 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - - -static int the_sig; - - -static void -eintr_handler (int sig) -{ - if (sig != the_sig) - { - write (STDOUT_FILENO, "eintr_handler: signal number wrong\n", 35); - _exit (1); - } - write (STDOUT_FILENO, ".", 1); -} - - -static void * -eintr_source (void *arg) -{ - struct timespec ts = { .tv_sec = 0, .tv_nsec = 500000 }; - - if (arg == NULL) - { - sigset_t ss; - sigemptyset (&ss); - sigaddset (&ss, the_sig); - pthread_sigmask (SIG_BLOCK, &ss, NULL); - } - - while (1) - { - if (arg != NULL) - pthread_kill (*(pthread_t *) arg, the_sig); - else - kill (getpid (), the_sig); - - nanosleep (&ts, NULL); - } - - /* NOTREACHED */ - return NULL; -} - - -static void -setup_eintr (int sig, pthread_t *thp) -{ - struct sigaction sa; - sigemptyset (&sa.sa_mask); - sa.sa_flags = 0; - sa.sa_handler = eintr_handler; - if (sigaction (sig, &sa, NULL) != 0) - { - puts ("setup_eintr: sigaction failed"); - exit (1); - } - the_sig = sig; - - /* Create the thread which will fire off the signals. */ - pthread_t th; - if (pthread_create (&th, NULL, eintr_source, thp) != 0) - { - puts ("setup_eintr: pthread_create failed"); - exit (1); - } -} diff --git a/test/nptl/tst-align.c b/test/nptl/tst-align.c deleted file mode 100644 index df66b38b7..000000000 --- a/test/nptl/tst-align.c +++ /dev/null @@ -1,70 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include "tst-stack-align.h" - -static void * -tf (void *arg) -{ - bool ok = true; - - puts ("in thread"); - - if (TEST_STACK_ALIGN ()) - ok = false; - - return ok ? NULL : (void *) -1l; -} - -static int -do_test (void) -{ - bool ok = true; - - puts ("in main"); - - if (TEST_STACK_ALIGN ()) - ok = false; - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - return 1; - } - - void *res; - if (pthread_join (th, &res) != 0) - { - puts ("join failed"); - return 1; - } - - if (res != NULL) - ok = false; - - return ok ? 0 : 1; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-align2.c b/test/nptl/tst-align2.c deleted file mode 100644 index 7d3a09913..000000000 --- a/test/nptl/tst-align2.c +++ /dev/null @@ -1,86 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include "tst-stack-align.h" - -static int -f (void *arg) -{ - bool ok = true; - - if (TEST_STACK_ALIGN ()) - ok = false; - - return ok ? 0 : 1; -} - -static int -do_test (void) -{ - bool ok = true; - - puts ("in main"); - - if (TEST_STACK_ALIGN ()) - ok = false; - -#ifdef __ia64__ - extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base, - size_t __child_stack_size, int __flags, - void *__arg, ...); - char st[256 * 1024]; - pid_t p = __clone2 (f, st, sizeof (st), 0, 0); -#else - char st[128 * 1024]; - pid_t p = clone (f, st + sizeof (st), 0, 0); -#endif - if (p == -1) - { - printf("clone failed: %m\n"); - return 1; - } - - int e; - if (waitpid (p, &e, __WCLONE) != p) - { - puts ("waitpid failed"); - kill (p, SIGKILL); - return 1; - } - if (!WIFEXITED (e)) - { - if (WIFSIGNALED (e)) - printf ("died from signal %s\n", strsignal (WTERMSIG (e))); - else - puts ("did not terminate correctly"); - return 1; - } - if (WEXITSTATUS (e) != 0) - ok = false; - - return ok ? 0 : 1; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-align3.c b/test/nptl/tst-align3.c deleted file mode 100644 index fb0a8e4ec..000000000 --- a/test/nptl/tst-align3.c +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright (C) 2005 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2005. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include "tst-stack-align.h" - -static bool ok = true; -static pthread_once_t once = PTHREAD_ONCE_INIT; - -static void -once_test (void) -{ - puts ("in once_test"); - - if (TEST_STACK_ALIGN ()) - ok = false; -} - -static int -do_test (void) -{ - puts ("in main"); - - if (TEST_STACK_ALIGN ()) - ok = false; - - if (pthread_once (&once, once_test)) - { - puts ("pthread once failed"); - return 1; - } - - return ok ? 0 : 1; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-atfork1.c b/test/nptl/tst-atfork1.c deleted file mode 100644 index 129893747..000000000 --- a/test/nptl/tst-atfork1.c +++ /dev/null @@ -1,120 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static int val; - - -static void -prepare1 (void) -{ - val *= 2; -} - -static void -prepare2 (void) -{ - ++val; -} - -static void -parent1 (void) -{ - val += 4; -} - -static void -parent2 (void) -{ - val *= 4; -} - -static void -child1 (void) -{ - val += 8; -} - -static void -child2 (void) -{ - val *= 8; -} - - -static int -do_test (void) -{ - pid_t pid; - int status = 0; - - if (pthread_atfork (prepare1, parent1, child1) != 0) - { - puts ("1st atfork failed"); - exit (1); - } - if (pthread_atfork (prepare2, parent2, child2) != 0) - { - puts ("2nd atfork failed"); - exit (1); - } - - pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - exit (1); - } - - if (pid != 0) - { - /* Parent. */ - if (val != 24) - { - printf ("expected val=%d, got %d\n", 24, val); - exit (1); - } - - if (TEMP_FAILURE_RETRY (waitpid (pid, &status, 0)) != pid) - { - puts ("waitpid failed"); - exit (1); - } - } - else - { - /* Child. */ - if (val != 80) - { - printf ("expected val=%d, got %d\n", 80, val); - exit (2); - } - } - - return status; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-atfork2.c b/test/nptl/tst-atfork2.c deleted file mode 100644 index 594f56ef3..000000000 --- a/test/nptl/tst-atfork2.c +++ /dev/null @@ -1,156 +0,0 @@ -/* Copyright (C) 2003-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - - -/* Must be exported. */ -int val; - -static void -prepare (void) -{ - val *= 2; -} - -static void -parent (void) -{ - val += 4; -} - -static void -child (void) -{ - val += 8; -} - - -static int -do_test (void) -{ - - if (pthread_atfork (prepare, parent, child) != 0) - { - puts ("do_test: atfork failed"); - exit (1); - } - - void *h = dlopen ("tst-atfork2mod.so", RTLD_LAZY); - if (h == NULL) - { - printf ("dlopen failed: %s\n", dlerror ()); - exit (1); - } - - /* First trial of fork. */ - pid_t pid = fork (); - if (pid == -1) - { - puts ("1st fork failed"); - exit (1); - } - - if (pid == 0) - { - /* Child. */ - if (val != 80) - { - printf ("1st: expected val=%d, got %d\n", 80, val); - exit (2); - } - - exit (0); - } - - /* Parent. */ - if (val != 24) - { - printf ("1st: expected val=%d, got %d\n", 24, val); - exit (1); - } - - int status; - if (TEMP_FAILURE_RETRY (waitpid (pid, &status, 0)) != pid) - { - puts ("1st waitpid failed"); - exit (1); - } - - if (status != 0) - exit (status); - - puts ("unloading now"); - - /* Unload the module. */ - if (dlclose (h) != 0) - { - puts ("dlclose failed"); - exit (1); - } - - puts ("2nd fork"); - - /* Second fork trial. */ - val = 1; - pid = fork (); - if (pid == -1) - { - puts ("2nd fork failed"); - exit (1); - } - - if (pid == 0) - { - /* Child. */ - if (val != 10) - { - printf ("2nd: expected val=%d, got %d\n", 10, val); - exit (3); - } - - exit (0); - } - - /* Parent. */ - if (val != 6) - { - printf ("2nd: expected val=%d, got %d\n", 6, val); - exit (1); - } - - if (TEMP_FAILURE_RETRY (waitpid (pid, &status, 0)) != pid) - { - puts ("2nd waitpid failed"); - exit (1); - } - - if (status != 0) - exit (status); - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-atfork2mod.c b/test/nptl/tst-atfork2mod.c deleted file mode 100644 index 7c592b471..000000000 --- a/test/nptl/tst-atfork2mod.c +++ /dev/null @@ -1,57 +0,0 @@ -/* Copyright (C) 2003-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - - -extern int val; - - -static void -prepare (void) -{ - ++val; -} - -static void -parent (void) -{ - val *= 4; -} - -static void -child (void) -{ - val *= 8; -} - -static void -__attribute__ ((constructor)) -init (void) -{ - extern void *__dso_handle; - printf ("dsohandle = %p\n", __dso_handle); - - if (pthread_atfork (prepare, parent, child) != 0) - { - puts ("init: atfork failed"); - exit (1); - } -} diff --git a/test/nptl/tst-attr1.c b/test/nptl/tst-attr1.c deleted file mode 100644 index 987f87ff5..000000000 --- a/test/nptl/tst-attr1.c +++ /dev/null @@ -1,305 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -int -do_test (void) -{ - int i; - pthread_attr_t a; - - if (pthread_attr_init (&a) != 0) - { - puts ("attr_init failed"); - exit (1); - } - - pthread_mutexattr_t ma; - - if (pthread_mutexattr_init (&ma) != 0) - { - puts ("mutexattr_init failed"); - exit (1); - } - - pthread_rwlockattr_t rwa; - - if (pthread_rwlockattr_init (&rwa) != 0) - { - puts ("rwlockattr_init failed"); - exit (1); - } - - /* XXX Remove if default value is clear. */ - pthread_attr_setinheritsched (&a, PTHREAD_INHERIT_SCHED); - pthread_attr_setschedpolicy (&a, SCHED_OTHER); - pthread_attr_setscope (&a, PTHREAD_SCOPE_SYSTEM); - - for (i = 0; i < 10000; ++i) - { - long int r = random (); - - if (r != PTHREAD_CREATE_DETACHED && r != PTHREAD_CREATE_JOINABLE) - { - int e = pthread_attr_setdetachstate (&a, r); - - if (e == 0) - { - printf ("attr_setdetachstate with value %ld succeeded\n", r); - exit (1); - } - if (e != EINVAL) - { - puts ("attr_setdetachstate didn't return EINVAL"); - exit (1); - } - - int s; - if (pthread_attr_getdetachstate (&a, &s) != 0) - { - puts ("attr_getdetachstate failed"); - exit (1); - } - - if (s != PTHREAD_CREATE_JOINABLE) - { - printf ("\ -detach state changed to %d by invalid setdetachstate call\n", s); - exit (1); - } - } - - if (r != PTHREAD_INHERIT_SCHED && r != PTHREAD_EXPLICIT_SCHED) - { - int e = pthread_attr_setinheritsched (&a, r); - - if (e == 0) - { - printf ("attr_setinheritsched with value %ld succeeded\n", r); - exit (1); - } - if (e != EINVAL) - { - puts ("attr_setinheritsched didn't return EINVAL"); - exit (1); - } - - int s; - if (pthread_attr_getinheritsched (&a, &s) != 0) - { - puts ("attr_getinheritsched failed"); - exit (1); - } - - if (s != PTHREAD_INHERIT_SCHED) - { - printf ("\ -inheritsched changed to %d by invalid setinheritsched call\n", s); - exit (1); - } - } - - if (r != SCHED_OTHER && r != SCHED_RR && r != SCHED_FIFO) - { - int e = pthread_attr_setschedpolicy (&a, r); - - if (e == 0) - { - printf ("attr_setschedpolicy with value %ld succeeded\n", r); - exit (1); - } - if (e != EINVAL) - { - puts ("attr_setschedpolicy didn't return EINVAL"); - exit (1); - } - - int s; - if (pthread_attr_getschedpolicy (&a, &s) != 0) - { - puts ("attr_getschedpolicy failed"); - exit (1); - } - - if (s != SCHED_OTHER) - { - printf ("\ -schedpolicy changed to %d by invalid setschedpolicy call\n", s); - exit (1); - } - } - - if (r != PTHREAD_SCOPE_SYSTEM && r != PTHREAD_SCOPE_PROCESS) - { - int e = pthread_attr_setscope (&a, r); - - if (e == 0) - { - printf ("attr_setscope with value %ld succeeded\n", r); - exit (1); - } - if (e != EINVAL) - { - puts ("attr_setscope didn't return EINVAL"); - exit (1); - } - - int s; - if (pthread_attr_getscope (&a, &s) != 0) - { - puts ("attr_getscope failed"); - exit (1); - } - - if (s != PTHREAD_SCOPE_SYSTEM) - { - printf ("\ -contentionscope changed to %d by invalid setscope call\n", s); - exit (1); - } - } - - if (r != PTHREAD_PROCESS_PRIVATE && r != PTHREAD_PROCESS_SHARED) - { - int e = pthread_mutexattr_setpshared (&ma, r); - - if (e == 0) - { - printf ("mutexattr_setpshared with value %ld succeeded\n", r); - exit (1); - } - if (e != EINVAL) - { - puts ("mutexattr_setpshared didn't return EINVAL"); - exit (1); - } - - int s; - if (pthread_mutexattr_getpshared (&ma, &s) != 0) - { - puts ("mutexattr_getpshared failed"); - exit (1); - } - - if (s != PTHREAD_PROCESS_PRIVATE) - { - printf ("\ -pshared changed to %d by invalid mutexattr_setpshared call\n", s); - exit (1); - } - - e = pthread_rwlockattr_setpshared (&rwa, r); - - if (e == 0) - { - printf ("rwlockattr_setpshared with value %ld succeeded\n", r); - exit (1); - } - if (e != EINVAL) - { - puts ("rwlockattr_setpshared didn't return EINVAL"); - exit (1); - } - - if (pthread_rwlockattr_getpshared (&rwa, &s) != 0) - { - puts ("rwlockattr_getpshared failed"); - exit (1); - } - - if (s != PTHREAD_PROCESS_PRIVATE) - { - printf ("\ -pshared changed to %d by invalid rwlockattr_setpshared call\n", s); - exit (1); - } - } - - if (r != PTHREAD_CANCEL_ENABLE && r != PTHREAD_CANCEL_DISABLE) - { - int e = pthread_setcancelstate (r, NULL); - - if (e == 0) - { - printf ("setcancelstate with value %ld succeeded\n", r); - exit (1); - } - - if (e != EINVAL) - { - puts ("setcancelstate didn't return EINVAL"); - exit (1); - } - - int s; - if (pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, &s) != 0) - { - puts ("setcancelstate failed for PTHREAD_CANCEL_ENABLE"); - exit (1); - } - - if (s != PTHREAD_CANCEL_ENABLE) - { - puts ("invalid setcancelstate changed state"); - exit (1); - } - } - - if (r != PTHREAD_CANCEL_DEFERRED && r != PTHREAD_CANCEL_ASYNCHRONOUS) - { - int e = pthread_setcanceltype (r, NULL); - - if (e == 0) - { - printf ("setcanceltype with value %ld succeeded\n", r); - exit (1); - } - - if (e != EINVAL) - { - puts ("setcanceltype didn't return EINVAL"); - exit (1); - } - - int s; - if (pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, &s) != 0) - { - puts ("setcanceltype failed for PTHREAD_CANCEL_DEFERRED"); - exit (1); - } - - if (s != PTHREAD_CANCEL_DEFERRED) - { - puts ("invalid setcanceltype changed state"); - exit (1); - } - } - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-attr2.c b/test/nptl/tst-attr2.c deleted file mode 100644 index e8f9cc986..000000000 --- a/test/nptl/tst-attr2.c +++ /dev/null @@ -1,316 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -int -do_test (void) -{ - pthread_attr_t a; - - if (pthread_attr_init (&a) != 0) - { - puts ("attr_init failed"); - exit (1); - } - - /* Check default value of detach state. */ - int s; - if (pthread_attr_getdetachstate (&a, &s) != 0) - { - puts ("1st attr_getdestachstate failed"); - exit (1); - } - if (s != PTHREAD_CREATE_JOINABLE) - { - printf ("\ -default detach state wrong: %d, expected %d (PTHREAD_CREATE_JOINABLE)\n", - s, PTHREAD_CREATE_JOINABLE); - exit (1); - } - - int e = pthread_attr_setdetachstate (&a, PTHREAD_CREATE_DETACHED); - if (e != 0) - { - puts ("1st attr_setdetachstate failed"); - exit (1); - } - if (pthread_attr_getdetachstate (&a, &s) != 0) - { - puts ("2nd attr_getdestachstate failed"); - exit (1); - } - if (s != PTHREAD_CREATE_DETACHED) - { - puts ("PTHREAD_CREATE_DETACHED set, but not given back"); - exit (1); - } - - e = pthread_attr_setdetachstate (&a, PTHREAD_CREATE_JOINABLE); - if (e != 0) - { - puts ("2nd attr_setdetachstate failed"); - exit (1); - } - if (pthread_attr_getdetachstate (&a, &s) != 0) - { - puts ("3rd attr_getdestachstate failed"); - exit (1); - } - if (s != PTHREAD_CREATE_JOINABLE) - { - puts ("PTHREAD_CREATE_JOINABLE set, but not given back"); - exit (1); - } - - - size_t g; - if (pthread_attr_getguardsize (&a, &g) != 0) - { - puts ("1st attr_getguardsize failed"); - exit (1); - } - if (g != (size_t) sysconf (_SC_PAGESIZE)) - { - printf ("default guardsize %zu, expected %ld (PAGESIZE)\n", - g, sysconf (_SC_PAGESIZE)); - exit (1); - } - - e = pthread_attr_setguardsize (&a, 0); - if (e != 0) - { - puts ("1st attr_setguardsize failed"); - exit (1); - } - if (pthread_attr_getguardsize (&a, &g) != 0) - { - puts ("2nd attr_getguardsize failed"); - exit (1); - } - if (g != 0) - { - printf ("guardsize set to zero but %zu returned\n", g); - exit (1); - } - - e = pthread_attr_setguardsize (&a, 1); - if (e != 0) - { - puts ("2nd attr_setguardsize failed"); - exit (1); - } - if (pthread_attr_getguardsize (&a, &g) != 0) - { - puts ("3rd attr_getguardsize failed"); - exit (1); - } - if (g != 1) - { - printf ("guardsize set to 1 but %zu returned\n", g); - exit (1); - } - - - if (pthread_attr_getinheritsched (&a, &s) != 0) - { - puts ("1st attr_getinheritsched failed"); - exit (1); - } - /* XXX What is the correct default value. */ - if (s != PTHREAD_INHERIT_SCHED && s != PTHREAD_EXPLICIT_SCHED) - { - puts ("incorrect default value for inheritsched"); - exit (1); - } - - e = pthread_attr_setinheritsched (&a, PTHREAD_EXPLICIT_SCHED); - if (e != 0) - { - puts ("1st attr_setinheritsched failed"); - exit (1); - } - if (pthread_attr_getinheritsched (&a, &s) != 0) - { - puts ("2nd attr_getinheritsched failed"); - exit (1); - } - if (s != PTHREAD_EXPLICIT_SCHED) - { - printf ("inheritsched set to PTHREAD_EXPLICIT_SCHED, but got %d\n", s); - exit (1); - } - - e = pthread_attr_setinheritsched (&a, PTHREAD_INHERIT_SCHED); - if (e != 0) - { - puts ("2nd attr_setinheritsched failed"); - exit (1); - } - if (pthread_attr_getinheritsched (&a, &s) != 0) - { - puts ("3rd attr_getinheritsched failed"); - exit (1); - } - if (s != PTHREAD_INHERIT_SCHED) - { - printf ("inheritsched set to PTHREAD_INHERIT_SCHED, but got %d\n", s); - exit (1); - } - - - if (pthread_attr_getschedpolicy (&a, &s) != 0) - { - puts ("1st attr_getschedpolicy failed"); - exit (1); - } - /* XXX What is the correct default value. */ - if (s != SCHED_OTHER && s != SCHED_FIFO && s != SCHED_RR) - { - puts ("incorrect default value for schedpolicy"); - exit (1); - } - - e = pthread_attr_setschedpolicy (&a, SCHED_RR); - if (e != 0) - { - puts ("1st attr_setschedpolicy failed"); - exit (1); - } - if (pthread_attr_getschedpolicy (&a, &s) != 0) - { - puts ("2nd attr_getschedpolicy failed"); - exit (1); - } - if (s != SCHED_RR) - { - printf ("schedpolicy set to SCHED_RR, but got %d\n", s); - exit (1); - } - - e = pthread_attr_setschedpolicy (&a, SCHED_FIFO); - if (e != 0) - { - puts ("2nd attr_setschedpolicy failed"); - exit (1); - } - if (pthread_attr_getschedpolicy (&a, &s) != 0) - { - puts ("3rd attr_getschedpolicy failed"); - exit (1); - } - if (s != SCHED_FIFO) - { - printf ("schedpolicy set to SCHED_FIFO, but got %d\n", s); - exit (1); - } - - e = pthread_attr_setschedpolicy (&a, SCHED_OTHER); - if (e != 0) - { - puts ("3rd attr_setschedpolicy failed"); - exit (1); - } - if (pthread_attr_getschedpolicy (&a, &s) != 0) - { - puts ("4th attr_getschedpolicy failed"); - exit (1); - } - if (s != SCHED_OTHER) - { - printf ("schedpolicy set to SCHED_OTHER, but got %d\n", s); - exit (1); - } - - - if (pthread_attr_getscope (&a, &s) != 0) - { - puts ("1st attr_getscope failed"); - exit (1); - } - /* XXX What is the correct default value. */ - if (s != PTHREAD_SCOPE_SYSTEM && s != PTHREAD_SCOPE_PROCESS) - { - puts ("incorrect default value for contentionscope"); - exit (1); - } - - e = pthread_attr_setscope (&a, PTHREAD_SCOPE_PROCESS); - if (e != ENOTSUP) - { - if (e != 0) - { - puts ("1st attr_setscope failed"); - exit (1); - } - if (pthread_attr_getscope (&a, &s) != 0) - { - puts ("2nd attr_getscope failed"); - exit (1); - } - if (s != PTHREAD_SCOPE_PROCESS) - { - printf ("\ -contentionscope set to PTHREAD_SCOPE_PROCESS, but got %d\n", s); - exit (1); - } - } - - e = pthread_attr_setscope (&a, PTHREAD_SCOPE_SYSTEM); - if (e != 0) - { - puts ("2nd attr_setscope failed"); - exit (1); - } - if (pthread_attr_getscope (&a, &s) != 0) - { - puts ("3rd attr_getscope failed"); - exit (1); - } - if (s != PTHREAD_SCOPE_SYSTEM) - { - printf ("contentionscope set to PTHREAD_SCOPE_SYSTEM, but got %d\n", s); - exit (1); - } - - char buf[1]; - e = pthread_attr_setstack (&a, buf, 1); - if (e != EINVAL) - { - puts ("setstack with size 1 did not produce EINVAL"); - exit (1); - } - - e = pthread_attr_setstacksize (&a, 1); - if (e != EINVAL) - { - puts ("setstacksize with size 1 did not produce EINVAL"); - exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-attr3.c b/test/nptl/tst-attr3.c deleted file mode 100644 index 5ccf9abba..000000000 --- a/test/nptl/tst-attr3.c +++ /dev/null @@ -1,419 +0,0 @@ -/* pthread_getattr_np test. - Copyright (C) 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - -static void * -tf (void *arg) -{ - pthread_attr_t a, *ap, a2; - int err; - void *result = NULL; - - if (arg == NULL) - { - ap = &a2; - err = pthread_attr_init (ap); - if (err) - { - error (0, err, "pthread_attr_init failed"); - return tf; - } - } - else - ap = (pthread_attr_t *) arg; - - err = pthread_getattr_np (pthread_self (), &a); - if (err) - { - error (0, err, "pthread_getattr_np failed"); - result = tf; - } - - int detachstate1, detachstate2; - err = pthread_attr_getdetachstate (&a, &detachstate1); - if (err) - { - error (0, err, "pthread_attr_getdetachstate failed"); - result = tf; - } - else - { - err = pthread_attr_getdetachstate (ap, &detachstate2); - if (err) - { - error (0, err, "pthread_attr_getdetachstate failed"); - result = tf; - } - else if (detachstate1 != detachstate2) - { - error (0, 0, "detachstate differs %d != %d", - detachstate1, detachstate2); - result = tf; - } - } - - void *stackaddr; - size_t stacksize; - err = pthread_attr_getstack (&a, &stackaddr, &stacksize); - if (err) - { - error (0, err, "pthread_attr_getstack failed"); - result = tf; - } - else if ((void *) &a < stackaddr - || (void *) &a >= stackaddr + stacksize) - { - error (0, 0, "pthread_attr_getstack returned range does not cover thread's stack"); - result = tf; - } - else - printf ("thread stack %p-%p (0x%zx)\n", stackaddr, stackaddr + stacksize, - stacksize); - - size_t guardsize1, guardsize2; - err = pthread_attr_getguardsize (&a, &guardsize1); - if (err) - { - error (0, err, "pthread_attr_getguardsize failed"); - result = tf; - } - else - { - err = pthread_attr_getguardsize (ap, &guardsize2); - if (err) - { - error (0, err, "pthread_attr_getguardsize failed"); - result = tf; - } - else if (guardsize1 != guardsize2) - { - error (0, 0, "guardsize differs %zd != %zd", - guardsize1, guardsize2); - result = tf; - } - else - printf ("thread guardsize %zd\n", guardsize1); - } - - int scope1, scope2; - err = pthread_attr_getscope (&a, &scope1); - if (err) - { - error (0, err, "pthread_attr_getscope failed"); - result = tf; - } - else - { - err = pthread_attr_getscope (ap, &scope2); - if (err) - { - error (0, err, "pthread_attr_getscope failed"); - result = tf; - } - else if (scope1 != scope2) - { - error (0, 0, "scope differs %d != %d", - scope1, scope2); - result = tf; - } - } - - int inheritsched1, inheritsched2; - err = pthread_attr_getinheritsched (&a, &inheritsched1); - if (err) - { - error (0, err, "pthread_attr_getinheritsched failed"); - result = tf; - } - else - { - err = pthread_attr_getinheritsched (ap, &inheritsched2); - if (err) - { - error (0, err, "pthread_attr_getinheritsched failed"); - result = tf; - } - else if (inheritsched1 != inheritsched2) - { - error (0, 0, "inheritsched differs %d != %d", - inheritsched1, inheritsched2); - result = tf; - } - } - - cpu_set_t c1, c2; - err = pthread_getaffinity_np (pthread_self (), sizeof (c1), &c1); - if (err == 0) - { - err = pthread_attr_getaffinity_np (&a, sizeof (c2), &c2); - if (err) - { - error (0, err, "pthread_attr_getaffinity_np failed"); - result = tf; - } - else if (memcmp (&c1, &c2, sizeof (c1))) - { - error (0, 0, "pthread_attr_getaffinity_np returned different CPU mask than pthread_getattr_np"); - result = tf; - } - } - - err = pthread_attr_destroy (&a); - if (err) - { - error (0, err, "pthread_attr_destroy failed"); - result = tf; - } - - if (ap == &a2) - { - err = pthread_attr_destroy (ap); - if (err) - { - error (0, err, "pthread_attr_destroy failed"); - result = tf; - } - } - - return result; -} - - -static int -do_test (void) -{ - int result = 0; - pthread_attr_t a; - cpu_set_t c1, c2; - - int err = pthread_attr_init (&a); - if (err) - { - error (0, err, "pthread_attr_init failed"); - result = 1; - } - - err = pthread_attr_getaffinity_np (&a, sizeof (c1), &c1); - if (err && err != ENOSYS) - { - error (0, err, "pthread_attr_getaffinity_np failed"); - result = 1; - } - - err = pthread_attr_destroy (&a); - if (err) - { - error (0, err, "pthread_attr_destroy failed"); - result = 1; - } - - err = pthread_getattr_np (pthread_self (), &a); - if (err) - { - error (0, err, "pthread_getattr_np failed"); - result = 1; - } - - int detachstate; - err = pthread_attr_getdetachstate (&a, &detachstate); - if (err) - { - error (0, err, "pthread_attr_getdetachstate failed"); - result = 1; - } - else if (detachstate != PTHREAD_CREATE_JOINABLE) - { - error (0, 0, "initial thread not joinable"); - result = 1; - } - - void *stackaddr; - size_t stacksize; - err = pthread_attr_getstack (&a, &stackaddr, &stacksize); - if (err) - { - error (0, err, "pthread_attr_getstack failed"); - result = 1; - } - else if ((void *) &a < stackaddr - || (void *) &a >= stackaddr + stacksize) - { - error (0, 0, "pthread_attr_getstack returned range does not cover main's stack"); - result = 1; - } - else - printf ("initial thread stack %p-%p (0x%zx)\n", stackaddr, - stackaddr + stacksize, stacksize); - - size_t guardsize; - err = pthread_attr_getguardsize (&a, &guardsize); - if (err) - { - error (0, err, "pthread_attr_getguardsize failed"); - result = 1; - } - else if (guardsize != 0) - { - error (0, 0, "pthread_attr_getguardsize returned %zd != 0", - guardsize); - result = 1; - } - - int scope; - err = pthread_attr_getscope (&a, &scope); - if (err) - { - error (0, err, "pthread_attr_getscope failed"); - result = 1; - } - else if (scope != PTHREAD_SCOPE_SYSTEM) - { - error (0, 0, "pthread_attr_getscope returned %d != PTHREAD_SCOPE_SYSTEM", - scope); - result = 1; - } - - int inheritsched; - err = pthread_attr_getinheritsched (&a, &inheritsched); - if (err) - { - error (0, err, "pthread_attr_getinheritsched failed"); - result = 1; - } - else if (inheritsched != PTHREAD_INHERIT_SCHED) - { - error (0, 0, "pthread_attr_getinheritsched returned %d != PTHREAD_INHERIT_SCHED", - inheritsched); - result = 1; - } - - err = pthread_getaffinity_np (pthread_self (), sizeof (c1), &c1); - if (err == 0) - { - err = pthread_attr_getaffinity_np (&a, sizeof (c2), &c2); - if (err) - { - error (0, err, "pthread_attr_getaffinity_np failed"); - result = 1; - } - else if (memcmp (&c1, &c2, sizeof (c1))) - { - error (0, 0, "pthread_attr_getaffinity_np returned different CPU mask than pthread_getattr_np"); - result = 1; - } - } - - err = pthread_attr_destroy (&a); - if (err) - { - error (0, err, "pthread_attr_destroy failed"); - result = 1; - } - - pthread_t th; - err = pthread_create (&th, NULL, tf, NULL); - if (err) - { - error (0, err, "pthread_create #1 failed"); - result = 1; - } - else - { - void *ret; - err = pthread_join (th, &ret); - if (err) - { - error (0, err, "pthread_join #1 failed"); - result = 1; - } - else if (ret != NULL) - result = 1; - } - - err = pthread_attr_init (&a); - if (err) - { - error (0, err, "pthread_attr_init failed"); - result = 1; - } - - err = pthread_create (&th, &a, tf, &a); - if (err) - { - error (0, err, "pthread_create #2 failed"); - result = 1; - } - else - { - void *ret; - err = pthread_join (th, &ret); - if (err) - { - error (0, err, "pthread_join #2 failed"); - result = 1; - } - else if (ret != NULL) - result = 1; - } - - err = pthread_attr_setguardsize (&a, 16 * sysconf (_SC_PAGESIZE)); - if (err) - { - error (0, err, "pthread_attr_setguardsize failed"); - result = 1; - } - - err = pthread_create (&th, &a, tf, &a); - if (err) - { - error (0, err, "pthread_create #3 failed"); - result = 1; - } - else - { - void *ret; - err = pthread_join (th, &ret); - if (err) - { - error (0, err, "pthread_join #3 failed"); - result = 1; - } - else if (ret != NULL) - result = 1; - } - - err = pthread_attr_destroy (&a); - if (err) - { - error (0, err, "pthread_attr_destroy failed"); - result = 1; - } - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-barrier1.c b/test/nptl/tst-barrier1.c deleted file mode 100644 index 4e396c97a..000000000 --- a/test/nptl/tst-barrier1.c +++ /dev/null @@ -1,70 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - - -static int -do_test (void) -{ - pthread_barrier_t b; - int e; - int cnt; - - e = pthread_barrier_init (&b, NULL, 0); - if (e == 0) - { - puts ("barrier_init with count 0 succeeded"); - return 1; - } - if (e != EINVAL) - { - puts ("barrier_init with count 0 didn't return EINVAL"); - return 1; - } - - if (pthread_barrier_init (&b, NULL, 1) != 0) - { - puts ("real barrier_init failed"); - return 1; - } - - for (cnt = 0; cnt < 10; ++cnt) - { - e = pthread_barrier_wait (&b); - - if (e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait didn't return PTHREAD_BARRIER_SERIAL_THREAD"); - return 1; - } - } - - if (pthread_barrier_destroy (&b) != 0) - { - puts ("barrier_destroy failed"); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-barrier2.c b/test/nptl/tst-barrier2.c deleted file mode 100644 index 8ffcda063..000000000 --- a/test/nptl/tst-barrier2.c +++ /dev/null @@ -1,184 +0,0 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -static int -do_test (void) -{ - size_t ps = sysconf (_SC_PAGESIZE); - char tmpfname[] = "/tmp/tst-barrier2.XXXXXX"; - char data[ps]; - void *mem; - int fd; - pthread_barrier_t *b; - pthread_barrierattr_t a; - pid_t pid; - int serials = 0; - int cnt; - int status; - int p; - - fd = mkstemp (tmpfname); - if (fd == -1) - { - printf ("cannot open temporary file: %m\n"); - return 1; - } - - /* Make sure it is always removed. */ - unlink (tmpfname); - - /* Create one page of data. */ - memset (data, '\0', ps); - - /* Write the data to the file. */ - if (write (fd, data, ps) != (ssize_t) ps) - { - puts ("short write"); - return 1; - } - - mem = mmap (NULL, ps, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (mem == MAP_FAILED) - { - printf ("mmap failed: %m\n"); - return 1; - } - - b = (pthread_barrier_t *) (((uintptr_t) mem + __alignof (pthread_barrier_t)) - & ~(__alignof (pthread_barrier_t) - 1)); - - if (pthread_barrierattr_init (&a) != 0) - { - puts ("barrierattr_init failed"); - return 1; - } - - if (pthread_barrierattr_getpshared (&a, &p) != 0) - { - puts ("1st barrierattr_getpshared failed"); - return 1; - } - - if (p != PTHREAD_PROCESS_PRIVATE) - { - puts ("default pshared value wrong"); - return 1; - } - - if (pthread_barrierattr_setpshared (&a, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("barrierattr_setpshared failed"); - return 1; - } - - if (pthread_barrierattr_getpshared (&a, &p) != 0) - { - puts ("2nd barrierattr_getpshared failed"); - return 1; - } - - if (p != PTHREAD_PROCESS_SHARED) - { - puts ("pshared value after setpshared call wrong"); - return 1; - } - - if (pthread_barrier_init (b, &a, 2) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - if (pthread_barrierattr_destroy (&a) != 0) - { - puts ("barrierattr_destroy failed"); - return 1; - } - - puts ("going to fork now"); - pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - return 1; - } - - /* Just to be sure we don't hang forever. */ - alarm (4); - -#define N 30 - for (cnt = 0; cnt < N; ++cnt) - { - int e; - - e = pthread_barrier_wait (b); - if (e == PTHREAD_BARRIER_SERIAL_THREAD) - ++serials; - else if (e != 0) - { - printf ("%s: barrier_wait returned value %d != 0 and PTHREAD_BARRIER_SERIAL_THREAD\n", - pid == 0 ? "child" : "parent", e); - return 1; - } - } - - alarm (0); - - printf ("%s: was %d times the serial thread\n", - pid == 0 ? "child" : "parent", serials); - - if (pid == 0) - /* The child. Pass the number of times we had the serializing - thread back to the parent. */ - exit (serials); - - if (waitpid (pid, &status, 0) != pid) - { - puts ("waitpid failed"); - return 1; - } - - if (!WIFEXITED (status)) - { - puts ("child exited abnormally"); - return 1; - } - - if (WEXITSTATUS (status) + serials != N) - { - printf ("total number of serials is %d, expected %d\n", - WEXITSTATUS (status) + serials, N); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-barrier3.c b/test/nptl/tst-barrier3.c deleted file mode 100644 index 9c4e2b25f..000000000 --- a/test/nptl/tst-barrier3.c +++ /dev/null @@ -1,153 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -/* Test of POSIX barriers. */ - -#include -#include -#include -#include - -#define NTHREADS 20 - -#define ROUNDS 20 - -static pthread_barrier_t barriers[NTHREADS]; - -static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; -static int counters[NTHREADS]; -static int serial[NTHREADS]; - -static void * -worker (void *arg) -{ - void *result = NULL; - int nr = (long int) arg; - int i; - - for (i = 0; i < ROUNDS; ++i) - { - int j; - int retval; - - if (nr == 0) - { - memset (counters, '\0', sizeof (counters)); - memset (serial, '\0', sizeof (serial)); - } - - retval = pthread_barrier_wait (&barriers[NTHREADS - 1]); - if (retval != 0 && retval != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("thread %d failed to wait for all the others\n", nr); - result = (void *) 1; - } - - for (j = nr; j < NTHREADS; ++j) - { - /* Increment the counter for this round. */ - pthread_mutex_lock (&lock); - ++counters[j]; - pthread_mutex_unlock (&lock); - - /* Wait for the rest. */ - retval = pthread_barrier_wait (&barriers[j]); - - /* Test the result. */ - if (nr == 0 && counters[j] != j + 1) - { - printf ("barrier in round %d released but count is %d\n", - j, counters[j]); - result = (void *) 1; - } - - if (retval != 0) - { - if (retval != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("thread %d in round %d has nonzero return value != PTHREAD_BARRIER_SERIAL_THREAD\n", - nr, j); - result = (void *) 1; - } - else - { - pthread_mutex_lock (&lock); - ++serial[j]; - pthread_mutex_unlock (&lock); - } - } - - /* Wait for the rest again. */ - retval = pthread_barrier_wait (&barriers[j]); - - /* Now we can check whether exactly one thread was serializing. */ - if (nr == 0 && serial[j] != 1) - { - printf ("not exactly one serial thread in round %d\n", j); - result = (void *) 1; - } - } - } - - return result; -} - - -#define TEST_FUNCTION do_test () -#define TIMEOUT 60 -static int -do_test (void) -{ - pthread_t threads[NTHREADS]; - int i; - void *res; - int result = 0; - - /* Initialized the barrier variables. */ - for (i = 0; i < NTHREADS; ++i) - if (pthread_barrier_init (&barriers[i], NULL, i + 1) != 0) - { - printf ("Failed to initialize barrier %d\n", i); - exit (1); - } - - /* Start the threads. */ - for (i = 0; i < NTHREADS; ++i) - if (pthread_create (&threads[i], NULL, worker, (void *) (long int) i) != 0) - { - printf ("Failed to start thread %d\n", i); - exit (1); - } - - /* And wait for them. */ - for (i = 0; i < NTHREADS; ++i) - if (pthread_join (threads[i], &res) != 0 || res != NULL) - { - printf ("thread %d returned a failure\n", i); - result = 1; - } - else - printf ("joined threads %d\n", i); - - if (result == 0) - puts ("all OK"); - - return result; -} - -#include "../test-skeleton.c" diff --git a/test/nptl/tst-barrier4.c b/test/nptl/tst-barrier4.c deleted file mode 100644 index cad9fb727..000000000 --- a/test/nptl/tst-barrier4.c +++ /dev/null @@ -1,121 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -/* This is a test for behavior not guaranteed by POSIX. */ -#include -#include -#include -#include - - -static pthread_barrier_t b1; -static pthread_barrier_t b2; - - -#define N 20 - -static void * -tf (void *arg) -{ - int round = 0; - - while (round++ < 30) - { - if (pthread_barrier_wait (&b1) == PTHREAD_BARRIER_SERIAL_THREAD) - { - pthread_barrier_destroy (&b1); - if (pthread_barrier_init (&b1, NULL, N) != 0) - { - puts ("tf: 1st barrier_init failed"); - exit (1); - } - } - - if (pthread_barrier_wait (&b2) == PTHREAD_BARRIER_SERIAL_THREAD) - { - pthread_barrier_destroy (&b2); - if (pthread_barrier_init (&b2, NULL, N) != 0) - { - puts ("tf: 2nd barrier_init failed"); - exit (1); - } - } - } - - return NULL; -} - - -static int -do_test (void) -{ - pthread_attr_t at; - int cnt; - - if (pthread_attr_init (&at) != 0) - { - puts ("attr_init failed"); - return 1; - } - - if (pthread_attr_setstacksize (&at, 1 * 1024 * 1024) != 0) - { - puts ("attr_setstacksize failed"); - return 1; - } - - if (pthread_barrier_init (&b1, NULL, N) != 0) - { - puts ("1st barrier_init failed"); - return 1; - } - - if (pthread_barrier_init (&b2, NULL, N) != 0) - { - puts ("2nd barrier_init failed"); - return 1; - } - - pthread_t th[N - 1]; - for (cnt = 0; cnt < N - 1; ++cnt) - if (pthread_create (&th[cnt], &at, tf, NULL) != 0) - { - puts ("pthread_create failed"); - return 1; - } - - if (pthread_attr_destroy (&at) != 0) - { - puts ("attr_destroy failed"); - return 1; - } - - tf (NULL); - - for (cnt = 0; cnt < N - 1; ++cnt) - if (pthread_join (th[cnt], NULL) != 0) - { - puts ("pthread_join failed"); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-basic1.c b/test/nptl/tst-basic1.c deleted file mode 100644 index 748bbb7f0..000000000 --- a/test/nptl/tst-basic1.c +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static pid_t pid; - -static void * -tf (void *a) -{ - if (getpid () != pid) - { - write (2, "pid mismatch\n", 13); - _exit (1); - } - - return a; -} - - -int -do_test (void) -{ - pid = getpid (); - -#define N 2 - pthread_t t[N]; - int i; - - for (i = 0; i < N; ++i) - if (pthread_create (&t[i], NULL, tf, (void *) (long int) (i + 1)) != 0) - { - write (2, "create failed\n", 14); - _exit (1); - } - else - printf ("created thread %d\n", i); - - for (i = 0; i < N; ++i) - { - void *r; - int e; - if ((e = pthread_join (t[i], &r)) != 0) - { - printf ("join failed: %d\n", e); - _exit (1); - } - else if (r != (void *) (long int) (i + 1)) - { - write (2, "result wrong\n", 13); - _exit (1); - } - else - printf ("joined thread %d\n", i); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-basic2.c b/test/nptl/tst-basic2.c deleted file mode 100644 index 58ed6ac53..000000000 --- a/test/nptl/tst-basic2.c +++ /dev/null @@ -1,120 +0,0 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -#define N 20 - -static pthread_t th[N]; -static pthread_mutex_t lock[N]; - - -static void *tf (void *a) -{ - uintptr_t idx = (uintptr_t) a; - - pthread_mutex_lock (&lock[idx]); - - return pthread_equal (pthread_self (), th[idx]) ? NULL : (void *) 1l; -} - - -int -do_test (void) -{ - if (pthread_equal (pthread_self (), pthread_self ()) == 0) - { - puts ("pthread_equal (pthread_self (), pthread_self ()) failed"); - exit (1); - } - - pthread_attr_t at; - - if (pthread_attr_init (&at) != 0) - { - puts ("attr_init failed"); - return 1; - } - - if (pthread_attr_setstacksize (&at, 1 * 1024 * 1024) != 0) - { - puts ("attr_setstacksize failed"); - return 1; - } - - int i; - for (i = 0; i < N; ++i) - { - if (pthread_mutex_init (&lock[i], NULL) != 0) - { - puts ("mutex_init failed"); - exit (1); - } - - if (pthread_mutex_lock (&lock[i]) != 0) - { - puts ("mutex_lock failed"); - exit (1); - } - - if (pthread_create (&th[i], &at, tf, (void *) (long int) i) != 0) - { - puts ("create failed"); - exit (1); - } - - if (pthread_mutex_unlock (&lock[i]) != 0) - { - puts ("mutex_unlock failed"); - exit (1); - } - - printf ("created thread %d\n", i); - } - - if (pthread_attr_destroy (&at) != 0) - { - puts ("attr_destroy failed"); - return 1; - } - - int result = 0; - for (i = 0; i < N; ++i) - { - void *r; - int e; - if ((e = pthread_join (th[i], &r)) != 0) - { - printf ("join failed: %d\n", e); - _exit (1); - } - else if (r != NULL) - result = 1; - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-basic3.c b/test/nptl/tst-basic3.c deleted file mode 100644 index a3e2603bd..000000000 --- a/test/nptl/tst-basic3.c +++ /dev/null @@ -1,86 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static int nrunning = 1; - - -static void -final_test (void) -{ - puts ("final_test has been called"); - -#define THE_SIGNAL SIGUSR1 - kill (getpid (), SIGUSR1); -} - - -static void * -tf (void *a) -{ - if (pthread_join ((pthread_t) a, NULL) != 0) - { - printf ("join failed while %d are running\n", nrunning); - _exit (1); - } - - printf ("%2d left\n", --nrunning); - - return NULL; -} - - -int -do_test (void) -{ -#define N 20 - pthread_t t[N]; - pthread_t last = pthread_self (); - int i; - - atexit (final_test); - - printf ("starting %d + 1 threads\n", N); - for (i = 0; i < N; ++i) - { - if (pthread_create (&t[i], NULL, tf, (void *) last) != 0) - { - puts ("create failed"); - _exit (1); - } - - ++nrunning; - - last = t[i]; - } - - printf ("%2d left\n", --nrunning); - - pthread_exit (NULL); -} - - -#define EXPECTED_SIGNAL THE_SIGNAL -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-basic4.c b/test/nptl/tst-basic4.c deleted file mode 100644 index b69ca200b..000000000 --- a/test/nptl/tst-basic4.c +++ /dev/null @@ -1,100 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - - -static void -final_test (void) -{ - puts ("final_test has been called"); - -#define THE_SIGNAL SIGUSR1 - kill (getpid (), SIGUSR1); -} - - -static void * -tf (void *a) -{ - pid_t pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - exit (1); - } - - if (pid == 0) - { - atexit (final_test); - - pthread_exit (NULL); - } - - int r; - int e = TEMP_FAILURE_RETRY (waitpid (pid, &r, 0)); - if (e != pid) - { - puts ("waitpid failed"); - exit (1); - } - - if (! WIFSIGNALED (r)) - { - puts ("child not signled"); - exit (1); - } - - if (WTERMSIG (r) != THE_SIGNAL) - { - puts ("child's termination signal wrong"); - exit (1); - } - - return NULL; -} - - -int -do_test (void) -{ - pthread_t th; - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - _exit (1); - } - - if (pthread_join (th, NULL) != 0) - { - puts ("join failed"); - exit (1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-basic5.c b/test/nptl/tst-basic5.c deleted file mode 100644 index 76b59096e..000000000 --- a/test/nptl/tst-basic5.c +++ /dev/null @@ -1,73 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - - -int -do_test (void) -{ - int c = pthread_getconcurrency (); - if (c != 0) - { - puts ("initial concurrencylevel wrong"); - exit (1); - } - - if (pthread_setconcurrency (1) != 0) - { - puts ("setconcurrency failed"); - exit (1); - } - - c = pthread_getconcurrency (); - if (c != 1) - { - puts ("getconcurrency didn't return the value previous set"); - exit (1); - } - - int e = pthread_setconcurrency (-1); - if (e == 0) - { - puts ("setconcurrency of negative value didn't failed"); - exit (1); - } - if (e != EINVAL) - { - puts ("setconcurrency didn't return EINVAL for negative value"); - exit (1); - } - - c = pthread_getconcurrency (); - if (c != 1) - { - puts ("invalid getconcurrency changed level"); - exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-basic6.c b/test/nptl/tst-basic6.c deleted file mode 100644 index 91e5fe2c7..000000000 --- a/test/nptl/tst-basic6.c +++ /dev/null @@ -1,131 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static char *p; - -static pthread_barrier_t b; -#define BT \ - e = pthread_barrier_wait (&b); \ - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) \ - { \ - puts ("barrier_wait failed"); \ - exit (1); \ - } - - -static void * -tf (void *a) -{ - int e; - - BT; - - char *p2 = getcwd (NULL, 0); - if (p2 == NULL) - { - puts ("2nd getcwd failed"); - exit (1); - } - - if (strcmp (p, p2) != 0) - { - printf ("initial cwd mismatch: \"%s\" vs \"%s\"\n", p, p2); - exit (1); - } - - free (p); - free (p2); - - if (chdir ("..") != 0) - { - puts ("chdir failed"); - exit (1); - } - - p = getcwd (NULL, 0); - if (p == NULL) - { - puts ("getcwd failed"); - exit (1); - } - - return a; -} - - -int -do_test (void) -{ - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - exit (1); - } - - p = getcwd (NULL, 0); - if (p == NULL) - { - puts ("getcwd failed"); - exit (1); - } - - int e; - BT; - - if (pthread_join (th, NULL) != 0) - { - puts ("join failed"); - exit (1); - } - - char *p2 = getcwd (NULL, 0); - if (p2 == NULL) - { - puts ("2nd getcwd failed"); - exit (1); - } - - if (strcmp (p, p2) != 0) - { - printf ("cwd after chdir mismatch: \"%s\" vs \"%s\"\n", p, p2); - exit (1); - } - - free (p); - free (p2); - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-basic7.c b/test/nptl/tst-basic7.c deleted file mode 100644 index 15b618786..000000000 --- a/test/nptl/tst-basic7.c +++ /dev/null @@ -1,75 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static void use_stack (size_t needed); - -void (*use_stack_ptr) (size_t) = use_stack; - -static void -use_stack (size_t needed) -{ - size_t sz = sysconf (_SC_PAGESIZE); - char *buf = alloca (sz); - memset (buf, '\0', sz); - - if (needed > sz) - use_stack_ptr (needed - sz); -} - -static void -use_up_memory (void) -{ - struct rlimit rl; - getrlimit (RLIMIT_AS, &rl); - rl.rlim_cur = 10 * 1024 * 1024; - setrlimit (RLIMIT_AS, &rl); - - char *c; - int PAGESIZE = getpagesize (); - while (1) - { - c = mmap (NULL, PAGESIZE, PROT_NONE, MAP_ANON | MAP_PRIVATE, -1, 0); - if (c == MAP_FAILED) - break; - } -} - -static void * -child (void *arg) -{ - sleep (1); - return arg; -} - -static int -do_test (void) -{ - int err; - pthread_t tid; - - /* Allocate the memory needed for the stack. */ - use_stack_ptr (PTHREAD_STACK_MIN); - - use_up_memory (); - - err = pthread_create (&tid, NULL, child, NULL); - if (err != 0) - { - printf ("pthread_create returns %d: %s\n", err, - err == EAGAIN ? "OK" : "FAIL"); - return err != EAGAIN; - } - - /* We did not fail to allocate memory despite the preparation. Oh well. */ - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel1.c b/test/nptl/tst-cancel1.c deleted file mode 100644 index 8b2ca07b1..000000000 --- a/test/nptl/tst-cancel1.c +++ /dev/null @@ -1,162 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static pthread_mutex_t m1 = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t m2 = PTHREAD_MUTEX_INITIALIZER; - -static int cntr; - - -static void -cleanup (void *arg) -{ - if (arg != (void *) 42l) - cntr = 42; - else - cntr = 1; -} - - -static void * -tf (void *arg) -{ - /* Ignore all signals. This must not have any effect on delivering - the cancellation signal. */ - sigset_t ss; - - sigfillset (&ss); - - if (pthread_sigmask (SIG_BLOCK, &ss, NULL) != 0) - { - puts ("pthread_sigmask failed"); - exit (1); - } - - pthread_cleanup_push (cleanup, (void *) 42l); - - int err = pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, NULL); - if (err != 0) - { - printf ("setcanceltype failed: %s\n", strerror (err)); - exit (1); - } - /* The following code is not standard compliant: the mutex functions - must not be called with asynchronous cancellation enabled. */ - - err = pthread_mutex_unlock (&m2); - if (err != 0) - { - printf ("child: mutex_unlock failed: %s\n", strerror (err)); - exit (1); - } - - err = pthread_mutex_lock (&m1); - if (err != 0) - { - printf ("child: 1st mutex_lock failed: %s\n", strerror (err)); - exit (1); - } - - /* We should never come here. */ - - pthread_cleanup_pop (0); - - return NULL; -} - - -static int -do_test (void) -{ - int err; - pthread_t th; - int result = 0; - void *retval; - - /* Get the mutexes. */ - err = pthread_mutex_lock (&m1); - if (err != 0) - { - printf ("parent: 1st mutex_lock failed: %s\n", strerror (err)); - return 1; - } - err = pthread_mutex_lock (&m2); - if (err != 0) - { - printf ("parent: 2nd mutex_lock failed: %s\n", strerror (err)); - return 1; - } - - err = pthread_create (&th, NULL, tf, NULL); - if (err != 0) - { - printf ("create failed: %s\n", strerror (err)); - return 1; - } - - err = pthread_mutex_lock (&m2); - if (err != 0) - { - printf ("parent: 3rd mutex_lock failed: %s\n", strerror (err)); - return 1; - } - - err = pthread_cancel (th); - if (err != 0) - { - printf ("cancel failed: %s\n", strerror (err)); - return 1; - } - - err = pthread_join (th, &retval); - if (err != 0) - { - printf ("join failed: %s\n", strerror (err)); - return 1; - } - - if (retval != PTHREAD_CANCELED) - { - printf ("wrong return value: %p\n", retval); - result = 1; - } - - if (cntr == 42) - { - puts ("cleanup handler called with wrong argument"); - result = 1; - } - else if (cntr != 1) - { - puts ("cleanup handling not called"); - result = 1; - } - - return result; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel10.c b/test/nptl/tst-cancel10.c deleted file mode 100644 index 534ddf439..000000000 --- a/test/nptl/tst-cancel10.c +++ /dev/null @@ -1,125 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static void -cleanup (void *arg) -{ - /* Just for fun. */ - if (pthread_cancel (pthread_self ()) != 0) - { - puts ("cleanup: cancel failed"); - exit (1); - } - - printf ("cleanup for %ld\n", (long int) arg); -} - - -static void * -tf (void *arg) -{ - long int n = (long int) arg; - - pthread_cleanup_push (cleanup, arg); - - if (pthread_setcanceltype ((n & 1) == 0 - ? PTHREAD_CANCEL_DEFERRED - : PTHREAD_CANCEL_ASYNCHRONOUS, NULL) != 0) - { - puts ("setcanceltype failed"); - exit (1); - } - - if (pthread_cancel (pthread_self ()) != 0) - { - puts ("cancel failed"); - exit (1); - } - - pthread_testcancel (); - - /* We should never come here. */ - - pthread_cleanup_pop (0); - - return NULL; -} - - -static int -do_test (void) -{ - pthread_attr_t at; - - if (pthread_attr_init (&at) != 0) - { - puts ("attr_init failed"); - return 1; - } - - if (pthread_attr_setstacksize (&at, 1 * 1024 * 1024) != 0) - { - puts ("attr_setstacksize failed"); - return 1; - } - -#define N 20 - int i; - pthread_t th[N]; - - for (i = 0; i < N; ++i) - if (pthread_create (&th[i], &at, tf, (void *) (long int) i) != 0) - { - puts ("create failed"); - exit (1); - } - - if (pthread_attr_destroy (&at) != 0) - { - puts ("attr_destroy failed"); - return 1; - } - - for (i = 0; i < N; ++i) - { - void *r; - if (pthread_join (th[i], &r) != 0) - { - puts ("join failed"); - exit (1); - } - - if (r != PTHREAD_CANCELED) - { - puts ("thread not canceled"); - exit (1); - } - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel11.c b/test/nptl/tst-cancel11.c deleted file mode 100644 index c09158237..000000000 --- a/test/nptl/tst-cancel11.c +++ /dev/null @@ -1,122 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static pthread_barrier_t bar; -static int fd[2]; - - -static void -cleanup (void *arg) -{ - static int ncall; - - if (++ncall != 1) - { - puts ("second call to cleanup"); - exit (1); - } - - printf ("cleanup call #%d\n", ncall); -} - - -static void * -tf (void *arg) -{ - pthread_cleanup_push (cleanup, NULL); - - int e = pthread_barrier_wait (&bar); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("tf: 1st barrier_wait failed"); - exit (1); - } - - /* This call should block and be cancelable. */ - char buf[20]; - read (fd[0], buf, sizeof (buf)); - - pthread_cleanup_pop (0); - - return NULL; -} - - -static int -do_test (void) -{ - pthread_t th; - - if (pthread_barrier_init (&bar, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - if (pipe (fd) != 0) - { - puts ("pipe failed"); - exit (1); - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - exit (1); - } - - int e = pthread_barrier_wait (&bar); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("1st barrier_wait failed"); - exit (1); - } - - if (pthread_cancel (th) != 0) - { - puts ("1st cancel failed"); - exit (1); - } - - void *r; - if (pthread_join (th, &r) != 0) - { - puts ("join failed"); - exit (1); - } - - if (r != PTHREAD_CANCELED) - { - puts ("thread not canceled"); - exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel12.c b/test/nptl/tst-cancel12.c deleted file mode 100644 index 8b3faa607..000000000 --- a/test/nptl/tst-cancel12.c +++ /dev/null @@ -1,126 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - - -static pthread_barrier_t bar; -static sem_t sem; - - -static void -cleanup (void *arg) -{ - static int ncall; - - if (++ncall != 1) - { - puts ("second call to cleanup"); - exit (1); - } - - printf ("cleanup call #%d\n", ncall); -} - - -static void * -tf (void *arg) -{ - pthread_cleanup_push (cleanup, NULL); - - int e = pthread_barrier_wait (&bar); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("tf: 1st barrier_wait failed"); - exit (1); - } - - /* This call should block and be cancelable. */ - sem_wait (&sem); - - pthread_cleanup_pop (0); - - puts ("sem_wait returned"); - - return NULL; -} - - -static int -do_test (void) -{ - pthread_t th; - - if (pthread_barrier_init (&bar, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - if (sem_init (&sem, 0, 1) != 0) - { - puts ("sem_init failed"); - exit (1); - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - exit (1); - } - - /* Check whether cancellation is honored even before sem_wait does - anything. */ - if (pthread_cancel (th) != 0) - { - puts ("1st cancel failed"); - exit (1); - } - - int e = pthread_barrier_wait (&bar); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("1st barrier_wait failed"); - exit (1); - } - - void *r; - if (pthread_join (th, &r) != 0) - { - puts ("join failed"); - exit (1); - } - - if (r != PTHREAD_CANCELED) - { - puts ("thread not canceled"); - exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel13.c b/test/nptl/tst-cancel13.c deleted file mode 100644 index cf3ce20f5..000000000 --- a/test/nptl/tst-cancel13.c +++ /dev/null @@ -1,128 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - - -static pthread_barrier_t bar; -static sem_t sem; - - -static void -cleanup (void *arg) -{ - static int ncall; - - if (++ncall != 1) - { - puts ("second call to cleanup"); - exit (1); - } - - printf ("cleanup call #%d\n", ncall); -} - - -static void * -tf (void *arg) -{ - pthread_cleanup_push (cleanup, NULL); - - int e = pthread_barrier_wait (&bar); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("tf: 1st barrier_wait failed"); - exit (1); - } - - /* This call should block and be cancelable. */ - sem_wait (&sem); - - pthread_cleanup_pop (0); - - puts ("sem_wait returned"); - - return NULL; -} - - -static int -do_test (void) -{ - pthread_t th; - - if (pthread_barrier_init (&bar, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - if (sem_init (&sem, 0, 0) != 0) - { - puts ("sem_init failed"); - exit (1); - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - exit (1); - } - - int e = pthread_barrier_wait (&bar); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("1st barrier_wait failed"); - exit (1); - } - - /* Give the child a chance to go to sleep in sem_wait. */ - sleep (1); - - /* Check whether cancellation is honored when waiting in sem_wait. */ - if (pthread_cancel (th) != 0) - { - puts ("1st cancel failed"); - exit (1); - } - - void *r; - if (pthread_join (th, &r) != 0) - { - puts ("join failed"); - exit (1); - } - - if (r != PTHREAD_CANCELED) - { - puts ("thread not canceled"); - exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel14.c b/test/nptl/tst-cancel14.c deleted file mode 100644 index defbbdd84..000000000 --- a/test/nptl/tst-cancel14.c +++ /dev/null @@ -1,136 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include - - -static pthread_barrier_t bar; -static sem_t sem; - - -static void -cleanup (void *arg) -{ - static int ncall; - - if (++ncall != 1) - { - puts ("second call to cleanup"); - exit (1); - } - - printf ("cleanup call #%d\n", ncall); -} - - -static void * -tf (void *arg) -{ - pthread_cleanup_push (cleanup, NULL); - - int e = pthread_barrier_wait (&bar); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("tf: 1st barrier_wait failed"); - exit (1); - } - - struct timeval tv; - (void) gettimeofday (&tv, NULL); - - struct timespec ts; - TIMEVAL_TO_TIMESPEC (&tv, &ts); - - /* Timeout in 5 seconds. */ - ts.tv_sec += 5; - - /* This call should block and be cancelable. */ - sem_timedwait (&sem, &ts); - - pthread_cleanup_pop (0); - - puts ("sem_timedwait returned"); - - return NULL; -} - - -static int -do_test (void) -{ - pthread_t th; - - if (pthread_barrier_init (&bar, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - if (sem_init (&sem, 0, 1) != 0) - { - puts ("sem_init failed"); - exit (1); - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - exit (1); - } - - /* Check whether cancellation is honored even before sem_timedwait does - anything. */ - if (pthread_cancel (th) != 0) - { - puts ("1st cancel failed"); - exit (1); - } - - int e = pthread_barrier_wait (&bar); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("1st barrier_wait failed"); - exit (1); - } - - void *r; - if (pthread_join (th, &r) != 0) - { - puts ("join failed"); - exit (1); - } - - if (r != PTHREAD_CANCELED) - { - puts ("thread not canceled"); - exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel15.c b/test/nptl/tst-cancel15.c deleted file mode 100644 index eb2d713e6..000000000 --- a/test/nptl/tst-cancel15.c +++ /dev/null @@ -1,141 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include - - -static pthread_barrier_t bar; -static sem_t sem; - - -static void -cleanup (void *arg) -{ - static int ncall; - - if (++ncall != 1) - { - puts ("second call to cleanup"); - exit (1); - } - - printf ("cleanup call #%d\n", ncall); -} - - -static void * -tf (void *arg) -{ - int e; - - pthread_cleanup_push (cleanup, NULL); - - e = pthread_barrier_wait (&bar); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("tf: 1st barrier_wait failed"); - exit (1); - } - - struct timeval tv; - (void) gettimeofday (&tv, NULL); - - struct timespec ts; - TIMEVAL_TO_TIMESPEC (&tv, &ts); - - /* Timeout in 5 seconds. */ - ts.tv_sec += 5; - - /* This call should block and be cancelable. */ - errno = 0; - e = sem_timedwait (&sem, &ts); - - pthread_cleanup_pop (0); - - printf ("sem_timedwait returned, e = %d, errno = %d\n", e, errno); - - return NULL; -} - - -static int -do_test (void) -{ - pthread_t th; - - if (pthread_barrier_init (&bar, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - if (sem_init (&sem, 0, 0) != 0) - { - puts ("sem_init failed"); - exit (1); - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - exit (1); - } - - int e = pthread_barrier_wait (&bar); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("1st barrier_wait failed"); - exit (1); - } - - /* Give the child a chance to go to sleep in sem_wait. */ - sleep (1); - - /* Check whether cancellation is honored when waiting in sem_timedwait. */ - if (pthread_cancel (th) != 0) - { - puts ("1st cancel failed"); - exit (1); - } - - void *r; - if (pthread_join (th, &r) != 0) - { - puts ("join failed"); - exit (1); - } - - if (r != PTHREAD_CANCELED) - { - puts ("thread not canceled"); - exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel16.c b/test/nptl/tst-cancel16.c deleted file mode 100644 index 6af657c47..000000000 --- a/test/nptl/tst-cancel16.c +++ /dev/null @@ -1,230 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include - - -static pthread_barrier_t b2; -static int fd; -static int called; - - -static void -cl (void *arg) -{ - called = 1; -} - - -static void * -tf (void *arg) -{ - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("child thread: barrier_wait failed"); - exit (1); - } - - pthread_cleanup_push (cl, NULL); - - /* This call should never return. */ - (void) lockf (fd, F_LOCK, 0); - - pthread_cleanup_pop (0); - - return NULL; -} - - -static int -do_test (void) -{ - char fname[] = "/tmp/cancel16XXXXXX"; - fd = mkstemp (fname); - if (fd == -1) - { - puts ("mkstemp failed"); - return 1; - } - unlink (fname); - - char mem[sizeof (pthread_barrier_t)]; - memset (mem, '\0', sizeof (mem)); - if (TEMP_FAILURE_RETRY (pwrite (fd, mem, sizeof (mem), 0)) != sizeof (mem)) - { - puts ("pwrite failed"); - return 1; - } - - void *p = mmap (NULL, sizeof (mem), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); - if (p == MAP_FAILED) - { - puts ("mmap failed"); - return 1; - } - pthread_barrier_t *b = (pthread_barrier_t *) p; - - pthread_barrierattr_t ba; - if (pthread_barrierattr_init (&ba) != 0) - { - puts ("barrierattr_init failed"); - return 1; - } - if (pthread_barrierattr_setpshared (&ba, 1) != 0) - { - puts ("barrierattr_setshared failed"); - return 1; - } - - if (pthread_barrier_init (b, &ba, 2) != 0) - { - puts ("1st barrier_init failed"); - return 1; - } - if (pthread_barrierattr_destroy (&ba) != 0) - { - puts ("barrier_destroy failed"); - return 1; - } - - pid_t pid = fork (); - if (pid == 0) - { - /* Child. Lock the file and wait. */ - if (lockf (fd, F_LOCK, 0) != 0) - { - puts ("child process: lockf failed"); - _exit (1); - } - - int r = pthread_barrier_wait (b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("child process: 1st barrier_wait failed"); - _exit (1); - } - - /* Make sure the process dies. */ - alarm (5); - - r = pthread_barrier_wait (b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("child process: 2nd barrier_wait failed"); - _exit (1); - } - - _exit (0); - } - if (pid == -1) - { - puts ("fork failed"); - return 1; - } - - int r = pthread_barrier_wait (b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("main: 1st barrier_wait failed"); - _exit (1); - } - - if (pthread_barrier_init (&b2, NULL, 2) != 0) - { - puts ("2nd barrier_init failed"); - return 1; - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - return 1; - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("main: 2nd barrier_wait failed"); - return 1; - } - - /* Delay. */ - sleep (1); - - if (pthread_cancel (th) != 0) - { - puts ("cancel failed"); - return 1; - } - - void *result; - if (pthread_join (th, &result) != 0) - { - puts ("join failed"); - return 1; - } - if (result != PTHREAD_CANCELED) - { - puts ("thread not canceled"); - return 1; - } - if (called == 0) - { - puts ("cleanup handler not called"); - return 1; - } - - r = pthread_barrier_wait (b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("main: 3rd barrier_wait failed"); - return 1; - } - - int status; - if (TEMP_FAILURE_RETRY (waitpid (pid, &status, 0)) != pid) - { - puts ("waitpid failed"); - return 1; - } - if (WEXITSTATUS (status) != 0) - { - printf ("child process exits with %d\n", WEXITSTATUS (status)); - return 1; - } - - if (lockf (fd, F_LOCK, 0) != 0) - { - puts ("main: lockf failed"); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel18.c b/test/nptl/tst-cancel18.c deleted file mode 100644 index e653119d6..000000000 --- a/test/nptl/tst-cancel18.c +++ /dev/null @@ -1,173 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static pthread_barrier_t b; - - -/* Cleanup handling test. */ -static int cl_called; - -static void -cl (void *arg) -{ - ++cl_called; -} - - -static void * -tf (void *arg) -{ - int r = pthread_barrier_wait (&b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - pthread_cleanup_push (cl, NULL); - - struct timespec ts = { .tv_sec = arg == NULL ? 10000000 : 0, .tv_nsec = 0 }; - TEMP_FAILURE_RETRY (clock_nanosleep (CLOCK_REALTIME, 0, &ts, &ts)); - - pthread_cleanup_pop (0); - - puts ("clock_nanosleep returned"); - - exit (1); -} - - -static int -do_test (void) -{ - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("1st create failed"); - return 1; - } - - int r = pthread_barrier_wait (&b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - struct timespec ts = { .tv_sec = 0, .tv_nsec = 100000000 }; - while (nanosleep (&ts, &ts) != 0) - continue; - - puts ("going to cancel in-time"); - if (pthread_cancel (th) != 0) - { - puts ("1st cancel failed"); - return 1; - } - - void *status; - if (pthread_join (th, &status) != 0) - { - puts ("1st join failed"); - return 1; - } - if (status != PTHREAD_CANCELED) - { - puts ("1st thread not canceled"); - return 1; - } - - if (cl_called == 0) - { - puts ("cleanup handler not called"); - return 1; - } - if (cl_called > 1) - { - puts ("cleanup handler called more than once"); - return 1; - } - - puts ("in-time cancellation succeeded"); - - - cl_called = 0; - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("2nd create failed"); - return 1; - } - - puts ("going to cancel early"); - if (pthread_cancel (th) != 0) - { - puts ("2nd cancel failed"); - return 1; - } - - r = pthread_barrier_wait (&b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - if (pthread_join (th, &status) != 0) - { - puts ("2nd join failed"); - return 1; - } - if (status != PTHREAD_CANCELED) - { - puts ("2nd thread not canceled"); - return 1; - } - - if (cl_called == 0) - { - printf ("cleanup handler not called\n"); - return 1; - } - if (cl_called > 1) - { - printf ("cleanup handler called more than once\n"); - return 1; - } - - puts ("early cancellation succeeded"); - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel19.c b/test/nptl/tst-cancel19.c deleted file mode 100644 index 921df3f9d..000000000 --- a/test/nptl/tst-cancel19.c +++ /dev/null @@ -1,286 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static void * -tf (void *arg) -{ - return NULL; -} - -static void -handler (int sig) -{ -} - -static void __attribute__ ((noinline)) -clobber_lots_of_regs (void) -{ -#define X1(n) long r##n = 10##n; __asm__ __volatile__ ("" : "+r" (r##n)); -#define X2(n) X1(n##0) X1(n##1) X1(n##2) X1(n##3) X1(n##4) -#define X3(n) X2(n##0) X2(n##1) X2(n##2) X2(n##3) X2(n##4) - X3(0) X3(1) X3(2) X3(3) X3(4) -#undef X1 -#define X1(n) __asm__ __volatile__ ("" : : "r" (r##n)); - X3(0) X3(1) X3(2) X3(3) X3(4) -#undef X1 -#undef X2 -#undef X3 -} - -static int -do_test (void) -{ - pthread_t th; - int old, rc; - int ret = 0; - int fd[2]; - - rc = pipe (fd); - if (rc < 0) - error (EXIT_FAILURE, errno, "couldn't create pipe"); - - rc = pthread_create (&th, NULL, tf, NULL); - if (rc) - error (EXIT_FAILURE, rc, "couldn't create thread"); - - rc = pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, &old); - if (rc) - { - error (0, rc, "1st pthread_setcanceltype failed"); - ret = 1; - } - if (old != PTHREAD_CANCEL_DEFERRED && old != PTHREAD_CANCEL_ASYNCHRONOUS) - { - error (0, 0, "1st pthread_setcanceltype returned invalid value %d", - old); - ret = 1; - } - - clobber_lots_of_regs (); - close (fd[0]); - - rc = pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, &old); - if (rc) - { - error (0, rc, "pthread_setcanceltype after close failed"); - ret = 1; - } - if (old != PTHREAD_CANCEL_DEFERRED) - { - error (0, 0, "pthread_setcanceltype after close returned invalid value %d", - old); - ret = 1; - } - - clobber_lots_of_regs (); - close (fd[1]); - - rc = pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, &old); - if (rc) - { - error (0, rc, "pthread_setcanceltype after 2nd close failed"); - ret = 1; - } - if (old != PTHREAD_CANCEL_ASYNCHRONOUS) - { - error (0, 0, "pthread_setcanceltype after 2nd close returned invalid value %d", - old); - ret = 1; - } - - struct sigaction sa = { .sa_handler = handler, .sa_flags = 0 }; - sigemptyset (&sa.sa_mask); - sigaction (SIGALRM, &sa, NULL); - - struct itimerval it; - it.it_value.tv_sec = 1; - it.it_value.tv_usec = 0; - it.it_interval = it.it_value; - setitimer (ITIMER_REAL, &it, NULL); - - clobber_lots_of_regs (); - pause (); - - memset (&it, 0, sizeof (it)); - setitimer (ITIMER_REAL, &it, NULL); - - rc = pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, &old); - if (rc) - { - error (0, rc, "pthread_setcanceltype after pause failed"); - ret = 1; - } - if (old != PTHREAD_CANCEL_DEFERRED) - { - error (0, 0, "pthread_setcanceltype after pause returned invalid value %d", - old); - ret = 1; - } - - it.it_value.tv_sec = 1; - it.it_value.tv_usec = 0; - it.it_interval = it.it_value; - setitimer (ITIMER_REAL, &it, NULL); - - clobber_lots_of_regs (); - pause (); - - memset (&it, 0, sizeof (it)); - setitimer (ITIMER_REAL, &it, NULL); - - rc = pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, &old); - if (rc) - { - error (0, rc, "pthread_setcanceltype after 2nd pause failed"); - ret = 1; - } - if (old != PTHREAD_CANCEL_ASYNCHRONOUS) - { - error (0, 0, "pthread_setcanceltype after 2nd pause returned invalid value %d", - old); - ret = 1; - } - - char fname[] = "/tmp/tst-cancel19-dir-XXXXXX\0foo/bar"; - char *enddir = strchr (fname, '\0'); - if (mkdtemp (fname) == NULL) - { - error (0, errno, "mkdtemp failed"); - ret = 1; - } - *enddir = '/'; - - clobber_lots_of_regs (); - creat (fname, 0400); - - rc = pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, &old); - if (rc) - { - error (0, rc, "pthread_setcanceltype after creat failed"); - ret = 1; - } - if (old != PTHREAD_CANCEL_DEFERRED) - { - error (0, 0, "pthread_setcanceltype after creat returned invalid value %d", - old); - ret = 1; - } - - clobber_lots_of_regs (); - creat (fname, 0400); - - rc = pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, &old); - if (rc) - { - error (0, rc, "pthread_setcanceltype after 2nd creat failed"); - ret = 1; - } - if (old != PTHREAD_CANCEL_ASYNCHRONOUS) - { - error (0, 0, "pthread_setcanceltype after 2nd creat returned invalid value %d", - old); - ret = 1; - } - - clobber_lots_of_regs (); - open (fname, O_CREAT, 0400); - - rc = pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, &old); - if (rc) - { - error (0, rc, "pthread_setcanceltype after open failed"); - ret = 1; - } - if (old != PTHREAD_CANCEL_DEFERRED) - { - error (0, 0, "pthread_setcanceltype after open returned invalid value %d", - old); - ret = 1; - } - - clobber_lots_of_regs (); - open (fname, O_CREAT, 0400); - - rc = pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, &old); - if (rc) - { - error (0, rc, "pthread_setcanceltype after 2nd open failed"); - ret = 1; - } - if (old != PTHREAD_CANCEL_ASYNCHRONOUS) - { - error (0, 0, "pthread_setcanceltype after 2nd open returned invalid value %d", - old); - ret = 1; - } - - *enddir = '\0'; - rmdir (fname); - - clobber_lots_of_regs (); - select (-1, NULL, NULL, NULL, NULL); - - rc = pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, &old); - if (rc) - { - error (0, rc, "pthread_setcanceltype after select failed"); - ret = 1; - } - if (old != PTHREAD_CANCEL_DEFERRED) - { - error (0, 0, "pthread_setcanceltype after select returned invalid value %d", - old); - ret = 1; - } - - clobber_lots_of_regs (); - select (-1, NULL, NULL, NULL, NULL); - - rc = pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, &old); - if (rc) - { - error (0, rc, "pthread_setcanceltype after 2nd select failed"); - ret = 1; - } - if (old != PTHREAD_CANCEL_ASYNCHRONOUS) - { - error (0, 0, "pthread_setcanceltype after 2nd select returned invalid value %d", - old); - ret = 1; - } - - pthread_join (th, NULL); - - return ret; -} - -#define TIMEOUT 20 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel2.c b/test/nptl/tst-cancel2.c deleted file mode 100644 index 45c9e8ea9..000000000 --- a/test/nptl/tst-cancel2.c +++ /dev/null @@ -1,99 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static int fd[2]; - - -static void * -tf (void *arg) -{ - /* The buffer size must be larger than the pipe size so that the - write blocks. */ - char buf[100000]; - - if (write (fd[1], buf, sizeof (buf)) == sizeof (buf)) - { - puts ("write succeeded"); - return (void *) 1l; - } - - return (void *) 42l; -} - - -static int -do_test (void) -{ - pthread_t th; - void *r; - struct sigaction sa; - - sa.sa_handler = SIG_IGN; - sigemptyset (&sa.sa_mask); - sa.sa_flags = 0; - - if (sigaction (SIGPIPE, &sa, NULL) != 0) - { - puts ("sigaction failed"); - return 1; - } - - if (pipe (fd) != 0) - { - puts ("pipe failed"); - return 1; - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - return 1; - } - - if (pthread_cancel (th) != 0) - { - puts ("cancel failed"); - return 1; - } - - /* This will cause the write in the child to return. */ - close (fd[0]); - - if (pthread_join (th, &r) != 0) - { - puts ("join failed"); - return 1; - } - - if (r != PTHREAD_CANCELED) - { - printf ("result is wrong: expected %p, got %p\n", PTHREAD_CANCELED, r); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel20.c b/test/nptl/tst-cancel20.c deleted file mode 100644 index 7e9199fe5..000000000 --- a/test/nptl/tst-cancel20.c +++ /dev/null @@ -1,263 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static int fd[4]; -static pthread_barrier_t b; -volatile int in_sh_body; -unsigned long cleanups; - -static void -cl (void *arg) -{ - cleanups = (cleanups << 4) | (long) arg; -} - - -static void __attribute__((noinline)) -sh_body (void) -{ - char c; - - pthread_cleanup_push (cl, (void *) 1L); - - in_sh_body = 1; - if (read (fd[2], &c, 1) == 1) - { - puts ("read succeeded"); - exit (1); - } - - pthread_cleanup_pop (0); -} - - -static void -sh (int sig) -{ - pthread_cleanup_push (cl, (void *) 2L); - sh_body (); - in_sh_body = 0; - - pthread_cleanup_pop (0); -} - - -static void __attribute__((noinline)) -tf_body (void) -{ - char c; - - pthread_cleanup_push (cl, (void *) 3L); - - int r = pthread_barrier_wait (&b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("child thread: barrier_wait failed"); - exit (1); - } - - if (read (fd[0], &c, 1) == 1) - { - puts ("read succeeded"); - exit (1); - } - - read (fd[0], &c, 1); - - pthread_cleanup_pop (0); -} - - -static void * -tf (void *arg) -{ - pthread_cleanup_push (cl, (void *) 4L); - tf_body (); - pthread_cleanup_pop (0); - return NULL; -} - - -static int -do_one_test (void) -{ - in_sh_body = 0; - cleanups = 0; - if (pipe (fd) != 0 || pipe (fd + 2) != 0) - { - puts ("pipe failed"); - return 1; - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - return 1; - } - - int r = pthread_barrier_wait (&b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("parent thread: barrier_wait failed"); - return 1; - } - - sleep (1); - - r = pthread_kill (th, SIGHUP); - if (r) - { - errno = r; - printf ("pthread_kill failed %m\n"); - return 1; - } - - while (in_sh_body == 0) - sleep (1); - - if (pthread_cancel (th) != 0) - { - puts ("cancel failed"); - return 1; - } - - /* This will cause the read in the child to return. */ - close (fd[0]); - close (fd[1]); - close (fd[2]); - close (fd[3]); - - void *ret; - if (pthread_join (th, &ret) != 0) - { - puts ("join failed"); - return 1; - } - - if (ret != PTHREAD_CANCELED) - { - puts ("result is wrong"); - return 1; - } - - if (cleanups != 0x1234L) - { - printf ("called cleanups %lx\n", cleanups); - return 1; - } - - return 0; -} - - -static int -do_test (void) -{ - stack_t ss; - ss.ss_sp = malloc (2 * SIGSTKSZ); - if (ss.ss_sp == NULL) - { - puts ("failed to allocate alternate stack"); - return 1; - } - ss.ss_flags = 0; - ss.ss_size = 2 * SIGSTKSZ; - if (sigaltstack (&ss, NULL) < 0) - { - printf ("sigaltstack failed %m\n"); - return 1; - } - - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - struct sigaction sa; - sa.sa_handler = sh; - sigemptyset (&sa.sa_mask); - sa.sa_flags = 0; - - if (sigaction (SIGHUP, &sa, NULL) != 0) - { - puts ("sigaction failed"); - return 1; - } - - puts ("sa_flags = 0 test"); - if (do_one_test ()) - return 1; - - sa.sa_handler = sh; - sigemptyset (&sa.sa_mask); - sa.sa_flags = SA_ONSTACK; - - if (sigaction (SIGHUP, &sa, NULL) != 0) - { - puts ("sigaction failed"); - return 1; - } - - puts ("sa_flags = SA_ONSTACK test"); - if (do_one_test ()) - return 1; - - sa.sa_sigaction = (void (*)(int, siginfo_t *, void *)) sh; - sigemptyset (&sa.sa_mask); - sa.sa_flags = SA_SIGINFO; - - if (sigaction (SIGHUP, &sa, NULL) != 0) - { - puts ("sigaction failed"); - return 1; - } - - puts ("sa_flags = SA_SIGINFO test"); - if (do_one_test ()) - return 1; - - sa.sa_sigaction = (void (*)(int, siginfo_t *, void *)) sh; - sigemptyset (&sa.sa_mask); - sa.sa_flags = SA_SIGINFO | SA_ONSTACK; - - if (sigaction (SIGHUP, &sa, NULL) != 0) - { - puts ("sigaction failed"); - return 1; - } - - puts ("sa_flags = SA_SIGINFO|SA_ONSTACK test"); - if (do_one_test ()) - return 1; - - return 0; -} - -#define TIMEOUT 40 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel21.c b/test/nptl/tst-cancel21.c deleted file mode 100644 index 489c18ab0..000000000 --- a/test/nptl/tst-cancel21.c +++ /dev/null @@ -1,293 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - - -static int fd[4]; -static pthread_barrier_t b; -volatile int in_sh_body; -unsigned long cleanups; - -static void -cl (void *arg) -{ - cleanups = (cleanups << 4) | (long) arg; -} - - -static void __attribute__((noinline)) -sh_body (void) -{ - char c; - - pthread_cleanup_push (cl, (void *) 1L); - - in_sh_body = 1; - if (read (fd[2], &c, 1) == 1) - { - puts ("read succeeded"); - exit (1); - } - - pthread_cleanup_pop (0); -} - - -static void -sh (int sig) -{ - pthread_cleanup_push (cl, (void *) 2L); - sh_body (); - in_sh_body = 0; - - pthread_cleanup_pop (0); -} - - -static void __attribute__((noinline)) -tf_body (void) -{ - char c; - - pthread_cleanup_push (cl, (void *) 3L); - - int r = pthread_barrier_wait (&b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("child thread: barrier_wait failed"); - exit (1); - } - - if (read (fd[0], &c, 1) == 1) - { - puts ("read succeeded"); - exit (1); - } - - read (fd[0], &c, 1); - - pthread_cleanup_pop (0); -} - - -static void * -tf (void *arg) -{ - pthread_t th = (pthread_t) arg; - - int r = pthread_barrier_wait (&b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("parent thread: barrier_wait failed"); - exit (1); - } - - sleep (1); - - r = pthread_kill (th, SIGHUP); - if (r) - { - errno = r; - printf ("pthread_kill failed %m\n"); - exit (1); - } - - while (in_sh_body == 0) - sleep (1); - - if (pthread_cancel (th) != 0) - { - puts ("cancel failed"); - exit (1); - } - - /* This will cause the read in the initial thread to return. */ - close (fd[0]); - close (fd[1]); - close (fd[2]); - close (fd[3]); - - void *ret; - if (pthread_join (th, &ret) != 0) - { - puts ("join failed"); - exit (1); - } - - if (ret != PTHREAD_CANCELED) - { - puts ("result is wrong"); - exit (1); - } - - if (cleanups != 0x1234L) - { - printf ("called cleanups %lx\n", cleanups); - exit (1); - } - - if (pthread_barrier_destroy (&b)) - { - puts ("barrier destroy failed"); - exit (1); - } - - exit (0); -} - - -static int -do_one_test (void) -{ - in_sh_body = 0; - - pid_t pid = fork (); - - if (pid == -1) - { - printf ("fork failed: %m\n"); - return 1; - } - - if (pid) - { - int status; - if (waitpid (pid, &status, 0) < 0) - { - printf ("waitpid failed %m\n"); - return 1; - } - - return !WIFEXITED (status) || WEXITSTATUS (status); - } - - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - cleanups = 0; - if (pipe (fd) != 0 || pipe (fd + 2) != 0) - { - puts ("pipe failed"); - exit (1); - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, (void *) pthread_self ()) != 0) - { - puts ("create failed"); - exit (1); - } - - pthread_cleanup_push (cl, (void *) 4L); - tf_body (); - pthread_cleanup_pop (0); - exit (1); -} - - -static int -do_test (void) -{ - stack_t ss; - ss.ss_sp = malloc (2 * SIGSTKSZ); - if (ss.ss_sp == NULL) - { - puts ("failed to allocate alternate stack"); - return 1; - } - ss.ss_flags = 0; - ss.ss_size = 2 * SIGSTKSZ; - if (sigaltstack (&ss, NULL) < 0) - { - printf ("sigaltstack failed %m\n"); - return 1; - } - - struct sigaction sa; - sa.sa_handler = sh; - sigemptyset (&sa.sa_mask); - sa.sa_flags = 0; - - if (sigaction (SIGHUP, &sa, NULL) != 0) - { - puts ("sigaction failed"); - return 1; - } - - puts ("sa_flags = 0 test"); - if (do_one_test ()) - return 1; - - sa.sa_handler = sh; - sigemptyset (&sa.sa_mask); - sa.sa_flags = SA_ONSTACK; - - if (sigaction (SIGHUP, &sa, NULL) != 0) - { - puts ("sigaction failed"); - return 1; - } - - puts ("sa_flags = SA_ONSTACK test"); - if (do_one_test ()) - return 1; - - sa.sa_sigaction = (void (*)(int, siginfo_t *, void *)) sh; - sigemptyset (&sa.sa_mask); - sa.sa_flags = SA_SIGINFO; - - if (sigaction (SIGHUP, &sa, NULL) != 0) - { - puts ("sigaction failed"); - return 1; - } - - puts ("sa_flags = SA_SIGINFO test"); - if (do_one_test ()) - return 1; - - sa.sa_sigaction = (void (*)(int, siginfo_t *, void *)) sh; - sigemptyset (&sa.sa_mask); - sa.sa_flags = SA_SIGINFO | SA_ONSTACK; - - if (sigaction (SIGHUP, &sa, NULL) != 0) - { - puts ("sigaction failed"); - return 1; - } - - puts ("sa_flags = SA_SIGINFO|SA_ONSTACK test"); - if (do_one_test ()) - return 1; - - return 0; -} - -#define TIMEOUT 40 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel22.c b/test/nptl/tst-cancel22.c deleted file mode 100644 index 8febbf0e1..000000000 --- a/test/nptl/tst-cancel22.c +++ /dev/null @@ -1,121 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - -pthread_barrier_t b; -int seen; - -static void * -tf (void *arg) -{ - int i; - int old; - int r = pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &old); - if (r != 0) - { - puts ("setcancelstate failed"); - exit (1); - } - - r = pthread_barrier_wait (&b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - for (i = 0; i < 10; ++i) - { - struct timespec ts = { .tv_sec = 0, .tv_nsec = 100000000 }; - TEMP_FAILURE_RETRY (nanosleep (&ts, &ts)); - } - - seen = 1; - pthread_setcancelstate (old, NULL); - - struct timespec ts = { .tv_sec = 0, .tv_nsec = 100000000 }; - TEMP_FAILURE_RETRY (nanosleep (&ts, &ts)); - - exit (1); -} - - -static int -do_test (void) -{ - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier init failed"); - return 1; - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("thread creation failed"); - return 1; - } - - int r = pthread_barrier_wait (&b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - return 1; - } - - if (pthread_cancel (th) != 0) - { - puts ("cancel failed"); - return 1; - } - - void *status; - if (pthread_join (th, &status) != 0) - { - puts ("join failed"); - return 1; - } - if (status != PTHREAD_CANCELED) - { - puts ("thread not canceled"); - return 1; - } - - if (pthread_barrier_destroy (&b) != 0) - { - puts ("barrier_destroy failed"); - return 1; - } - - if (seen != 1) - { - puts ("thread cancelled when PTHREAD_CANCEL_DISABLED"); - return 1; - } - - return 0; -} - -#define TIMEOUT 5 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel23.c b/test/nptl/tst-cancel23.c deleted file mode 100644 index 211168748..000000000 --- a/test/nptl/tst-cancel23.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel22.c" diff --git a/test/nptl/tst-cancel25.c b/test/nptl/tst-cancel25.c deleted file mode 100644 index 00b99ad55..000000000 --- a/test/nptl/tst-cancel25.c +++ /dev/null @@ -1,171 +0,0 @@ -#include -#include -#include -#include - - -static pthread_barrier_t b; -static pthread_t th2; - - -static void * -tf2 (void *arg) -{ - sigset_t mask; - if (pthread_sigmask (SIG_SETMASK, NULL, &mask) != 0) - { - puts ("pthread_sigmask failed"); - exit (1); - } - if (sigismember (&mask, SIGCANCEL)) - { - puts ("SIGCANCEL blocked in new thread"); - exit (1); - } - - /* Sync with the main thread so that we do not test anything else. */ - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - while (1) - { - /* Just a cancelable call. */ - struct timespec ts = { 10000, 0 }; - nanosleep (&ts, 0); - } - - return NULL; -} - - -static void -unwhand (void *arg) -{ - if (pthread_create (&th2, NULL, tf2, NULL) != 0) - { - puts ("unwhand: create failed"); - exit (1); - } -} - - -static void * -tf (void *arg) -{ - pthread_cleanup_push (unwhand, NULL); - - /* Sync with the main thread so that we do not test anything else. */ - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - while (1) - { - /* Just a cancelable call. */ - struct timespec ts = { 10000, 0 }; - nanosleep (&ts, 0); - } - - pthread_cleanup_pop (0); - - return NULL; -} - - -static int -do_test (void) -{ - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - pthread_t th1; - if (pthread_create (&th1, NULL, tf, NULL) != 0) - { - puts ("create failed"); - return 1; - } - - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - return 1; - } - - /* Make sure tf1 enters nanosleep. */ - struct timespec ts = { 0, 500000000 }; - while (nanosleep (&ts, &ts) != 0) - ; - - if (pthread_cancel (th1) != 0) - { - puts ("1st cancel failed"); - return 1; - } - - void *res; - if (pthread_join (th1, &res) != 0) - { - puts ("1st join failed"); - return 1; - } - if (res != PTHREAD_CANCELED) - { - puts ("1st thread not canceled"); - return 1; - } - - e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - return 1; - } - - /* Make sure tf2 enters nanosleep. */ - ts.tv_sec = 0; - ts.tv_nsec = 500000000; - while (nanosleep (&ts, &ts) != 0) - ; - - puts ("calling pthread_cancel the second time"); - if (pthread_cancel (th2) != 0) - { - puts ("2nd cancel failed"); - return 1; - } - - puts ("calling pthread_join the second time"); - if (pthread_join (th2, &res) != 0) - { - puts ("2nd join failed"); - return 1; - } - if (res != PTHREAD_CANCELED) - { - puts ("2nd thread not canceled"); - return 1; - } - - if (pthread_barrier_destroy (&b) != 0) - { - puts ("barrier_destroy failed"); - return 0; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#define TIMEOUT 4 -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel3.c b/test/nptl/tst-cancel3.c deleted file mode 100644 index e1c111d29..000000000 --- a/test/nptl/tst-cancel3.c +++ /dev/null @@ -1,97 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static int fd[2]; - - -static void * -tf (void *arg) -{ - char buf[100]; - - if (read (fd[0], buf, sizeof (buf)) == sizeof (buf)) - { - puts ("read succeeded"); - return (void *) 1l; - } - - return NULL; -} - - -static int -do_test (void) -{ - pthread_t th; - void *r; - struct sigaction sa; - - sa.sa_handler = SIG_IGN; - sigemptyset (&sa.sa_mask); - sa.sa_flags = 0; - - if (sigaction (SIGPIPE, &sa, NULL) != 0) - { - puts ("sigaction failed"); - return 1; - } - - if (pipe (fd) != 0) - { - puts ("pipe failed"); - return 1; - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - return 1; - } - - if (pthread_cancel (th) != 0) - { - puts ("cancel failed"); - return 1; - } - - /* This will cause the read in the child to return. */ - close (fd[0]); - - if (pthread_join (th, &r) != 0) - { - puts ("join failed"); - return 1; - } - - if (r != PTHREAD_CANCELED) - { - puts ("result is wrong"); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel4.c b/test/nptl/tst-cancel4.c deleted file mode 100644 index ecaf297cc..000000000 --- a/test/nptl/tst-cancel4.c +++ /dev/null @@ -1,2393 +0,0 @@ -/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -/* NOTE: this tests functionality beyond POSIX. POSIX does not allow - exit to be called more than once. */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "pthreadP.h" - - -/* Since STREAMS are not supported in the standard Linux kernel and - there we don't advertise STREAMS as supported is no need to test - the STREAMS related functions. This affects - getmsg() getpmsg() putmsg() - putpmsg() - - lockf() and fcntl() are tested in tst-cancel16. - - pthread_join() is tested in tst-join5. - - pthread_testcancel()'s only purpose is to allow cancellation. This - is tested in several places. - - sem_wait() and sem_timedwait() are checked in tst-cancel1[2345] tests. - - mq_send(), mq_timedsend(), mq_receive() and mq_timedreceive() are checked - in tst-mqueue8{,x} tests. - - aio_suspend() is tested in tst-cancel17. - - clock_nanosleep() is tested in tst-cancel18. -*/ - -/* Pipe descriptors. */ -static int fds[2]; - -/* Temporary file descriptor, to be closed after each round. */ -static int tempfd = -1; -static int tempfd2 = -1; -/* Name of temporary file to be removed after each round. */ -static char *tempfname; -/* Temporary message queue. */ -static int tempmsg = -1; - -/* Often used barrier for two threads. */ -static pthread_barrier_t b2; - - -#ifndef IPC_ADDVAL -# define IPC_ADDVAL 0 -#endif - -/* The WRITE_BUFFER_SIZE value needs to be chosen such that if we set - the socket send buffer size to '1', a write of this size on that - socket will block. - - The Linux kernel imposes a minimum send socket buffer size which - has changed over the years. As of Linux 3.10 the value is: - - 2 * (2048 + SKB_DATA_ALIGN(sizeof(struct sk_buff))) - - which is attempting to make sure that with standard MTUs, - TCP can always queue up at least 2 full sized packets. - - Furthermore, there is logic in the socket send paths that - will allow one more packet (of any size) to be queued up as - long as some socket buffer space remains. Blocking only - occurs when we try to queue up a new packet and the send - buffer space has already been fully consumed. - - Therefore we must set this value to the largest possible value of - the formula above (and since it depends upon the size of "struct - sk_buff", it is dependent upon machine word size etc.) plus some - slack space. */ - -#define WRITE_BUFFER_SIZE 16384 - -/* Cleanup handling test. */ -static int cl_called; - -static void -cl (void *arg) -{ - ++cl_called; -} - - - -static void * -tf_read (void *arg) -{ - int fd; - int r; - - if (arg == NULL) - fd = fds[0]; - else - { - char fname[] = "/tmp/tst-cancel4-fd-XXXXXX"; - tempfd = fd = mkstemp (fname); - if (fd == -1) - printf ("%s: mkstemp failed\n", __FUNCTION__); - unlink (fname); - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - ssize_t s; - pthread_cleanup_push (cl, NULL); - - char buf[100]; - s = read (fd, buf, sizeof (buf)); - - pthread_cleanup_pop (0); - - printf ("%s: read returns with %zd\n", __FUNCTION__, s); - - exit (1); -} - - -static void * -tf_readv (void *arg) -{ - int fd; - int r; - - if (arg == NULL) - fd = fds[0]; - else - { - char fname[] = "/tmp/tst-cancel4-fd-XXXXXX"; - tempfd = fd = mkstemp (fname); - if (fd == -1) - printf ("%s: mkstemp failed\n", __FUNCTION__); - unlink (fname); - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - ssize_t s; - pthread_cleanup_push (cl, NULL); - - char buf[100]; - struct iovec iov[1] = { [0] = { .iov_base = buf, .iov_len = sizeof (buf) } }; - s = readv (fd, iov, 1); - - pthread_cleanup_pop (0); - - printf ("%s: readv returns with %zd\n", __FUNCTION__, s); - - exit (1); -} - - -static void * -tf_write (void *arg) -{ - int fd; - int r; - - if (arg == NULL) - fd = fds[1]; - else - { - char fname[] = "/tmp/tst-cancel4-fd-XXXXXX"; - tempfd = fd = mkstemp (fname); - if (fd == -1) - printf ("%s: mkstemp failed\n", __FUNCTION__); - unlink (fname); - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - ssize_t s; - pthread_cleanup_push (cl, NULL); - - char buf[WRITE_BUFFER_SIZE]; - memset (buf, '\0', sizeof (buf)); - s = write (fd, buf, sizeof (buf)); - - pthread_cleanup_pop (0); - - printf ("%s: write returns with %zd\n", __FUNCTION__, s); - - exit (1); -} - - -static void * -tf_writev (void *arg) -{ - int fd; - int r; - - if (arg == NULL) - fd = fds[1]; - else - { - char fname[] = "/tmp/tst-cancel4-fd-XXXXXX"; - tempfd = fd = mkstemp (fname); - if (fd == -1) - printf ("%s: mkstemp failed\n", __FUNCTION__); - unlink (fname); - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - ssize_t s; - pthread_cleanup_push (cl, NULL); - - char buf[WRITE_BUFFER_SIZE]; - memset (buf, '\0', sizeof (buf)); - struct iovec iov[1] = { [0] = { .iov_base = buf, .iov_len = sizeof (buf) } }; - s = writev (fd, iov, 1); - - pthread_cleanup_pop (0); - - printf ("%s: writev returns with %zd\n", __FUNCTION__, s); - - exit (1); -} - -/* sleep is not early cancelable, disable for now */ -#if 0 -static void * -tf_sleep (void *arg) -{ - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - if (arg != NULL) - { - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - pthread_cleanup_push (cl, NULL); - - sleep (arg == NULL ? 1000000 : 0); - - pthread_cleanup_pop (0); - - printf ("%s: sleep returns\n", __FUNCTION__); - - exit (1); -} -#endif - -static void * -tf_usleep (void *arg) -{ - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - if (arg != NULL) - { - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - pthread_cleanup_push (cl, NULL); - - usleep (arg == NULL ? (useconds_t) ULONG_MAX : 0); - - pthread_cleanup_pop (0); - - printf ("%s: usleep returns\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_nanosleep (void *arg) -{ - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - if (arg != NULL) - { - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - pthread_cleanup_push (cl, NULL); - - struct timespec ts = { .tv_sec = arg == NULL ? 10000000 : 0, .tv_nsec = 0 }; - TEMP_FAILURE_RETRY (nanosleep (&ts, &ts)); - - pthread_cleanup_pop (0); - - printf ("%s: nanosleep returns\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_select (void *arg) -{ - int fd; - int r; - - if (arg == NULL) - fd = fds[0]; - else - { - char fname[] = "/tmp/tst-cancel4-fd-XXXXXX"; - tempfd = fd = mkstemp (fname); - if (fd == -1) - printf ("%s: mkstemp failed\n", __FUNCTION__); - unlink (fname); - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - fd_set rfs; - FD_ZERO (&rfs); - FD_SET (fd, &rfs); - - int s; - pthread_cleanup_push (cl, NULL); - - s = select (fd + 1, &rfs, NULL, NULL, NULL); - - pthread_cleanup_pop (0); - - printf ("%s: select returns with %d (%s)\n", __FUNCTION__, s, - strerror (errno)); - - exit (1); -} - - -static void * -tf_pselect (void *arg) -{ - int fd; - int r; - - if (arg == NULL) - fd = fds[0]; - else - { - char fname[] = "/tmp/tst-cancel4-fd-XXXXXX"; - tempfd = fd = mkstemp (fname); - if (fd == -1) - printf ("%s: mkstemp failed\n", __FUNCTION__); - unlink (fname); - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - fd_set rfs; - FD_ZERO (&rfs); - FD_SET (fd, &rfs); - - int s; - pthread_cleanup_push (cl, NULL); - - s = pselect (fd + 1, &rfs, NULL, NULL, NULL, NULL); - - pthread_cleanup_pop (0); - - printf ("%s: pselect returns with %d (%s)\n", __FUNCTION__, s, - strerror (errno)); - - exit (1); -} - - -static void * -tf_poll (void *arg) -{ - int fd; - int r; - - if (arg == NULL) - fd = fds[0]; - else - { - char fname[] = "/tmp/tst-cancel4-fd-XXXXXX"; - tempfd = fd = mkstemp (fname); - if (fd == -1) - printf ("%s: mkstemp failed\n", __FUNCTION__); - unlink (fname); - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - struct pollfd rfs[1] = { [0] = { .fd = fd, .events = POLLIN } }; - - int s; - pthread_cleanup_push (cl, NULL); - - s = poll (rfs, 1, -1); - - pthread_cleanup_pop (0); - - printf ("%s: poll returns with %d (%s)\n", __FUNCTION__, s, - strerror (errno)); - - exit (1); -} - - -static void * -tf_ppoll (void *arg) -{ - int fd; - int r; - - if (arg == NULL) - fd = fds[0]; - else - { - char fname[] = "/tmp/tst-cancel4-fd-XXXXXX"; - tempfd = fd = mkstemp (fname); - if (fd == -1) - printf ("%s: mkstemp failed\n", __FUNCTION__); - unlink (fname); - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - struct pollfd rfs[1] = { [0] = { .fd = fd, .events = POLLIN } }; - - int s; - pthread_cleanup_push (cl, NULL); - - s = ppoll (rfs, 1, NULL, NULL); - - pthread_cleanup_pop (0); - - printf ("%s: ppoll returns with %d (%s)\n", __FUNCTION__, s, - strerror (errno)); - - exit (1); -} - - -static void * -tf_wait (void *arg) -{ - pid_t pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - exit (1); - } - - if (pid == 0) - { - /* Make the program disappear after a while. */ - if (arg == NULL) - sleep (10); - exit (0); - } - - int r; - if (arg != NULL) - { - struct timespec ts = { .tv_sec = 0, .tv_nsec = 100000000 }; - while (nanosleep (&ts, &ts) != 0) - continue; - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - int s; - pthread_cleanup_push (cl, NULL); - - s = wait (NULL); - - pthread_cleanup_pop (0); - - printf ("%s: wait returns with %d (%s)\n", __FUNCTION__, s, - strerror (errno)); - - exit (1); -} - - -static void * -tf_waitpid (void *arg) -{ - - pid_t pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - exit (1); - } - - if (pid == 0) - { - /* Make the program disappear after a while. */ - if (arg == NULL) - sleep (10); - exit (0); - } - - int r; - if (arg != NULL) - { - struct timespec ts = { .tv_sec = 0, .tv_nsec = 100000000 }; - while (nanosleep (&ts, &ts) != 0) - continue; - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - int s; - pthread_cleanup_push (cl, NULL); - - s = waitpid (-1, NULL, 0); - - pthread_cleanup_pop (0); - - printf ("%s: waitpid returns with %d (%s)\n", __FUNCTION__, s, - strerror (errno)); - - exit (1); -} - - -static void * -tf_waitid (void *arg) -{ - pid_t pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - exit (1); - } - - if (pid == 0) - { - /* Make the program disappear after a while. */ - if (arg == NULL) - sleep (10); - exit (0); - } - - int r; - if (arg != NULL) - { - struct timespec ts = { .tv_sec = 0, .tv_nsec = 100000000 }; - while (nanosleep (&ts, &ts) != 0) - continue; - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - int s; - pthread_cleanup_push (cl, NULL); - -#ifndef WEXITED -# define WEXITED 0 -#endif - siginfo_t si; - s = waitid (P_PID, pid, &si, WEXITED); - - pthread_cleanup_pop (0); - - printf ("%s: waitid returns with %d (%s)\n", __FUNCTION__, s, - strerror (errno)); - - exit (1); -} - - -static void * -tf_sigpause (void *arg) -{ - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - if (arg != NULL) - { - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - pthread_cleanup_push (cl, NULL); - - sigpause (SIGCANCEL); - - pthread_cleanup_pop (0); - - printf ("%s: sigpause returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_sigsuspend (void *arg) -{ - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - if (arg != NULL) - { - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - pthread_cleanup_push (cl, NULL); - - /* Just for fun block all signals. */ - sigset_t mask; - sigfillset (&mask); - sigsuspend (&mask); - - pthread_cleanup_pop (0); - - printf ("%s: sigsuspend returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_sigwait (void *arg) -{ - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - if (arg != NULL) - { - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - /* Block SIGUSR1. */ - sigset_t mask; - sigemptyset (&mask); - sigaddset (&mask, SIGUSR1); - if (pthread_sigmask (SIG_BLOCK, &mask, NULL) != 0) - { - printf ("%s: pthread_sigmask failed\n", __FUNCTION__); - exit (1); - } - - int sig; - pthread_cleanup_push (cl, NULL); - - /* Wait for SIGUSR1. */ - sigwait (&mask, &sig); - - pthread_cleanup_pop (0); - - printf ("%s: sigwait returned with signal %d\n", __FUNCTION__, sig); - - exit (1); -} - - -static void * -tf_sigwaitinfo (void *arg) -{ - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - if (arg != NULL) - { - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - /* Block SIGUSR1. */ - sigset_t mask; - sigemptyset (&mask); - sigaddset (&mask, SIGUSR1); - if (pthread_sigmask (SIG_BLOCK, &mask, NULL) != 0) - { - printf ("%s: pthread_sigmask failed\n", __FUNCTION__); - exit (1); - } - - siginfo_t info; - pthread_cleanup_push (cl, NULL); - - /* Wait for SIGUSR1. */ - sigwaitinfo (&mask, &info); - - pthread_cleanup_pop (0); - - printf ("%s: sigwaitinfo returned with signal %d\n", __FUNCTION__, - info.si_signo); - - exit (1); -} - - -static void * -tf_sigtimedwait (void *arg) -{ - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - if (arg != NULL) - { - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - /* Block SIGUSR1. */ - sigset_t mask; - sigemptyset (&mask); - sigaddset (&mask, SIGUSR1); - if (pthread_sigmask (SIG_BLOCK, &mask, NULL) != 0) - { - printf ("%s: pthread_sigmask failed\n", __FUNCTION__); - exit (1); - } - - /* Wait for SIGUSR1. */ - siginfo_t info; - struct timespec ts = { .tv_sec = 60, .tv_nsec = 0 }; - pthread_cleanup_push (cl, NULL); - - sigtimedwait (&mask, &info, &ts); - - pthread_cleanup_pop (0); - - printf ("%s: sigtimedwait returned with signal %d\n", __FUNCTION__, - info.si_signo); - - exit (1); -} - - -static void * -tf_pause (void *arg) -{ - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - if (arg != NULL) - { - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - pthread_cleanup_push (cl, NULL); - - pause (); - - pthread_cleanup_pop (0); - - printf ("%s: pause returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_accept (void *arg) -{ - struct sockaddr_un sun; - /* To test a non-blocking accept call we make the call file by using - a datagrame socket. */ - int pf = arg == NULL ? SOCK_STREAM : SOCK_DGRAM; - - tempfd = socket (AF_UNIX, pf, 0); - if (tempfd == -1) - { - printf ("%s: socket call failed\n", __FUNCTION__); - exit (1); - } - - int tries = 0; - do - { - if (++tries > 10) - { - printf ("%s: too many unsuccessful bind calls\n", __FUNCTION__); - /* prevent endless loop, when bind fails forever */ - exit (1); - } - - strcpy (sun.sun_path, "/tmp/tst-cancel4-socket-1-XXXXXX"); - if (mktemp (sun.sun_path) == NULL) - { - printf ("%s: cannot generate temp file name\n", __FUNCTION__); - exit (1); - } - sun.sun_family = AF_UNIX; - } - while (bind (tempfd, (struct sockaddr *) &sun, - offsetof (struct sockaddr_un, sun_path) - + strlen (sun.sun_path) + 1) != 0); - - unlink (sun.sun_path); - - listen (tempfd, 5); - - socklen_t len = sizeof (sun); - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - if (arg != NULL) - { - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - pthread_cleanup_push (cl, NULL); - - accept (tempfd, (struct sockaddr *) &sun, &len); - - pthread_cleanup_pop (0); - - printf ("%s: accept returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_send (void *arg) -{ - struct sockaddr_un sun; - - tempfd = socket (AF_UNIX, SOCK_STREAM, 0); - if (tempfd == -1) - { - printf ("%s: first socket call failed\n", __FUNCTION__); - exit (1); - } - - int tries = 0; - do - { - if (++tries > 10) - { - printf ("%s: too many unsuccessful bind calls\n", __FUNCTION__); - exit (1); - } - - strcpy (sun.sun_path, "/tmp/tst-cancel4-socket-2-XXXXXX"); - if (mktemp (sun.sun_path) == NULL) - { - printf ("%s: cannot generate temp file name\n", __FUNCTION__); - exit (1); - } - sun.sun_family = AF_UNIX; - } - while (bind (tempfd, (struct sockaddr *) &sun, - offsetof (struct sockaddr_un, sun_path) - + strlen (sun.sun_path) + 1) != 0); - - listen (tempfd, 5); - - tempfd2 = socket (AF_UNIX, SOCK_STREAM, 0); - if (tempfd2 == -1) - { - printf ("%s: second socket call failed\n", __FUNCTION__); - exit (1); - } - - if (connect (tempfd2, (struct sockaddr *) &sun, sizeof (sun)) != 0) - { - printf ("%s: connect failed\n", __FUNCTION__); - exit(1); - } - - unlink (sun.sun_path); - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - if (arg != NULL) - { - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - pthread_cleanup_push (cl, NULL); - - /* Very large block, so that the send call blocks. */ - char mem[700000]; - - send (tempfd2, mem, arg == NULL ? sizeof (mem) : 1, 0); - - pthread_cleanup_pop (0); - - printf ("%s: send returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_recv (void *arg) -{ - struct sockaddr_un sun; - - tempfd = socket (AF_UNIX, SOCK_STREAM, 0); - if (tempfd == -1) - { - printf ("%s: first socket call failed\n", __FUNCTION__); - exit (1); - } - - int tries = 0; - do - { - if (++tries > 10) - { - printf ("%s: too many unsuccessful bind calls\n", __FUNCTION__); - exit (1); - } - - strcpy (sun.sun_path, "/tmp/tst-cancel4-socket-3-XXXXXX"); - if (mktemp (sun.sun_path) == NULL) - { - printf ("%s: cannot generate temp file name\n", __FUNCTION__); - exit (1); - } - sun.sun_family = AF_UNIX; - } - while (bind (tempfd, (struct sockaddr *) &sun, - offsetof (struct sockaddr_un, sun_path) - + strlen (sun.sun_path) + 1) != 0); - - listen (tempfd, 5); - - tempfd2 = socket (AF_UNIX, SOCK_STREAM, 0); - if (tempfd2 == -1) - { - printf ("%s: second socket call failed\n", __FUNCTION__); - exit (1); - } - - if (connect (tempfd2, (struct sockaddr *) &sun, sizeof (sun)) != 0) - { - printf ("%s: connect failed\n", __FUNCTION__); - exit(1); - } - - unlink (sun.sun_path); - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - if (arg != NULL) - { - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - pthread_cleanup_push (cl, NULL); - - char mem[70]; - - recv (tempfd2, mem, arg == NULL ? sizeof (mem) : 0, 0); - - pthread_cleanup_pop (0); - - printf ("%s: recv returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_recvfrom (void *arg) -{ - struct sockaddr_un sun; - - tempfd = socket (AF_UNIX, SOCK_DGRAM, 0); - if (tempfd == -1) - { - printf ("%s: first socket call failed\n", __FUNCTION__); - exit (1); - } - - int tries = 0; - do - { - if (++tries > 10) - { - printf ("%s: too many unsuccessful bind calls\n", __FUNCTION__); - exit (1); - } - - strcpy (sun.sun_path, "/tmp/tst-cancel4-socket-4-XXXXXX"); - if (mktemp (sun.sun_path) == NULL) - { - printf ("%s: cannot generate temp file name\n", __FUNCTION__); - exit (1); - } - sun.sun_family = AF_UNIX; - } - while (bind (tempfd, (struct sockaddr *) &sun, - offsetof (struct sockaddr_un, sun_path) - + strlen (sun.sun_path) + 1) != 0); - - tempfname = strdup (sun.sun_path); - - tempfd2 = socket (AF_UNIX, SOCK_DGRAM, 0); - if (tempfd2 == -1) - { - printf ("%s: second socket call failed\n", __FUNCTION__); - exit (1); - } - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - if (arg != NULL) - { - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - pthread_cleanup_push (cl, NULL); - - char mem[70]; - socklen_t len = sizeof (sun); - - recvfrom (tempfd2, mem, arg == NULL ? sizeof (mem) : 0, 0, - (struct sockaddr *) &sun, &len); - - pthread_cleanup_pop (0); - - printf ("%s: recvfrom returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_recvmsg (void *arg) -{ - struct sockaddr_un sun; - - tempfd = socket (AF_UNIX, SOCK_DGRAM, 0); - if (tempfd == -1) - { - printf ("%s: first socket call failed\n", __FUNCTION__); - exit (1); - } - - int tries = 0; - do - { - if (++tries > 10) - { - printf ("%s: too many unsuccessful bind calls\n", __FUNCTION__); - exit (1); - } - - strcpy (sun.sun_path, "/tmp/tst-cancel4-socket-5-XXXXXX"); - if (mktemp (sun.sun_path) == NULL) - { - printf ("%s: cannot generate temp file name\n", __FUNCTION__); - exit (1); - } - sun.sun_family = AF_UNIX; - } - while (bind (tempfd, (struct sockaddr *) &sun, - offsetof (struct sockaddr_un, sun_path) - + strlen (sun.sun_path) + 1) != 0); - - tempfname = strdup (sun.sun_path); - - tempfd2 = socket (AF_UNIX, SOCK_DGRAM, 0); - if (tempfd2 == -1) - { - printf ("%s: second socket call failed\n", __FUNCTION__); - exit (1); - } - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - if (arg != NULL) - { - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - pthread_cleanup_push (cl, NULL); - - char mem[70]; - struct iovec iov[1]; - iov[0].iov_base = mem; - iov[0].iov_len = arg == NULL ? sizeof (mem) : 0; - - struct msghdr m; - m.msg_name = &sun; - m.msg_namelen = sizeof (sun); - m.msg_iov = iov; - m.msg_iovlen = 1; - m.msg_control = NULL; - m.msg_controllen = 0; - - recvmsg (tempfd2, &m, 0); - - pthread_cleanup_pop (0); - - printf ("%s: recvmsg returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_open (void *arg) -{ - if (arg == NULL) - // XXX If somebody can provide a portable test case in which open() - // blocks we can enable this test to run in both rounds. - abort (); - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - pthread_cleanup_push (cl, NULL); - - open ("Makefile", O_RDONLY); - - pthread_cleanup_pop (0); - - printf ("%s: open returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_close (void *arg) -{ - if (arg == NULL) - // XXX If somebody can provide a portable test case in which close() - // blocks we can enable this test to run in both rounds. - abort (); - - char fname[] = "/tmp/tst-cancel-fd-XXXXXX"; - tempfd = mkstemp (fname); - if (tempfd == -1) - { - printf ("%s: mkstemp failed\n", __FUNCTION__); - exit (1); - } - unlink (fname); - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - pthread_cleanup_push (cl, NULL); - - close (tempfd); - - pthread_cleanup_pop (0); - - printf ("%s: close returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_pread (void *arg) -{ - if (arg == NULL) - // XXX If somebody can provide a portable test case in which pread() - // blocks we can enable this test to run in both rounds. - abort (); - - tempfd = open ("Makefile", O_RDONLY); - if (tempfd == -1) - { - printf ("%s: cannot open Makefile\n", __FUNCTION__); - exit (1); - } - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - pthread_cleanup_push (cl, NULL); - - char mem[10]; - pread (tempfd, mem, sizeof (mem), 0); - - pthread_cleanup_pop (0); - - printf ("%s: pread returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_pwrite (void *arg) -{ - if (arg == NULL) - // XXX If somebody can provide a portable test case in which pwrite() - // blocks we can enable this test to run in both rounds. - abort (); - - char fname[] = "/tmp/tst-cancel4-fd-XXXXXX"; - tempfd = mkstemp (fname); - if (tempfd == -1) - { - printf ("%s: mkstemp failed\n", __FUNCTION__); - exit (1); - } - unlink (fname); - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - pthread_cleanup_push (cl, NULL); - - char mem[10]; - pwrite (tempfd, mem, sizeof (mem), 0); - - pthread_cleanup_pop (0); - - printf ("%s: pwrite returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_fsync (void *arg) -{ - if (arg == NULL) - // XXX If somebody can provide a portable test case in which fsync() - // blocks we can enable this test to run in both rounds. - abort (); - - tempfd = open ("Makefile", O_RDONLY); - if (tempfd == -1) - { - printf ("%s: cannot open Makefile\n", __FUNCTION__); - exit (1); - } - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - pthread_cleanup_push (cl, NULL); - - fsync (tempfd); - - pthread_cleanup_pop (0); - - printf ("%s: fsync returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_fdatasync (void *arg) -{ - if (arg == NULL) - // XXX If somebody can provide a portable test case in which fdatasync() - // blocks we can enable this test to run in both rounds. - abort (); - - tempfd = open ("Makefile", O_RDONLY); - if (tempfd == -1) - { - printf ("%s: cannot open Makefile\n", __FUNCTION__); - exit (1); - } - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - pthread_cleanup_push (cl, NULL); - - fdatasync (tempfd); - - pthread_cleanup_pop (0); - - printf ("%s: fdatasync returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_msync (void *arg) -{ - if (arg == NULL) - // XXX If somebody can provide a portable test case in which msync() - // blocks we can enable this test to run in both rounds. - abort (); - - tempfd = open ("Makefile", O_RDONLY); - if (tempfd == -1) - { - printf ("%s: cannot open Makefile\n", __FUNCTION__); - exit (1); - } - void *p = mmap (NULL, 10, PROT_READ, MAP_SHARED, tempfd, 0); - if (p == MAP_FAILED) - { - printf ("%s: mmap failed\n", __FUNCTION__); - exit (1); - } - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - pthread_cleanup_push (cl, NULL); - - msync (p, 10, 0); - - pthread_cleanup_pop (0); - - printf ("%s: msync returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_sendto (void *arg) -{ - if (arg == NULL) - // XXX If somebody can provide a portable test case in which sendto() - // blocks we can enable this test to run in both rounds. - abort (); - - struct sockaddr_un sun; - - tempfd = socket (AF_UNIX, SOCK_DGRAM, 0); - if (tempfd == -1) - { - printf ("%s: first socket call failed\n", __FUNCTION__); - exit (1); - } - - int tries = 0; - do - { - if (++tries > 10) - { - printf ("%s: too many unsuccessful bind calls\n", __FUNCTION__); - exit (1); - } - - strcpy (sun.sun_path, "/tmp/tst-cancel4-socket-6-XXXXXX"); - if (mktemp (sun.sun_path) == NULL) - { - printf ("%s: cannot generate temp file name\n", __FUNCTION__); - exit (1); - } - sun.sun_family = AF_UNIX; - } - while (bind (tempfd, (struct sockaddr *) &sun, - offsetof (struct sockaddr_un, sun_path) - + strlen (sun.sun_path) + 1) != 0); - tempfname = strdup (sun.sun_path); - - tempfd2 = socket (AF_UNIX, SOCK_DGRAM, 0); - if (tempfd2 == -1) - { - printf ("%s: second socket call failed\n", __FUNCTION__); - exit (1); - } - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - pthread_cleanup_push (cl, NULL); - - char mem[1]; - - sendto (tempfd2, mem, arg == NULL ? sizeof (mem) : 1, 0, - (struct sockaddr *) &sun, - offsetof (struct sockaddr_un, sun_path) + strlen (sun.sun_path) + 1); - - pthread_cleanup_pop (0); - - printf ("%s: sendto returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_sendmsg (void *arg) -{ - if (arg == NULL) - // XXX If somebody can provide a portable test case in which sendmsg() - // blocks we can enable this test to run in both rounds. - abort (); - - struct sockaddr_un sun; - - tempfd = socket (AF_UNIX, SOCK_DGRAM, 0); - if (tempfd == -1) - { - printf ("%s: first socket call failed\n", __FUNCTION__); - exit (1); - } - - int tries = 0; - do - { - if (++tries > 10) - { - printf ("%s: too many unsuccessful bind calls\n", __FUNCTION__); - exit (1); - } - - strcpy (sun.sun_path, "/tmp/tst-cancel4-socket-7-XXXXXX"); - if (mktemp (sun.sun_path) == NULL) - { - printf ("%s: cannot generate temp file name\n", __FUNCTION__); - exit (1); - } - sun.sun_family = AF_UNIX; - } - while (bind (tempfd, (struct sockaddr *) &sun, - offsetof (struct sockaddr_un, sun_path) - + strlen (sun.sun_path) + 1) != 0); - tempfname = strdup (sun.sun_path); - - tempfd2 = socket (AF_UNIX, SOCK_DGRAM, 0); - if (tempfd2 == -1) - { - printf ("%s: second socket call failed\n", __FUNCTION__); - exit (1); - } - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - pthread_cleanup_push (cl, NULL); - - char mem[1]; - struct iovec iov[1]; - iov[0].iov_base = mem; - iov[0].iov_len = 1; - - struct msghdr m; - m.msg_name = &sun; - m.msg_namelen = (offsetof (struct sockaddr_un, sun_path) - + strlen (sun.sun_path) + 1); - m.msg_iov = iov; - m.msg_iovlen = 1; - m.msg_control = NULL; - m.msg_controllen = 0; - - sendmsg (tempfd2, &m, 0); - - pthread_cleanup_pop (0); - - printf ("%s: sendmsg returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_creat (void *arg) -{ - if (arg == NULL) - // XXX If somebody can provide a portable test case in which sendmsg() - // blocks we can enable this test to run in both rounds. - abort (); - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - pthread_cleanup_push (cl, NULL); - - creat ("tmp/tst-cancel-4-should-not-exist", 0666); - - pthread_cleanup_pop (0); - - printf ("%s: creat returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_connect (void *arg) -{ - if (arg == NULL) - // XXX If somebody can provide a portable test case in which connect() - // blocks we can enable this test to run in both rounds. - abort (); - - struct sockaddr_un sun; - - tempfd = socket (AF_UNIX, SOCK_STREAM, 0); - if (tempfd == -1) - { - printf ("%s: first socket call failed\n", __FUNCTION__); - exit (1); - } - - int tries = 0; - do - { - if (++tries > 10) - { - printf ("%s: too many unsuccessful bind calls\n", __FUNCTION__); - exit (1); - } - - strcpy (sun.sun_path, "/tmp/tst-cancel4-socket-2-XXXXXX"); - if (mktemp (sun.sun_path) == NULL) - { - printf ("%s: cannot generate temp file name\n", __FUNCTION__); - exit (1); - } - sun.sun_family = AF_UNIX; - } - while (bind (tempfd, (struct sockaddr *) &sun, - offsetof (struct sockaddr_un, sun_path) - + strlen (sun.sun_path) + 1) != 0); - tempfname = strdup (sun.sun_path); - - listen (tempfd, 5); - - tempfd2 = socket (AF_UNIX, SOCK_STREAM, 0); - if (tempfd2 == -1) - { - printf ("%s: second socket call failed\n", __FUNCTION__); - exit (1); - } - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - if (arg != NULL) - { - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - pthread_cleanup_push (cl, NULL); - - connect (tempfd2, (struct sockaddr *) &sun, sizeof (sun)); - - pthread_cleanup_pop (0); - - printf ("%s: connect returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_tcdrain (void *arg) -{ - if (arg == NULL) - // XXX If somebody can provide a portable test case in which tcdrain() - // blocks we can enable this test to run in both rounds. - abort (); - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - if (arg != NULL) - { - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - pthread_cleanup_push (cl, NULL); - - /* Regardless of stderr being a terminal, the tcdrain call should be - canceled. */ - tcdrain (STDERR_FILENO); - - pthread_cleanup_pop (0); - - printf ("%s: tcdrain returned\n", __FUNCTION__); - - exit (1); -} - - -static void * -tf_msgrcv (void *arg) -{ - tempmsg = msgget (IPC_PRIVATE, 0666 | IPC_CREAT); - if (tempmsg == -1) - { - printf ("%s: msgget failed: %s\n", __FUNCTION__, strerror (errno)); - exit (1); - } - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - if (arg != NULL) - { - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - } - - ssize_t s; - - pthread_cleanup_push (cl, NULL); - - struct - { - long int type; - char mem[10]; - } m; - int randnr; - /* We need a positive random number. */ - do - randnr = random () % 64000; - while (randnr <= 0); - do - { - errno = 0; - s = msgrcv (tempmsg, (struct msgbuf *) &m, 10, randnr, 0); - } - while (errno == EIDRM || errno == EINTR); - - pthread_cleanup_pop (0); - - printf ("%s: msgrcv returned %zd with errno = %m\n", __FUNCTION__, s); - - msgctl (tempmsg, IPC_RMID, NULL); - - exit (1); -} - - -static void * -tf_msgsnd (void *arg) -{ - if (arg == NULL) - // XXX If somebody can provide a portable test case in which msgsnd() - // blocks we can enable this test to run in both rounds. - abort (); - - tempmsg = msgget (IPC_PRIVATE, 0666 | IPC_CREAT); - if (tempmsg == -1) - { - printf ("%s: msgget failed: %s\n", __FUNCTION__, strerror (errno)); - exit (1); - } - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - pthread_cleanup_push (cl, NULL); - - struct - { - long int type; - char mem[1]; - } m; - /* We need a positive random number. */ - do - m.type = random () % 64000; - while (m.type <= 0); - msgsnd (tempmsg, (struct msgbuf *) &m, sizeof (m.mem), 0); - - pthread_cleanup_pop (0); - - printf ("%s: msgsnd returned\n", __FUNCTION__); - - msgctl (tempmsg, IPC_RMID, NULL); - - exit (1); -} - - -static struct -{ - const char *name; - void *(*tf) (void *); - int nb; - int only_early; -} tests[] = -{ -#define ADD_TEST(name, nbar, early) { #name, tf_##name, nbar, early } - ADD_TEST (read, 2, 0), - ADD_TEST (readv, 2, 0), - ADD_TEST (select, 2, 0), - ADD_TEST (pselect, 2, 0), - ADD_TEST (poll, 2, 0), - ADD_TEST (ppoll, 2, 0), - ADD_TEST (write, 2, 0), - ADD_TEST (writev, 2, 0), - ADD_TEST (usleep, 2, 0), - ADD_TEST (nanosleep, 2, 0), - ADD_TEST (wait, 2, 0), - ADD_TEST (waitid, 2, 0), - ADD_TEST (waitpid, 2, 0), - ADD_TEST (sigpause, 2, 0), - ADD_TEST (sigsuspend, 2, 0), - ADD_TEST (sigwait, 2, 0), - ADD_TEST (sigwaitinfo, 2, 0), - ADD_TEST (sigtimedwait, 2, 0), - ADD_TEST (pause, 2, 0), - ADD_TEST (accept, 2, 0), - ADD_TEST (send, 2, 0), - ADD_TEST (recv, 2, 0), - ADD_TEST (recvfrom, 2, 0), - ADD_TEST (recvmsg, 2, 0), - ADD_TEST (open, 2, 1), - ADD_TEST (close, 2, 1), - ADD_TEST (pread, 2, 1), - ADD_TEST (pwrite, 2, 1), - ADD_TEST (fsync, 2, 1), - ADD_TEST (fdatasync, 2, 1), - ADD_TEST (msync, 2, 1), - ADD_TEST (sendto, 2, 1), - ADD_TEST (sendmsg, 2, 1), - ADD_TEST (creat, 2, 1), - ADD_TEST (connect, 2, 1), - ADD_TEST (tcdrain, 2, 1), - ADD_TEST (msgrcv, 2, 0), - ADD_TEST (msgsnd, 2, 1), -}; -#define ntest_tf (sizeof (tests) / sizeof (tests[0])) - - -static int -do_test (void) -{ - int val; - socklen_t len; - - if (socketpair (AF_UNIX, SOCK_STREAM, PF_UNIX, fds) != 0) - { - perror ("socketpair"); - exit (1); - } - - val = 1; - len = sizeof(val); - setsockopt (fds[1], SOL_SOCKET, SO_SNDBUF, &val, sizeof(val)); - if (getsockopt (fds[1], SOL_SOCKET, SO_SNDBUF, &val, &len) < 0) - { - perror ("getsockopt"); - exit (1); - } - if (val >= WRITE_BUFFER_SIZE) - { - puts ("minimum write buffer size too large"); - exit (1); - } - setsockopt (fds[1], SOL_SOCKET, SO_SNDBUF, &val, sizeof(val)); - - int result = 0; - size_t cnt; - for (cnt = 0; cnt < ntest_tf; ++cnt) - { - if (tests[cnt].only_early) - continue; - - if (pthread_barrier_init (&b2, NULL, tests[cnt].nb) != 0) - { - puts ("b2 init failed"); - exit (1); - } - - /* Reset the counter for the cleanup handler. */ - cl_called = 0; - - pthread_t th; - if (pthread_create (&th, NULL, tests[cnt].tf, NULL) != 0) - { - printf ("create for '%s' test failed\n", tests[cnt].name); - result = 1; - continue; - } - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - result = 1; - continue; - } - - struct timespec ts = { .tv_sec = 0, .tv_nsec = 100000000 }; - while (nanosleep (&ts, &ts) != 0) - continue; - - if (pthread_cancel (th) != 0) - { - printf ("cancel for '%s' failed\n", tests[cnt].name); - result = 1; - continue; - } - - void *status; - if (pthread_join (th, &status) != 0) - { - printf ("join for '%s' failed\n", tests[cnt].name); - result = 1; - continue; - } - if (status != PTHREAD_CANCELED) - { - printf ("thread for '%s' not canceled\n", tests[cnt].name); - result = 1; - continue; - } - - if (pthread_barrier_destroy (&b2) != 0) - { - puts ("barrier_destroy failed"); - result = 1; - continue; - } - - if (cl_called == 0) - { - printf ("cleanup handler not called for '%s'\n", tests[cnt].name); - result = 1; - continue; - } - if (cl_called > 1) - { - printf ("cleanup handler called more than once for '%s'\n", - tests[cnt].name); - result = 1; - continue; - } - - printf ("in-time cancel test of '%s' successful\n", tests[cnt].name); - - if (tempfd != -1) - { - close (tempfd); - tempfd = -1; - } - if (tempfd2 != -1) - { - close (tempfd2); - tempfd2 = -1; - } - if (tempfname != NULL) - { - unlink (tempfname); - free (tempfname); - tempfname = NULL; - } - if (tempmsg != -1) - { - msgctl (tempmsg, IPC_RMID, NULL); - tempmsg = -1; - } - } - - for (cnt = 0; cnt < ntest_tf; ++cnt) - { - if (pthread_barrier_init (&b2, NULL, tests[cnt].nb) != 0) - { - puts ("b2 init failed"); - exit (1); - } - - /* Reset the counter for the cleanup handler. */ - cl_called = 0; - - pthread_t th; - if (pthread_create (&th, NULL, tests[cnt].tf, (void *) 1l) != 0) - { - printf ("create for '%s' test failed\n", tests[cnt].name); - result = 1; - continue; - } - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - result = 1; - continue; - } - - if (pthread_cancel (th) != 0) - { - printf ("cancel for '%s' failed\n", tests[cnt].name); - result = 1; - continue; - } - - r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - result = 1; - continue; - } - - void *status; - if (pthread_join (th, &status) != 0) - { - printf ("join for '%s' failed\n", tests[cnt].name); - result = 1; - continue; - } - if (status != PTHREAD_CANCELED) - { - printf ("thread for '%s' not canceled\n", tests[cnt].name); - result = 1; - continue; - } - - if (pthread_barrier_destroy (&b2) != 0) - { - puts ("barrier_destroy failed"); - result = 1; - continue; - } - - if (cl_called == 0) - { - printf ("cleanup handler not called for '%s'\n", tests[cnt].name); - result = 1; - continue; - } - if (cl_called > 1) - { - printf ("cleanup handler called more than once for '%s'\n", - tests[cnt].name); - result = 1; - continue; - } - - printf ("early cancel test of '%s' successful\n", tests[cnt].name); - - if (tempfd != -1) - { - close (tempfd); - tempfd = -1; - } - if (tempfd2 != -1) - { - close (tempfd2); - tempfd2 = -1; - } - if (tempfname != NULL) - { - unlink (tempfname); - free (tempfname); - tempfname = NULL; - } - if (tempmsg != -1) - { - msgctl (tempmsg, IPC_RMID, NULL); - tempmsg = -1; - } - } - - return result; -} - -#define TIMEOUT 60 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel5.c b/test/nptl/tst-cancel5.c deleted file mode 100644 index 1c879eba8..000000000 --- a/test/nptl/tst-cancel5.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel4.c" diff --git a/test/nptl/tst-cancel6.c b/test/nptl/tst-cancel6.c deleted file mode 100644 index 4e11277ea..000000000 --- a/test/nptl/tst-cancel6.c +++ /dev/null @@ -1,78 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static void * -tf (void *arg) -{ - char buf[100]; - fgets (buf, sizeof (buf), arg); - /* This call should never return. */ - return NULL; -} - - -static int -do_test (void) -{ - int fd[2]; - if (pipe (fd) != 0) - { - puts ("pipe failed"); - return 1; - } - - FILE *fp = fdopen (fd[0], "r"); - if (fp == NULL) - { - puts ("fdopen failed"); - return 1; - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, fp) != 0) - { - puts ("pthread_create failed"); - return 1; - } - - sleep (1); - - if (pthread_cancel (th) != 0) - { - puts ("pthread_cancel failed"); - return 1; - } - - void *r; - if (pthread_join (th, &r) != 0) - { - puts ("pthread_join failed"); - return 1; - } - - return r != PTHREAD_CANCELED; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel7.c b/test/nptl/tst-cancel7.c deleted file mode 100644 index 9e7d22ed5..000000000 --- a/test/nptl/tst-cancel7.c +++ /dev/null @@ -1,208 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include - -const char *command; -const char *pidfile; -char pidfilename[] = "/tmp/tst-cancel7-XXXXXX"; - -static void * -tf (void *arg) -{ - const char *args = " -d -p "; - char *cmd = alloca (strlen (command) + strlen (args) - + strlen (pidfilename) + 1); - - strcpy (stpcpy (stpcpy (cmd, command), args), pidfilename); - system (cmd); - /* This call should never return. */ - return NULL; -} - - -static void -sl (void) -{ - FILE *f = fopen (pidfile, "w"); - if (f == NULL) - exit (1); - - fprintf (f, "%lld\n", (long long) getpid ()); - fflush (f); - - struct flock fl = - { - .l_type = F_WRLCK, - .l_start = 0, - .l_whence = SEEK_SET, - .l_len = 1 - }; - if (fcntl (fileno (f), F_SETLK, &fl) != 0) - exit (1); - - sigset_t ss; - sigfillset (&ss); - sigsuspend (&ss); - exit (0); -} - - -static void -do_prepare (int argc, char *argv[]) -{ - if (command == NULL) - command = argv[0]; - - if (pidfile) - sl (); - - int fd = mkstemp (pidfilename); - if (fd == -1) - { - puts ("mkstemp failed"); - exit (1); - } - - write (fd, " ", 1); - close (fd); -} - - -static int -do_test (void) -{ - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("pthread_create failed"); - return 1; - } - - do - sleep (1); - while (access (pidfilename, R_OK) != 0); - - if (pthread_cancel (th) != 0) - { - puts ("pthread_cancel failed"); - return 1; - } - - void *r; - if (pthread_join (th, &r) != 0) - { - puts ("pthread_join failed"); - return 1; - } - - sleep (1); - - FILE *f = fopen (pidfilename, "r+"); - if (f == NULL) - { - puts ("no pidfile"); - return 1; - } - - long long ll; - if (fscanf (f, "%lld\n", &ll) != 1) - { - puts ("could not read pid"); - unlink (pidfilename); - return 1; - } - - struct flock fl = - { - .l_type = F_WRLCK, - .l_start = 0, - .l_whence = SEEK_SET, - .l_len = 1 - }; - if (fcntl (fileno (f), F_GETLK, &fl) != 0) - { - puts ("F_GETLK failed"); - unlink (pidfilename); - return 1; - } - - if (fl.l_type != F_UNLCK) - { - printf ("child %lld still running\n", (long long) fl.l_pid); - if (fl.l_pid == ll) - kill (fl.l_pid, SIGKILL); - - unlink (pidfilename); - return 1; - } - - fclose (f); - - unlink (pidfilename); - - return r != PTHREAD_CANCELED; -} - -#if 0 /* unused */ -static void -do_cleanup (void) -{ - FILE *f = fopen (pidfilename, "r+"); - long long ll; - - if (f != NULL && fscanf (f, "%lld\n", &ll) == 1) - { - struct flock fl = - { - .l_type = F_WRLCK, - .l_start = 0, - .l_whence = SEEK_SET, - .l_len = 1 - }; - if (fcntl (fileno (f), F_GETLK, &fl) == 0 && fl.l_type != F_UNLCK - && fl.l_pid == ll) - kill (fl.l_pid, SIGKILL); - - fclose (f); - } - - unlink (pidfilename); -} -#endif - -#define CMDLINE_OPTIONS \ - "c:p:" -#define CMDLINE_PROCESS \ - case 'c': \ - command = optarg; \ - break; \ - case 'p': \ - pidfile = optarg; \ - break; -#define PREPARE(argc, argv) do_prepare (argc, argv) -#define TEST_FUNCTION do_test () -#define TIMEOUT 5 -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel8.c b/test/nptl/tst-cancel8.c deleted file mode 100644 index 1c91d47a0..000000000 --- a/test/nptl/tst-cancel8.c +++ /dev/null @@ -1,142 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static pthread_barrier_t bar; - -static int global; - - -static void -cleanup (void *arg) -{ - global = 1; -} - - -static void * -tf (void *arg) -{ - /* Enable cancellation, but defer it. */ - if (pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, NULL) != 0) - { - puts ("setcancelstate failed"); - exit (1); - } - if (pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, NULL) != 0) - { - puts ("setcanceltype failed"); - exit (1); - } - - /* Add cleanup handler. */ - pthread_cleanup_push (cleanup, NULL); - - /* Synchronize with the main thread. */ - int r = pthread_barrier_wait (&bar); - if (r != 0 && r!= PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("tf: first barrier_wait failed"); - exit (1); - } - - /* And again. Once this is done the main thread should have canceled - this thread. */ - r = pthread_barrier_wait (&bar); - if (r != 0 && r!= PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("tf: second barrier_wait failed"); - exit (1); - } - - /* Remove the cleanup handler without executing it. */ - pthread_cleanup_pop (0); - - /* Now react on the cancellation. */ - pthread_testcancel (); - - /* This call should never return. */ - return NULL; -} - - -static int -do_test (void) -{ - if (pthread_barrier_init (&bar, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("pthread_create failed"); - return 1; - } - - int r = pthread_barrier_wait (&bar); - if (r != 0 && r!= PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("first barrier_wait failed"); - exit (1); - } - - if (pthread_cancel (th) != 0) - { - puts ("pthread_cancel failed"); - return 1; - } - - r = pthread_barrier_wait (&bar); - if (r != 0 && r!= PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("second barrier_wait failed"); - exit (1); - } - - void *result; - if (pthread_join (th, &result) != 0) - { - puts ("pthread_join failed"); - return 1; - } - - if (result != PTHREAD_CANCELED) - { - puts ("thread was not canceled"); - exit (1); - } - - if (global != 0) - { - puts ("cancellation handler has been called"); - exit (1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancel9.c b/test/nptl/tst-cancel9.c deleted file mode 100644 index 40a62c588..000000000 --- a/test/nptl/tst-cancel9.c +++ /dev/null @@ -1,125 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static pthread_barrier_t b; - - -static void -cleanup (void *arg) -{ - fputs ("in cleanup\n", stdout); -} - - -static void * -tf (void *arg) -{ - int fd = open ("/dev/null", O_RDWR); - if (fd == -1) - { - puts ("cannot open /dev/null"); - exit (1); - } - FILE *fp = fdopen (fd, "w"); - if (fp == NULL) - { - puts ("fdopen failed"); - exit (1); - } - - pthread_cleanup_push (cleanup, NULL); - - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - while (1) - /* fprintf() uses write() which is a cancallation point. */ - fprintf (fp, "foo"); - - pthread_cleanup_pop (0); - - return NULL; -} - - -static int -do_test (void) -{ - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - return 1; - } - - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - sleep (1); - - puts ("cancel now"); - - if (pthread_cancel (th) != 0) - { - puts ("cancel failed"); - exit (1); - } - - puts ("waiting for the child"); - - void *r; - if (pthread_join (th, &r) != 0) - { - puts ("join failed"); - exit (1); - } - - if (r != PTHREAD_CANCELED) - { - puts ("thread wasn't canceled"); - exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cancelx10.c b/test/nptl/tst-cancelx10.c deleted file mode 100644 index e5bbb34e6..000000000 --- a/test/nptl/tst-cancelx10.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel10.c" diff --git a/test/nptl/tst-cancelx11.c b/test/nptl/tst-cancelx11.c deleted file mode 100644 index ffcc2eefc..000000000 --- a/test/nptl/tst-cancelx11.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel11.c" diff --git a/test/nptl/tst-cancelx12.c b/test/nptl/tst-cancelx12.c deleted file mode 100644 index f90ae61ba..000000000 --- a/test/nptl/tst-cancelx12.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel12.c" diff --git a/test/nptl/tst-cancelx13.c b/test/nptl/tst-cancelx13.c deleted file mode 100644 index 37c4c39c3..000000000 --- a/test/nptl/tst-cancelx13.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel13.c" diff --git a/test/nptl/tst-cancelx14.c b/test/nptl/tst-cancelx14.c deleted file mode 100644 index ba4e77584..000000000 --- a/test/nptl/tst-cancelx14.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel14.c" diff --git a/test/nptl/tst-cancelx15.c b/test/nptl/tst-cancelx15.c deleted file mode 100644 index 005c1f6e3..000000000 --- a/test/nptl/tst-cancelx15.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel15.c" diff --git a/test/nptl/tst-cancelx16.c b/test/nptl/tst-cancelx16.c deleted file mode 100644 index 99af3b197..000000000 --- a/test/nptl/tst-cancelx16.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel16.c" diff --git a/test/nptl/tst-cancelx18.c b/test/nptl/tst-cancelx18.c deleted file mode 100644 index 56da18f38..000000000 --- a/test/nptl/tst-cancelx18.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel18.c" diff --git a/test/nptl/tst-cancelx2.c b/test/nptl/tst-cancelx2.c deleted file mode 100644 index 95dc8a857..000000000 --- a/test/nptl/tst-cancelx2.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel2.c" diff --git a/test/nptl/tst-cancelx20.c b/test/nptl/tst-cancelx20.c deleted file mode 100644 index 6bd86376c..000000000 --- a/test/nptl/tst-cancelx20.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel20.c" diff --git a/test/nptl/tst-cancelx21.c b/test/nptl/tst-cancelx21.c deleted file mode 100644 index 2a01061ea..000000000 --- a/test/nptl/tst-cancelx21.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel21.c" diff --git a/test/nptl/tst-cancelx3.c b/test/nptl/tst-cancelx3.c deleted file mode 100644 index 3937f10b9..000000000 --- a/test/nptl/tst-cancelx3.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel3.c" diff --git a/test/nptl/tst-cancelx4.c b/test/nptl/tst-cancelx4.c deleted file mode 100644 index 1c879eba8..000000000 --- a/test/nptl/tst-cancelx4.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel4.c" diff --git a/test/nptl/tst-cancelx6.c b/test/nptl/tst-cancelx6.c deleted file mode 100644 index 6926e21c2..000000000 --- a/test/nptl/tst-cancelx6.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel6.c" diff --git a/test/nptl/tst-cancelx7.c b/test/nptl/tst-cancelx7.c deleted file mode 100644 index 4df1a5881..000000000 --- a/test/nptl/tst-cancelx7.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel7.c" diff --git a/test/nptl/tst-cancelx8.c b/test/nptl/tst-cancelx8.c deleted file mode 100644 index 0555c7ceb..000000000 --- a/test/nptl/tst-cancelx8.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel8.c" diff --git a/test/nptl/tst-cancelx9.c b/test/nptl/tst-cancelx9.c deleted file mode 100644 index 9d84663d7..000000000 --- a/test/nptl/tst-cancelx9.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cancel9.c" diff --git a/test/nptl/tst-cleanup0.c b/test/nptl/tst-cleanup0.c deleted file mode 100644 index 401115d73..000000000 --- a/test/nptl/tst-cleanup0.c +++ /dev/null @@ -1,75 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static int global; - - -static void -ch (void *arg) -{ - int val = (long int) arg; - - printf ("ch (%d)\n", val); - - global *= val; - global += val; -} - - -static void -endfct (void) -{ - /* We force exit right here. */ - _exit (global); -} - - -static int -do_test (void) -{ - atexit (endfct); - - pthread_cancel (pthread_self ()); - - pthread_cleanup_push (ch, (void *) 1l); - - pthread_cleanup_push (ch, (void *) 2l); - - pthread_cleanup_push (ch, (void *) 3l); - -// pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, NULL); - - pthread_cleanup_pop (1); - - pthread_cleanup_pop (1); - - pthread_cleanup_pop (1); - - return 100; -} - - -#define EXPECTED_STATUS 9 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cleanup1.c b/test/nptl/tst-cleanup1.c deleted file mode 100644 index e89f434f5..000000000 --- a/test/nptl/tst-cleanup1.c +++ /dev/null @@ -1,99 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static int global; - - -static void -ch (void *arg) -{ - int val = (long int) arg; - - printf ("ch (%d)\n", val); - - global *= val; - global += val; -} - - -static void * -tf (void *a) -{ - pthread_cancel (pthread_self ()); - - pthread_cleanup_push (ch, (void *) 1l); - - pthread_cleanup_push (ch, (void *) 2l); - - pthread_cleanup_push (ch, (void *) 3l); - - pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, NULL); - - pthread_cleanup_pop (1); - - pthread_cleanup_pop (1); - - pthread_cleanup_pop (1); - - return NULL; -} - - -int -do_test (void) -{ - pthread_t th; - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - write (2, "create failed\n", 14); - _exit (1); - } - - void *r; - int e; - if ((e = pthread_join (th, &r)) != 0) - { - printf ("join failed: %d\n", e); - _exit (1); - } - - if (r != PTHREAD_CANCELED) - { - puts ("thread not canceled"); - exit (1); - } - - if (global != 9) - { - printf ("global = %d, expected 9\n", global); - exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cleanup2.c b/test/nptl/tst-cleanup2.c deleted file mode 100644 index d01301b9f..000000000 --- a/test/nptl/tst-cleanup2.c +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Bao Duong , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - -static sigjmp_buf jmpbuf; - -static void -sig_handler (int signo) -{ - siglongjmp (jmpbuf, 1); -} - -static int -do_test (void) -{ - char *p = NULL; - struct sigaction sa; - - sa.sa_handler = sig_handler; - sigemptyset (&sa.sa_mask); - sa.sa_flags = SA_SIGINFO; - - if (sigaction (SIGSEGV, &sa, 0)) - { - perror ("installing SIGSEGV handler\n"); - exit (1); - } - - puts ("Attempting to sprintf to null ptr"); - if (setjmp (jmpbuf)) - { - puts ("Exiting main..."); - return 0; - } - - sprintf (p, "This should segv\n"); - - return 1; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cleanup3.c b/test/nptl/tst-cleanup3.c deleted file mode 100644 index 67bd9eb6f..000000000 --- a/test/nptl/tst-cleanup3.c +++ /dev/null @@ -1,97 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static int global; - - -static void -ch (void *arg) -{ - int val = (long int) arg; - - printf ("ch (%d)\n", val); - - global *= val; - global += val; -} - - -static void * -tf (void *a) -{ - pthread_cleanup_push (ch, (void *) 1l); - - pthread_cleanup_push (ch, (void *) 2l); - - pthread_cleanup_push (ch, (void *) 3l); - - pthread_exit ((void *) 1l); - - pthread_cleanup_pop (1); - - pthread_cleanup_pop (1); - - pthread_cleanup_pop (1); - - return NULL; -} - - -int -do_test (void) -{ - pthread_t th; - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - write (2, "create failed\n", 14); - _exit (1); - } - - void *r; - int e; - if ((e = pthread_join (th, &r)) != 0) - { - printf ("join failed: %d\n", e); - _exit (1); - } - - if (r != (void *) 1l) - { - puts ("thread not canceled"); - exit (1); - } - - if (global != 9) - { - printf ("global = %d, expected 9\n", global); - exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cleanup4.c b/test/nptl/tst-cleanup4.c deleted file mode 100644 index 3fe399820..000000000 --- a/test/nptl/tst-cleanup4.c +++ /dev/null @@ -1,197 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - -/* LinuxThreads pthread_cleanup_{push,pop} helpers. */ -extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *__buffer, - void (*__routine) (void *), - void *__arg); -extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *__buffer, - int __execute); - -static int fds[2]; -static pthread_barrier_t b2; -static int global; - -/* Defined in tst-cleanup4aux.c, never compiled with -fexceptions. */ -extern void fn5 (void); -extern void fn7 (void); -extern void fn9 (void); - -void -clh (void *arg) -{ - int val = (long int) arg; - - printf ("clh (%d)\n", val); - - global *= val; - global += val; -} - - -static __attribute__((noinline)) void -fn_read (void) -{ - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - char c; - read (fds[0], &c, 1); -} - - -__attribute__((noinline)) void -fn0 (void) -{ - pthread_cleanup_push (clh, (void *) 1l); - - fn_read (); - - pthread_cleanup_pop (1); -} - - -__attribute__((noinline)) void -fn1 (void) -{ - /* This is the old LinuxThreads pthread_cleanup_{push,pop}. */ - struct _pthread_cleanup_buffer b; - _pthread_cleanup_push (&b, clh, (void *) 2l); - - fn0 (); - - _pthread_cleanup_pop (&b, 1); -} - - -static __attribute__((noinline)) void -fn2 (void) -{ - pthread_cleanup_push (clh, (void *) 3l); - - fn1 (); - - pthread_cleanup_pop (1); -} - - -static void * -tf (void *a) -{ - switch ((long) a) - { - case 0: - fn2 (); - break; - case 1: - fn5 (); - break; - case 2: - fn7 (); - break; - case 3: - fn9 (); - break; - } - - return NULL; -} - - -int -do_test (void) -{ - int result = 0; - - if (pipe (fds) != 0) - { - puts ("pipe failed"); - exit (1); - } - - if (pthread_barrier_init (&b2, NULL, 2) != 0) - { - puts ("b2 init failed"); - exit (1); - } - - const int expect[] = - { - 15, /* 1 2 3 */ - 276, /* 1 4 5 6 */ - 120, /* 1 7 8 */ - 460 /* 1 2 9 10 */ - }; - - long i; - for (i = 0; i < 4; ++i) - { - global = 0; - - printf ("test %ld\n", i); - - pthread_t th; - if (pthread_create (&th, NULL, tf, (void *) i) != 0) - { - puts ("create failed"); - exit (1); - } - - int e = pthread_barrier_wait (&b2); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __FUNCTION__); - exit (1); - } - - pthread_cancel (th); - - void *r; - if ((e = pthread_join (th, &r)) != 0) - { - printf ("join failed: %d\n", e); - _exit (1); - } - - if (r != PTHREAD_CANCELED) - { - puts ("thread not canceled"); - exit (1); - } - - if (global != expect[i]) - { - printf ("global = %d, expected %d\n", global, expect[i]); - result = 1; - } - } - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cleanup4aux.c b/test/nptl/tst-cleanup4aux.c deleted file mode 100644 index 029c4939f..000000000 --- a/test/nptl/tst-cleanup4aux.c +++ /dev/null @@ -1,120 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - -extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *__buffer, - void (*__routine) (void *), - void *__arg); -extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *__buffer, - int __execute); - -extern void clh (void *arg); -extern void fn0 (void); -extern void fn1 (void); -extern void fn5 (void); -extern void fn7 (void); -extern void fn9 (void); - - -static __attribute__((noinline)) void -fn3 (void) -{ - /* This is the old LinuxThreads pthread_cleanup_{push,pop}. */ - struct _pthread_cleanup_buffer b; - _pthread_cleanup_push (&b, clh, (void *) 4l); - - fn0 (); - - _pthread_cleanup_pop (&b, 1); -} - - -static __attribute__((noinline)) void -fn4 (void) -{ - pthread_cleanup_push (clh, (void *) 5l); - - fn3 (); - - pthread_cleanup_pop (1); -} - - -void -fn5 (void) -{ - /* This is the old LinuxThreads pthread_cleanup_{push,pop}. */ - struct _pthread_cleanup_buffer b; - _pthread_cleanup_push (&b, clh, (void *) 6l); - - fn4 (); - - _pthread_cleanup_pop (&b, 1); -} - - -static __attribute__((noinline)) void -fn6 (void) -{ - pthread_cleanup_push (clh, (void *) 7l); - - fn0 (); - - pthread_cleanup_pop (1); -} - - -void -fn7 (void) -{ - /* This is the old LinuxThreads pthread_cleanup_{push,pop}. */ - struct _pthread_cleanup_buffer b; - _pthread_cleanup_push (&b, clh, (void *) 8l); - - fn6 (); - - _pthread_cleanup_pop (&b, 1); -} - - -static __attribute__((noinline)) void -fn8 (void) -{ - pthread_cleanup_push (clh, (void *) 9l); - - fn1 (); - - pthread_cleanup_pop (1); -} - - -void -fn9 (void) -{ - /* This is the old LinuxThreads pthread_cleanup_{push,pop}. */ - struct _pthread_cleanup_buffer b; - _pthread_cleanup_push (&b, clh, (void *) 10l); - - fn8 (); - - _pthread_cleanup_pop (&b, 1); -} diff --git a/test/nptl/tst-cleanupx0.c b/test/nptl/tst-cleanupx0.c deleted file mode 100644 index 0012ab1b2..000000000 --- a/test/nptl/tst-cleanupx0.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cleanup0.c" diff --git a/test/nptl/tst-cleanupx1.c b/test/nptl/tst-cleanupx1.c deleted file mode 100644 index 21e9e58bd..000000000 --- a/test/nptl/tst-cleanupx1.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cleanup1.c" diff --git a/test/nptl/tst-cleanupx2.c b/test/nptl/tst-cleanupx2.c deleted file mode 100644 index 8b9e35093..000000000 --- a/test/nptl/tst-cleanupx2.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cleanup2.c" diff --git a/test/nptl/tst-cleanupx3.c b/test/nptl/tst-cleanupx3.c deleted file mode 100644 index 90baf904f..000000000 --- a/test/nptl/tst-cleanupx3.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cleanup3.c" diff --git a/test/nptl/tst-cleanupx4.c b/test/nptl/tst-cleanupx4.c deleted file mode 100644 index 8dea954b5..000000000 --- a/test/nptl/tst-cleanupx4.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-cleanup4.c" diff --git a/test/nptl/tst-clock.c b/test/nptl/tst-clock.c deleted file mode 100644 index 2023cbc6d..000000000 --- a/test/nptl/tst-clock.c +++ /dev/null @@ -1,123 +0,0 @@ -/* Test program for POSIX clock_* functions. - Copyright (C) 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2000. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - - -/* We want to see output immediately. */ -#define STDOUT_UNBUFFERED - -/* We expect to run at least 10 seconds. */ -#define TIMEOUT 15 - -static int -clock_test (clockid_t cl) -{ - struct timespec old_ts; - struct timespec ts; - struct timespec waitit; - int result = 0; - int i; - - memset (&ts, '\0', sizeof ts); - - waitit.tv_sec = 0; - waitit.tv_nsec = 500000000; - - /* Get and print resolution of the clock. */ - if (clock_getres (cl, &ts) == 0) - { - if (ts.tv_nsec < 0 || ts.tv_nsec >= 1000000000) - { - printf ("clock %d: nanosecond value of resolution wrong\n", cl); - result = 1; - } - else - printf ("clock %d: resolution = %ld.%09ld secs\n", - cl, ts.tv_sec, ts.tv_nsec); - } - else - { - printf ("clock %d: cannot get resolution\n", cl); - result = 1; - } - - memset (&ts, '\0', sizeof ts); - memset (&old_ts, '\0', sizeof old_ts); - - /* Next get the current time value a few times. */ - for (i = 0; i < 10; ++i) - { - if (clock_gettime (cl, &ts) == 0) - { - if (ts.tv_nsec < 0 || ts.tv_nsec >= 1000000000) - { - printf ("clock %d: nanosecond value of time wrong (try %d)\n", - cl, i); - result = 1; - } - else - { - printf ("clock %d: time = %ld.%09ld secs\n", - cl, ts.tv_sec, ts.tv_nsec); - - if (memcmp (&ts, &old_ts, sizeof ts) == 0) - { - printf ("clock %d: time hasn't changed (try %d)\n", cl, i); - result = 1; - - old_ts = ts; - } - } - } - else - { - printf ("clock %d: cannot get time (try %d)\n", cl, i); - result = 1; - } - - /* Wait a bit before the next iteration. */ - nanosleep (&waitit, NULL); - } - - return result; -} - -static int -do_test (void) -{ - clockid_t cl; - int result; - - result = clock_test (CLOCK_REALTIME); - - if (clock_getcpuclockid (0, &cl) == 0) - /* XXX It's not yet a bug when this fails. */ - clock_test (cl); - else - printf("CPU clock unavailble, skipping test\n"); - - return result; -} -#define TEST_FUNCTION do_test () - - -#include "../test-skeleton.c" diff --git a/test/nptl/tst-clock1.c b/test/nptl/tst-clock1.c deleted file mode 100644 index 7e483b534..000000000 --- a/test/nptl/tst-clock1.c +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -int -do_test (void) -{ -#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0 - clockid_t cl; - /* This is really only a linking-test here. */ - int e = pthread_getcpuclockid (pthread_self (), &cl); - if (e != 0) - { -# if _POSIX_THREAD_CPUTIME == 0 - if (sysconf (_SC_THREAD_CPUTIME) >= 0) -# endif - { - puts ("cpuclock advertized, but cannot get ID"); - exit (1); - } - } -#endif - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-clock2.c b/test/nptl/tst-clock2.c deleted file mode 100644 index df6ec00db..000000000 --- a/test/nptl/tst-clock2.c +++ /dev/null @@ -1,201 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0 -static pthread_barrier_t b2; -static pthread_barrier_t bN; - - -static void * -tf (void *arg) -{ - int e = pthread_barrier_wait (&b2); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - e = pthread_barrier_wait (&bN); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - return NULL; -} -#endif - - -int -do_test (void) -{ -#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0 -# define N 10 - -# if _POSIX_THREAD_CPUTIME == 0 - if (sysconf (_SC_THREAD_CPUTIME) < 0) - { - puts ("_POSIX_THREAD_CPUTIME option not available"); - return 0; - } -# endif - - if (pthread_barrier_init (&b2, NULL, 2) != 0 - || pthread_barrier_init (&bN, NULL, N + 1) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - struct timespec ts = { .tv_sec = 0, .tv_nsec = 100000000 }; - TEMP_FAILURE_RETRY (nanosleep (&ts, &ts)); - - pthread_t th[N + 1]; - clockid_t cl[N + 1]; -# ifndef CLOCK_THREAD_CPUTIME_ID - if (pthread_getcpuclockid (pthread_self (), &cl[0]) != 0) - { - puts ("own pthread_getcpuclockid failed"); - return 1; - } -# else - cl[0] = CLOCK_THREAD_CPUTIME_ID; -# endif - - pthread_attr_t at; - - if (pthread_attr_init (&at) != 0) - { - puts ("attr_init failed"); - return 1; - } - - if (pthread_attr_setstacksize (&at, 1 * 1024 * 1024) != 0) - { - puts ("attr_setstacksize failed"); - return 1; - } - - int i; - int e; - for (i = 0; i < N; ++i) - { - if (pthread_create (&th[i], &at, tf, NULL) != 0) - { - puts ("create failed"); - return 1; - } - - e = pthread_barrier_wait (&b2); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - return 1; - } - - ts.tv_sec = 0; - ts.tv_nsec = 100000000; - TEMP_FAILURE_RETRY (nanosleep (&ts, &ts)); - - if (pthread_getcpuclockid (th[i], &cl[i + 1]) != 0) - { - puts ("pthread_getcpuclockid failed"); - return 1; - } - } - - if (pthread_attr_destroy (&at) != 0) - { - puts ("attr_destroy failed"); - return 1; - } - - struct timespec t[N + 1]; - for (i = 0; i < N + 1; ++i) - if (clock_gettime (cl[i], &t[i]) != 0) - { - printf ("clock_gettime round %d failed\n", i); - return 1; - } - - for (i = 0; i < N; ++i) - { - struct timespec diff; - - diff.tv_sec = t[i].tv_sec - t[i + 1].tv_sec; - diff.tv_nsec = t[i].tv_nsec - t[i + 1].tv_nsec; - if (diff.tv_nsec < 0) - { - diff.tv_nsec += 1000000000; - --diff.tv_sec; - } - - if (diff.tv_sec < 0 || (diff.tv_sec == 0 && diff.tv_nsec < 100000000)) - { - printf ("\ -difference between thread %d and %d too small (%ld.%09ld)\n", - i, i + 1, (long int) diff.tv_sec, (long int) diff.tv_nsec); - return 1; - } - - printf ("diff %d->%d: %ld.%09ld\n", - i, i + 1, (long int) diff.tv_sec, (long int) diff.tv_nsec); - } - - ts.tv_sec = 0; - ts.tv_nsec = 0; - for (i = 0; i < N + 1; ++i) - if (clock_settime (cl[i], &ts) != 0) - { - printf ("clock_settime(%d) round %d failed\n", cl[i], i); - return 1; - } - - for (i = 0; i < N + 1; ++i) - { - if (clock_gettime (cl[i], &ts) != 0) - { - puts ("clock_gettime failed"); - return 1; - } - - if (ts.tv_sec > t[i].tv_sec - || (ts.tv_sec == t[i].tv_sec && ts.tv_nsec > t[i].tv_nsec)) - { - puts ("clock_settime didn't reset clock"); - return 1; - } - } -#endif - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-clock_nanosleep.c b/test/nptl/tst-clock_nanosleep.c deleted file mode 100644 index a2d1f0085..000000000 --- a/test/nptl/tst-clock_nanosleep.c +++ /dev/null @@ -1,57 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -/* Test that clock_nanosleep() does sleep. */ -static int -do_test (void) -{ - /* Current time. */ - struct timeval tv1; - (void) gettimeofday (&tv1, NULL); - - struct timespec ts; - ts.tv_sec = 1; - ts.tv_nsec = 0; - TEMP_FAILURE_RETRY (clock_nanosleep (CLOCK_REALTIME, 0, &ts, &ts)); - - /* At least one second must have passed. */ - struct timeval tv2; - (void) gettimeofday (&tv2, NULL); - - tv2.tv_sec -= tv1.tv_sec; - tv2.tv_usec -= tv1.tv_usec; - if (tv2.tv_usec < 0) - --tv2.tv_sec; - - if (tv2.tv_sec < 1) - { - puts ("clock_nanosleep didn't sleep long enough"); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond-deadlock.c b/test/nptl/tst-cond-deadlock.c deleted file mode 100644 index dd978fb3d..000000000 --- a/test/nptl/tst-cond-deadlock.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2016 Martin Willi - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include - -static pthread_mutex_t m; -static pthread_cond_t c; -static pthread_t t; -static volatile int ready; - -static void cancelcb(void *arg) -{ - pthread_mutex_unlock(&m); -} - -static void* threadcb(void *arg) -{ - pthread_mutex_lock(&m); - pthread_cleanup_push(cancelcb, NULL); - - ready = 1; - while (1) - pthread_cond_wait(&c, &m); - pthread_cleanup_pop(1); -} - -static int -do_test (void) -{ - pthread_mutex_init(&m, NULL); - pthread_cond_init(&c, NULL); - - pthread_create(&t, NULL, threadcb, NULL); - - while (!ready); - - pthread_cancel(t); - pthread_join(t, NULL); - - pthread_cond_signal(&c); - pthread_cond_destroy(&c); - pthread_mutex_destroy(&m); - - return 0; -} - -#define TEST_FUNCTION do_test () -#define TIMEOUT 100 -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond1.c b/test/nptl/tst-cond1.c deleted file mode 100644 index 30efe5b5e..000000000 --- a/test/nptl/tst-cond1.c +++ /dev/null @@ -1,93 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER; - - -static void * -tf (void *p) -{ - int err; - - err = pthread_mutex_lock (&mut); - if (err != 0) - error (EXIT_FAILURE, err, "child: cannot get mutex"); - - puts ("child: got mutex; signalling"); - - pthread_cond_signal (&cond); - - puts ("child: unlock"); - - err = pthread_mutex_unlock (&mut); - if (err != 0) - error (EXIT_FAILURE, err, "child: cannot unlock"); - - puts ("child: done"); - - return NULL; -} - - -static int -do_test (void) -{ - pthread_t th; - int err; - - printf ("&cond = %p\n&mut = %p\n", &cond, &mut); - - puts ("parent: get mutex"); - - err = pthread_mutex_lock (&mut); - if (err != 0) - error (EXIT_FAILURE, err, "parent: cannot get mutex"); - - puts ("parent: create child"); - - err = pthread_create (&th, NULL, tf, NULL); - if (err != 0) - error (EXIT_FAILURE, err, "parent: cannot create thread"); - - puts ("parent: wait for condition"); - - err = pthread_cond_wait (&cond, &mut); - if (err != 0) - error (EXIT_FAILURE, err, "parent: cannot wait fir signal"); - - puts ("parent: got signal"); - - err = pthread_join (th, NULL); - if (err != 0) - error (EXIT_FAILURE, err, "parent: failed to join"); - - puts ("done"); - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond10.c b/test/nptl/tst-cond10.c deleted file mode 100644 index cd5247727..000000000 --- a/test/nptl/tst-cond10.c +++ /dev/null @@ -1,172 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -#define N 10 -#define ROUNDS 100 - -static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER; -static pthread_barrier_t bN1; -static pthread_barrier_t b2; - - -static void * -tf (void *p) -{ - if (pthread_mutex_lock (&mut) != 0) - { - puts ("child: 1st mutex_lock failed"); - exit (1); - } - - int e = pthread_barrier_wait (&b2); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("child: 1st barrier_wait failed"); - exit (1); - } - - if (pthread_cond_wait (&cond, &mut) != 0) - { - puts ("child: cond_wait failed"); - exit (1); - } - - if (pthread_mutex_unlock (&mut) != 0) - { - puts ("child: mutex_unlock failed"); - exit (1); - } - - e = pthread_barrier_wait (&bN1); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("child: 2nd barrier_wait failed"); - exit (1); - } - - return NULL; -} - - -static int -do_test (void) -{ - if (pthread_barrier_init (&bN1, NULL, N + 1) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - if (pthread_barrier_init (&b2, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - pthread_attr_t at; - - if (pthread_attr_init (&at) != 0) - { - puts ("attr_init failed"); - return 1; - } - - if (pthread_attr_setstacksize (&at, 1 * 1024 * 1024) != 0) - { - puts ("attr_setstacksize failed"); - return 1; - } - - int r; - for (r = 0; r < ROUNDS; ++r) - { - printf ("round %d\n", r + 1); - - int i; - pthread_t th[N]; - for (i = 0; i < N; ++i) - { - if (pthread_create (&th[i], &at, tf, NULL) != 0) - { - puts ("create failed"); - exit (1); - } - - int e = pthread_barrier_wait (&b2); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("parent: 1st barrier_wait failed"); - exit (1); - } - } - - if (pthread_mutex_lock (&mut) != 0) - { - puts ("parent: mutex_lock failed"); - exit (1); - } - if (pthread_mutex_unlock (&mut) != 0) - { - puts ("parent: mutex_unlock failed"); - exit (1); - } - - /* N single signal calls. Without locking. This tests that no - signal gets lost. */ - for (i = 0; i < N; ++i) - if (pthread_cond_signal (&cond) != 0) - { - puts ("cond_signal failed"); - exit (1); - } - - int e = pthread_barrier_wait (&bN1); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("parent: 2nd barrier_wait failed"); - exit (1); - } - - for (i = 0; i < N; ++i) - if (pthread_join (th[i], NULL) != 0) - { - puts ("join failed"); - exit (1); - } - } - - if (pthread_attr_destroy (&at) != 0) - { - puts ("attr_destroy failed"); - return 1; - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond11.c b/test/nptl/tst-cond11.c deleted file mode 100644 index 4aaf38002..000000000 --- a/test/nptl/tst-cond11.c +++ /dev/null @@ -1,190 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -#if defined _POSIX_CLOCK_SELECTION && _POSIX_CLOCK_SELECTION >= 0 -static int -run_test (clockid_t cl) -{ - pthread_condattr_t condattr; - pthread_cond_t cond; - pthread_mutexattr_t mutattr; - pthread_mutex_t mut; - - printf ("clock = %d\n", (int) cl); - - if (pthread_condattr_init (&condattr) != 0) - { - puts ("condattr_init failed"); - return 1; - } - - if (pthread_condattr_setclock (&condattr, cl) != 0) - { - puts ("condattr_setclock failed"); - return 1; - } - - clockid_t cl2; - if (pthread_condattr_getclock (&condattr, &cl2) != 0) - { - puts ("condattr_getclock failed"); - return 1; - } - if (cl != cl2) - { - printf ("condattr_getclock returned wrong value: %d, expected %d\n", - (int) cl2, (int) cl); - return 1; - } - - if (pthread_cond_init (&cond, &condattr) != 0) - { - puts ("cond_init failed"); - return 1; - } - - if (pthread_condattr_destroy (&condattr) != 0) - { - puts ("condattr_destroy failed"); - return 1; - } - - if (pthread_mutexattr_init (&mutattr) != 0) - { - puts ("mutexattr_init failed"); - return 1; - } - - if (pthread_mutexattr_settype (&mutattr, PTHREAD_MUTEX_ERRORCHECK) != 0) - { - puts ("mutexattr_settype failed"); - return 1; - } - - if (pthread_mutex_init (&mut, &mutattr) != 0) - { - puts ("mutex_init failed"); - return 1; - } - - if (pthread_mutexattr_destroy (&mutattr) != 0) - { - puts ("mutexattr_destroy failed"); - return 1; - } - - if (pthread_mutex_lock (&mut) != 0) - { - puts ("mutex_lock failed"); - return 1; - } - - if (pthread_mutex_lock (&mut) != EDEADLK) - { - puts ("2nd mutex_lock did not return EDEADLK"); - return 1; - } - - struct timespec ts; - if (clock_gettime (cl, &ts) != 0) - { - puts ("clock_gettime failed"); - return 1; - } - - /* Wait one second. */ - ++ts.tv_sec; - - int e = pthread_cond_timedwait (&cond, &mut, &ts); - if (e == 0) - { - puts ("cond_timedwait succeeded"); - return 1; - } - else if (e != ETIMEDOUT) - { - puts ("cond_timedwait did not return ETIMEDOUT"); - return 1; - } - - if (pthread_mutex_unlock (&mut) != 0) - { - puts ("mutex_unlock failed"); - return 1; - } - - if (pthread_mutex_destroy (&mut) != 0) - { - puts ("mutex_destroy failed"); - return 1; - } - - if (pthread_cond_destroy (&cond) != 0) - { - puts ("cond_destroy failed"); - return 1; - } - - return 0; -} -#endif - - -static int -do_test (void) -{ -#if !defined _POSIX_CLOCK_SELECTION || _POSIX_CLOCK_SELECTION == -1 - - puts ("_POSIX_CLOCK_SELECTION not supported, test skipped"); - return 0; - -#else - - int res = run_test (CLOCK_REALTIME); - -# if defined _POSIX_MONOTONIC_CLOCK && _POSIX_MONOTONIC_CLOCK >= 0 -# if _POSIX_MONOTONIC_CLOCK == 0 - int e = sysconf (_SC_MONOTONIC_CLOCK); - if (e < 0) - puts ("CLOCK_MONOTONIC not supported"); - else if (e == 0) - { - puts ("sysconf (_SC_MONOTONIC_CLOCK) must not return 0"); - res = 1; - } - else -# endif - res |= run_test (CLOCK_MONOTONIC); -# else - puts ("_POSIX_MONOTONIC_CLOCK not defined"); -# endif - - return res; -#endif -} - -#define TIMEOUT 3 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond12.c b/test/nptl/tst-cond12.c deleted file mode 100644 index b38d9d5ec..000000000 --- a/test/nptl/tst-cond12.c +++ /dev/null @@ -1,195 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include - - -static char fname[] = "/tmp/tst-cond12-XXXXXX"; -static int fd; - - -static void prepare (void); -#define PREPARE(argc, argv) prepare () - -static int do_test (void); -#define TEST_FUNCTION do_test () - -#include "../test-skeleton.c" - - -static void -prepare (void) -{ - fd = mkstemp (fname); - if (fd == -1) - { - printf ("mkstemp failed: %m\n"); - exit (1); - } - add_temp_file (fname); - if (ftruncate (fd, 1000) < 0) - { - printf ("ftruncate failed: %m\n"); - exit (1); - } -} - - -static int -do_test (void) -{ - struct - { - pthread_mutex_t m; - pthread_cond_t c; - int var; - } *p = mmap (NULL, sizeof (*p), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); - if (p == MAP_FAILED) - { - printf ("initial mmap failed: %m\n"); - return 1; - } - - pthread_mutexattr_t ma; - if (pthread_mutexattr_init (&ma) != 0) - { - puts ("mutexattr_init failed"); - return 1; - } - if (pthread_mutexattr_setpshared (&ma, 1) != 0) - { - puts ("mutexattr_setpshared failed"); - return 1; - } - if (pthread_mutex_init (&p->m, &ma) != 0) - { - puts ("mutex_init failed"); - return 1; - } - if (pthread_mutexattr_destroy (&ma) != 0) - { - puts ("mutexattr_destroy failed"); - return 1; - } - - pthread_condattr_t ca; - if (pthread_condattr_init (&ca) != 0) - { - puts ("condattr_init failed"); - return 1; - } - if (pthread_condattr_setpshared (&ca, 1) != 0) - { - puts ("condattr_setpshared failed"); - return 1; - } - if (pthread_cond_init (&p->c, &ca) != 0) - { - puts ("mutex_init failed"); - return 1; - } - if (pthread_condattr_destroy (&ca) != 0) - { - puts ("condattr_destroy failed"); - return 1; - } - - if (pthread_mutex_lock (&p->m) != 0) - { - puts ("initial mutex_lock failed"); - return 1; - } - - p->var = 42; - - pid_t pid = fork (); - if (pid == -1) - { - printf ("fork failed: %m\n"); - return 1; - } - - if (pid == 0) - { - void *oldp = p; - p = mmap (NULL, sizeof (*p), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); - - if (p == oldp) - { - puts ("child: mapped to same address"); - kill (getppid (), SIGKILL); - exit (1); - } - - munmap (oldp, sizeof (*p)); - - if (pthread_mutex_lock (&p->m) != 0) - { - puts ("child: mutex_lock failed"); - kill (getppid (), SIGKILL); - exit (1); - } - - p->var = 0; - -#ifndef USE_COND_SIGNAL - if (pthread_cond_broadcast (&p->c) != 0) - { - puts ("child: cond_broadcast failed"); - kill (getppid (), SIGKILL); - exit (1); - } -#else - if (pthread_cond_signal (&p->c) != 0) - { - puts ("child: cond_signal failed"); - kill (getppid (), SIGKILL); - exit (1); - } -#endif - - if (pthread_mutex_unlock (&p->m) != 0) - { - puts ("child: mutex_unlock failed"); - kill (getppid (), SIGKILL); - exit (1); - } - - exit (0); - } - - do - pthread_cond_wait (&p->c, &p->m); - while (p->var != 0); - - if (TEMP_FAILURE_RETRY (waitpid (pid, NULL, 0)) != pid) - { - printf ("waitpid failed: %m\n"); - kill (pid, SIGKILL); - return 1; - } - - return 0; -} diff --git a/test/nptl/tst-cond13.c b/test/nptl/tst-cond13.c deleted file mode 100644 index 29d79b533..000000000 --- a/test/nptl/tst-cond13.c +++ /dev/null @@ -1,2 +0,0 @@ -#define USE_COND_SIGNAL 1 -#include "tst-cond12.c" diff --git a/test/nptl/tst-cond14.c b/test/nptl/tst-cond14.c deleted file mode 100644 index 837840582..000000000 --- a/test/nptl/tst-cond14.c +++ /dev/null @@ -1,117 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t mut = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; -static pthread_mutex_t mut2 = PTHREAD_MUTEX_INITIALIZER; - -static void * -tf (void *p) -{ - if (pthread_mutex_lock (&mut) != 0) - { - printf ("%s: 1st mutex_lock failed\n", __func__); - exit (1); - } - if (pthread_mutex_lock (&mut) != 0) - { - printf ("%s: 2nd mutex_lock failed\n", __func__); - exit (1); - } - if (pthread_mutex_lock (&mut) != 0) - { - printf ("%s: 3rd mutex_lock failed\n", __func__); - exit (1); - } - - if (pthread_mutex_unlock (&mut2) != 0) - { - printf ("%s: mutex_unlock failed\n", __func__); - exit (1); - } - - if (pthread_cond_wait (&cond, &mut) != 0) - { - printf ("%s: cond_wait failed\n", __func__); - exit (1); - } - - puts ("child: done"); - - return NULL; -} - - -static int -do_test (void) -{ - if (pthread_mutex_lock (&mut2) != 0) - { - puts ("1st mutex_lock failed"); - return 1; - } - - puts ("parent: create child"); - - pthread_t th; - int err = pthread_create (&th, NULL, tf, NULL); - if (err != 0) - { - printf ("parent: cannot create thread: %s\n", strerror (err)); - return 1; - } - - /* We have to synchronize with the child. */ - if (pthread_mutex_lock (&mut2) != 0) - { - puts ("2nd mutex_lock failed"); - return 1; - } - - /* Give the child to reach to pthread_cond_wait. */ - sleep (1); - - if (pthread_cond_signal (&cond) != 0) - { - puts ("cond_signal failed"); - return 1; - } - - err = pthread_join (th, NULL); - if (err != 0) - { - printf ("parent: failed to join: %s\n", strerror (err)); - return 1; - } - - puts ("done"); - - return 0; -} - - -#define TEST_FUNCTION do_test () -#define TIMEOUT 3 -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond15.c b/test/nptl/tst-cond15.c deleted file mode 100644 index 0e8448c11..000000000 --- a/test/nptl/tst-cond15.c +++ /dev/null @@ -1,159 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - - -static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t mut = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; -static pthread_mutex_t mut2 = PTHREAD_MUTEX_INITIALIZER; - -static void * -tf (void *p) -{ - if (pthread_mutex_lock (&mut) != 0) - { - printf ("%s: 1st mutex_lock failed\n", __func__); - exit (1); - } - if (pthread_mutex_lock (&mut) != 0) - { - printf ("%s: 2nd mutex_lock failed\n", __func__); - exit (1); - } - if (pthread_mutex_lock (&mut) != 0) - { - printf ("%s: 3rd mutex_lock failed\n", __func__); - exit (1); - } - - if (pthread_mutex_unlock (&mut2) != 0) - { - printf ("%s: mutex_unlock failed\n", __func__); - exit (1); - } - - struct timeval tv; - gettimeofday (&tv, NULL); - struct timespec ts; - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ts.tv_sec += p == NULL ? 100 : 1; - - int err = pthread_cond_timedwait (&cond, &mut, &ts); - if ((err != 0 && p == NULL) || (err != ETIMEDOUT && p != NULL)) - { - printf ("%s: cond_wait failed\n", __func__); - exit (1); - } - - if (pthread_mutex_unlock (&mut) != 0) - { - printf ("%s: 1st mutex_unlock failed\n", __func__); - exit (1); - } - if (pthread_mutex_unlock (&mut) != 0) - { - printf ("%s: 2nd mutex_unlock failed\n", __func__); - exit (1); - } - if (pthread_mutex_unlock (&mut) != 0) - { - printf ("%s: 3rd mutex_unlock failed\n", __func__); - exit (1); - } - - puts ("child: done"); - - return NULL; -} - - -static int -do_test (void) -{ - if (pthread_mutex_lock (&mut2) != 0) - { - puts ("1st mutex_lock failed"); - return 1; - } - - puts ("parent: create 1st child"); - - pthread_t th; - int err = pthread_create (&th, NULL, tf, NULL); - if (err != 0) - { - printf ("parent: cannot 1st create thread: %s\n", strerror (err)); - return 1; - } - - /* We have to synchronize with the child. */ - if (pthread_mutex_lock (&mut2) != 0) - { - puts ("2nd mutex_lock failed"); - return 1; - } - - /* Give the child to reach to pthread_cond_wait. */ - sleep (1); - - if (pthread_cond_signal (&cond) != 0) - { - puts ("cond_signal failed"); - return 1; - } - - err = pthread_join (th, NULL); - if (err != 0) - { - printf ("parent: failed to join: %s\n", strerror (err)); - return 1; - } - - - puts ("parent: create 2nd child"); - - err = pthread_create (&th, NULL, tf, (void *) 1l); - if (err != 0) - { - printf ("parent: cannot 2nd create thread: %s\n", strerror (err)); - return 1; - } - - err = pthread_join (th, NULL); - if (err != 0) - { - printf ("parent: failed to join: %s\n", strerror (err)); - return 1; - } - - puts ("done"); - - return 0; -} - - -#define TEST_FUNCTION do_test () -#define TIMEOUT 6 -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond16.c b/test/nptl/tst-cond16.c deleted file mode 100644 index 44b98634b..000000000 --- a/test/nptl/tst-cond16.c +++ /dev/null @@ -1,104 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - -pthread_cond_t cv = PTHREAD_COND_INITIALIZER; -pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; -bool n, exiting; -FILE *f; -int count; - -void * -tf (void *dummy) -{ - bool loop = true; - - while (loop) - { - pthread_mutex_lock (&lock); - while (n && !exiting) - pthread_cond_wait (&cv, &lock); - n = true; - pthread_mutex_unlock (&lock); - - fputs (".", f); - - pthread_mutex_lock (&lock); - n = false; - if (exiting) - loop = false; -#ifdef UNLOCK_AFTER_BROADCAST - pthread_cond_broadcast (&cv); - pthread_mutex_unlock (&lock); -#else - pthread_mutex_unlock (&lock); - pthread_cond_broadcast (&cv); -#endif - } - - return NULL; -} - -int -do_test (void) -{ - f = fopen ("/dev/null", "w"); - if (f == NULL) - { - printf ("couldn't open /dev/null, %m\n"); - return 1; - } - - count = sysconf (_SC_NPROCESSORS_ONLN); - if (count <= 0) - count = 1; - count *= 4; - - pthread_t th[count]; - int i, ret; - for (i = 0; i < count; ++i) - if ((ret = pthread_create (&th[i], NULL, tf, NULL)) != 0) - { - errno = ret; - printf ("pthread_create %d failed: %m\n", i); - return 1; - } - - struct timespec ts = { .tv_sec = 20, .tv_nsec = 0 }; - while (nanosleep (&ts, &ts) != 0); - - pthread_mutex_lock (&lock); - exiting = true; - pthread_mutex_unlock (&lock); - - for (i = 0; i < count; ++i) - pthread_join (th[i], NULL); - - fclose (f); - return 0; -} - -#define TEST_FUNCTION do_test () -#define TIMEOUT 40 -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond17.c b/test/nptl/tst-cond17.c deleted file mode 100644 index 0586fa59a..000000000 --- a/test/nptl/tst-cond17.c +++ /dev/null @@ -1,2 +0,0 @@ -#define UNLOCK_AFTER_BROADCAST 1 -#include "tst-cond16.c" diff --git a/test/nptl/tst-cond18.c b/test/nptl/tst-cond18.c deleted file mode 100644 index a1bb947ac..000000000 --- a/test/nptl/tst-cond18.c +++ /dev/null @@ -1,116 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - -pthread_cond_t cv = PTHREAD_COND_INITIALIZER; -pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; -bool exiting; -int fd, count, spins, nn; - -void * -tf (void *id) -{ - pthread_mutex_lock (&lock); - - if ((long) id == 0) - { - while (!exiting) - { - if ((spins++ % 1000) == 0) - write (fd, ".", 1); - pthread_mutex_unlock (&lock); - - pthread_mutex_lock (&lock); - int njobs = rand () % (count + 1); - nn = njobs; - if ((rand () % 30) == 0) - pthread_cond_broadcast (&cv); - else - while (njobs--) - pthread_cond_signal (&cv); - } - - pthread_cond_broadcast (&cv); - } - else - { - while (!exiting) - { - while (!nn && !exiting) - pthread_cond_wait (&cv, &lock); - --nn; - pthread_mutex_unlock (&lock); - - pthread_mutex_lock (&lock); - } - } - - pthread_mutex_unlock (&lock); - return NULL; -} - -int -do_test (void) -{ - fd = open ("/dev/null", O_WRONLY); - if (fd < 0) - { - printf ("couldn't open /dev/null, %m\n"); - return 1; - } - - count = sysconf (_SC_NPROCESSORS_ONLN); - if (count <= 0) - count = 1; - count *= 8; - - pthread_t th[count + 1]; - int i, ret; - - for (i = 0; i <= count; ++i) - if ((ret = pthread_create (&th[i], NULL, tf, (void *) (long) i)) != 0) - { - errno = ret; - printf ("pthread_create %d failed: %m\n", i); - return 1; - } - - struct timespec ts = { .tv_sec = 20, .tv_nsec = 0 }; - while (nanosleep (&ts, &ts) != 0); - - pthread_mutex_lock (&lock); - exiting = true; - pthread_mutex_unlock (&lock); - - for (i = 0; i < count; ++i) - pthread_join (th[i], NULL); - - close (fd); - return 0; -} - -#define TEST_FUNCTION do_test () -#define TIMEOUT 40 -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond19.c b/test/nptl/tst-cond19.c deleted file mode 100644 index 200e0eaf0..000000000 --- a/test/nptl/tst-cond19.c +++ /dev/null @@ -1,75 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER; - - -static int -do_test (void) -{ - int result = 0; - struct timespec ts; - - if (clock_gettime (CLOCK_REALTIME, &ts) != 0) - { - puts ("clock_gettime failed"); - return 1; - } - - ts.tv_nsec = -1; - - int e = pthread_cond_timedwait (&cond, &mut, &ts); - if (e == 0) - { - puts ("first cond_timedwait did not fail"); - result = 1; - } - else if (e != EINVAL) - { - puts ("first cond_timedwait did not return EINVAL"); - result = 1; - } - - ts.tv_nsec = 2000000000; - - e = pthread_cond_timedwait (&cond, &mut, &ts); - if (e == 0) - { - puts ("second cond_timedwait did not fail"); - result = 1; - } - else if (e != EINVAL) - { - puts ("second cond_timedwait did not return EINVAL"); - result = 1; - } - - return result; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond2.c b/test/nptl/tst-cond2.c deleted file mode 100644 index 1da074cdd..000000000 --- a/test/nptl/tst-cond2.c +++ /dev/null @@ -1,162 +0,0 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER; -static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; - -static pthread_barrier_t bar; - - -static void * -tf (void *a) -{ - int i = (long int) a; - int err; - - printf ("child %d: lock\n", i); - - err = pthread_mutex_lock (&mut); - if (err != 0) - error (EXIT_FAILURE, err, "locking in child failed"); - - printf ("child %d: sync\n", i); - - int e = pthread_barrier_wait (&bar); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("child: barrier_wait failed"); - exit (1); - } - - printf ("child %d: wait\n", i); - - err = pthread_cond_wait (&cond, &mut); - if (err != 0) - error (EXIT_FAILURE, err, "child %d: failed to wait", i); - - printf ("child %d: woken up\n", i); - - err = pthread_mutex_unlock (&mut); - if (err != 0) - error (EXIT_FAILURE, err, "child %d: unlock[2] failed", i); - - printf ("child %d: done\n", i); - - return NULL; -} - - -#define N 10 - - -static int -do_test (void) -{ - pthread_t th[N]; - int i; - int err; - - printf ("&cond = %p\n&mut = %p\n", &cond, &mut); - - if (pthread_barrier_init (&bar, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - pthread_attr_t at; - - if (pthread_attr_init (&at) != 0) - { - puts ("attr_init failed"); - return 1; - } - - if (pthread_attr_setstacksize (&at, 1 * 1024 * 1024) != 0) - { - puts ("attr_setstacksize failed"); - return 1; - } - - for (i = 0; i < N; ++i) - { - printf ("create thread %d\n", i); - - err = pthread_create (&th[i], &at, tf, (void *) (long int) i); - if (err != 0) - error (EXIT_FAILURE, err, "cannot create thread %d", i); - - printf ("wait for child %d\n", i); - - /* Wait for the child to start up and get the mutex for the - conditional variable. */ - int e = pthread_barrier_wait (&bar); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - } - - if (pthread_attr_destroy (&at) != 0) - { - puts ("attr_destroy failed"); - return 1; - } - - puts ("get lock outselves"); - - err = pthread_mutex_lock (&mut); - if (err != 0) - error (EXIT_FAILURE, err, "mut locking failed"); - - puts ("broadcast"); - - /* Wake up all threads. */ - err = pthread_cond_broadcast (&cond); - if (err != 0) - error (EXIT_FAILURE, err, "parent: broadcast failed"); - - err = pthread_mutex_unlock (&mut); - if (err != 0) - error (EXIT_FAILURE, err, "mut unlocking failed"); - - /* Join all threads. */ - for (i = 0; i < N; ++i) - { - printf ("join thread %d\n", i); - - err = pthread_join (th[i], NULL); - if (err != 0) - error (EXIT_FAILURE, err, "join of child %d failed", i); - } - - puts ("done"); - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond20.c b/test/nptl/tst-cond20.c deleted file mode 100644 index c1341a07b..000000000 --- a/test/nptl/tst-cond20.c +++ /dev/null @@ -1,169 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - -#define N 10 -#define ROUNDS 1000 -static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; -static pthread_cond_t cond2 = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER; -static pthread_barrier_t b; -static int count; - -static void * -tf (void *p) -{ - int i; - for (i = 0; i < ROUNDS; ++i) - { - pthread_mutex_lock (&mut); - - if (++count == N) - pthread_cond_signal (&cond2); - -#ifdef TIMED - struct timeval tv; - gettimeofday (&tv, NULL); - struct timespec ts; - /* Wait three seconds. */ - ts.tv_sec = tv.tv_sec + 3; - ts.tv_nsec = tv.tv_usec * 1000; - pthread_cond_timedwait (&cond, &mut, &ts); -#else - pthread_cond_wait (&cond, &mut); -#endif - - pthread_mutex_unlock (&mut); - - int err = pthread_barrier_wait (&b); - if (err != 0 && err != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("child: barrier_wait failed"); - exit (1); - } - - err = pthread_barrier_wait (&b); - if (err != 0 && err != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("child: barrier_wait failed"); - exit (1); - } - } - - return NULL; -} - - -static int -do_test (void) -{ - if (pthread_barrier_init (&b, NULL, N + 1) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - pthread_mutex_lock (&mut); - - int i, j, err; - pthread_t th[N]; - for (i = 0; i < N; ++i) - if ((err = pthread_create (&th[i], NULL, tf, NULL)) != 0) - { - printf ("cannot create thread %d: %s\n", i, strerror (err)); - return 1; - } - - for (i = 0; i < ROUNDS; ++i) - { - pthread_cond_wait (&cond2, &mut); - - if (i & 1) - pthread_mutex_unlock (&mut); - - if (i & 2) - pthread_cond_broadcast (&cond); - else if (i & 4) - for (j = 0; j < N; ++j) - pthread_cond_signal (&cond); - else - { - for (j = 0; j < (i / 8) % N; ++j) - pthread_cond_signal (&cond); - pthread_cond_broadcast (&cond); - } - - if ((i & 1) == 0) - pthread_mutex_unlock (&mut); - - err = pthread_cond_destroy (&cond); - if (err) - { - printf ("pthread_cond_destroy failed: %s\n", strerror (err)); - return 1; - } - - /* Now clobber the cond variable which has been successfully - destroyed above. */ - memset (&cond, (char) i, sizeof (cond)); - - err = pthread_barrier_wait (&b); - if (err != 0 && err != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("parent: barrier_wait failed"); - return 1; - } - - pthread_mutex_lock (&mut); - - err = pthread_barrier_wait (&b); - if (err != 0 && err != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("parent: barrier_wait failed"); - return 1; - } - - count = 0; - err = pthread_cond_init (&cond, NULL); - if (err) - { - printf ("pthread_cond_init failed: %s\n", strerror (err)); - return 1; - } - } - - for (i = 0; i < N; ++i) - if ((err = pthread_join (th[i], NULL)) != 0) - { - printf ("failed to join thread %d: %s\n", i, strerror (err)); - return 1; - } - - puts ("done"); - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond21.c b/test/nptl/tst-cond21.c deleted file mode 100644 index 89cb771b5..000000000 --- a/test/nptl/tst-cond21.c +++ /dev/null @@ -1,3 +0,0 @@ -#include -#define TIMED 1 -#include "tst-cond20.c" diff --git a/test/nptl/tst-cond22.c b/test/nptl/tst-cond22.c deleted file mode 100644 index bd978e50c..000000000 --- a/test/nptl/tst-cond22.c +++ /dev/null @@ -1,160 +0,0 @@ -#include -#include -#include - - -static pthread_barrier_t b; -static pthread_cond_t c = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; - - -static void -cl (void *arg) -{ - pthread_mutex_unlock (&m); -} - - -static void * -tf (void *arg) -{ - if (pthread_mutex_lock (&m) != 0) - { - printf ("%s: mutex_lock failed\n", __func__); - exit (1); - } - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("%s: barrier_wait failed\n", __func__); - exit (1); - } - pthread_cleanup_push (cl, NULL); - /* We have to loop here because the cancellation might come after - the cond_wait call left the cancelable area and is then waiting - on the mutex. In this case the beginning of the second cond_wait - call will cause the cancellation to happen. */ - do - if (pthread_cond_wait (&c, &m) != 0) - { - printf ("%s: cond_wait failed\n", __func__); - exit (1); - } - while (arg == NULL); - pthread_cleanup_pop (0); - if (pthread_mutex_unlock (&m) != 0) - { - printf ("%s: mutex_unlock failed\n", __func__); - exit (1); - } - return NULL; -} - - -static int -do_test (void) -{ - int status = 0; - - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("1st create failed"); - return 1; - } - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("1st barrier_wait failed"); - return 1; - } - if (pthread_mutex_lock (&m) != 0) - { - puts ("1st mutex_lock failed"); - return 1; - } - if (pthread_cond_signal (&c) != 0) - { - puts ("1st cond_signal failed"); - return 1; - } - if (pthread_cancel (th) != 0) - { - puts ("cancel failed"); - return 1; - } - if (pthread_mutex_unlock (&m) != 0) - { - puts ("1st mutex_unlock failed"); - return 1; - } - void *res; - if (pthread_join (th, &res) != 0) - { - puts ("1st join failed"); - return 1; - } - if (res != PTHREAD_CANCELED) - { - puts ("first thread not canceled"); - status = 1; - } - - printf ("cond = { %d, %x, %lld, %lld, %lld, %p, %u, %u }\n", - c.__data.__lock, c.__data.__futex, c.__data.__total_seq, - c.__data.__wakeup_seq, c.__data.__woken_seq, c.__data.__mutex, - c.__data.__nwaiters, c.__data.__broadcast_seq); - - if (pthread_create (&th, NULL, tf, (void *) 1l) != 0) - { - puts ("2nd create failed"); - return 1; - } - e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("2nd barrier_wait failed"); - return 1; - } - if (pthread_mutex_lock (&m) != 0) - { - puts ("2nd mutex_lock failed"); - return 1; - } - if (pthread_cond_signal (&c) != 0) - { - puts ("2nd cond_signal failed"); - return 1; - } - if (pthread_mutex_unlock (&m) != 0) - { - puts ("2nd mutex_unlock failed"); - return 1; - } - if (pthread_join (th, &res) != 0) - { - puts ("2nd join failed"); - return 1; - } - if (res != NULL) - { - puts ("2nd thread canceled"); - status = 1; - } - - printf ("cond = { %d, %x, %lld, %lld, %lld, %p, %u, %u }\n", - c.__data.__lock, c.__data.__futex, c.__data.__total_seq, - c.__data.__wakeup_seq, c.__data.__woken_seq, c.__data.__mutex, - c.__data.__nwaiters, c.__data.__broadcast_seq); - - return status; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond23.c b/test/nptl/tst-cond23.c deleted file mode 100644 index fb2936f00..000000000 --- a/test/nptl/tst-cond23.c +++ /dev/null @@ -1,183 +0,0 @@ -/* Copyright (C) 2008 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2008. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -#if defined _POSIX_CLOCK_SELECTION && _POSIX_CLOCK_SELECTION >= 0 -static int -check (pthread_condattr_t *condattr, int pshared, clockid_t cl) -{ - clockid_t cl2; - if (pthread_condattr_getclock (condattr, &cl2) != 0) - { - puts ("condattr_getclock failed"); - return 1; - } - if (cl != cl2) - { - printf ("condattr_getclock returned wrong value: %d, expected %d\n", - (int) cl2, (int) cl); - return 1; - } - - int p; - if (pthread_condattr_getpshared (condattr, &p) != 0) - { - puts ("condattr_getpshared failed"); - return 1; - } - else if (p != pshared) - { - printf ("condattr_getpshared returned wrong value: %d, expected %d\n", - p, pshared); - return 1; - } - - return 0; -} - -static int -run_test (clockid_t cl) -{ - pthread_condattr_t condattr; - - printf ("clock = %d\n", (int) cl); - - if (pthread_condattr_init (&condattr) != 0) - { - puts ("condattr_init failed"); - return 1; - } - - if (check (&condattr, PTHREAD_PROCESS_PRIVATE, CLOCK_REALTIME)) - return 1; - - if (pthread_condattr_setpshared (&condattr, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("1st condattr_setpshared failed"); - return 1; - } - - if (check (&condattr, PTHREAD_PROCESS_SHARED, CLOCK_REALTIME)) - return 1; - - if (pthread_condattr_setclock (&condattr, cl) != 0) - { - puts ("1st condattr_setclock failed"); - return 1; - } - - if (check (&condattr, PTHREAD_PROCESS_SHARED, cl)) - return 1; - - if (pthread_condattr_setpshared (&condattr, PTHREAD_PROCESS_PRIVATE) != 0) - { - puts ("2nd condattr_setpshared failed"); - return 1; - } - - if (check (&condattr, PTHREAD_PROCESS_PRIVATE, cl)) - return 1; - - if (pthread_condattr_setclock (&condattr, CLOCK_REALTIME) != 0) - { - puts ("2nd condattr_setclock failed"); - return 1; - } - - if (check (&condattr, PTHREAD_PROCESS_PRIVATE, CLOCK_REALTIME)) - return 1; - - if (pthread_condattr_setclock (&condattr, cl) != 0) - { - puts ("3rd condattr_setclock failed"); - return 1; - } - - if (check (&condattr, PTHREAD_PROCESS_PRIVATE, cl)) - return 1; - - if (pthread_condattr_setpshared (&condattr, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("3rd condattr_setpshared failed"); - return 1; - } - - if (check (&condattr, PTHREAD_PROCESS_SHARED, cl)) - return 1; - - if (pthread_condattr_setclock (&condattr, CLOCK_REALTIME) != 0) - { - puts ("4th condattr_setclock failed"); - return 1; - } - - if (check (&condattr, PTHREAD_PROCESS_SHARED, CLOCK_REALTIME)) - return 1; - - if (pthread_condattr_destroy (&condattr) != 0) - { - puts ("condattr_destroy failed"); - return 1; - } - - return 0; -} -#endif - - -static int -do_test (void) -{ -#if !defined _POSIX_CLOCK_SELECTION || _POSIX_CLOCK_SELECTION == -1 - - puts ("_POSIX_CLOCK_SELECTION not supported, test skipped"); - return 0; - -#else - - int res = run_test (CLOCK_REALTIME); - -# if defined _POSIX_MONOTONIC_CLOCK && _POSIX_MONOTONIC_CLOCK >= 0 -# if _POSIX_MONOTONIC_CLOCK == 0 - int e = sysconf (_SC_MONOTONIC_CLOCK); - if (e < 0) - puts ("CLOCK_MONOTONIC not supported"); - else if (e == 0) - { - puts ("sysconf (_SC_MONOTONIC_CLOCK) must not return 0"); - res = 1; - } - else -# endif - res |= run_test (CLOCK_MONOTONIC); -# else - puts ("_POSIX_MONOTONIC_CLOCK not defined"); -# endif - - return res; -#endif -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond3.c b/test/nptl/tst-cond3.c deleted file mode 100644 index b18183121..000000000 --- a/test/nptl/tst-cond3.c +++ /dev/null @@ -1,112 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -/* Note that this test requires more than the standard. It is - required that there are no spurious wakeups if only more readers - are added. This is a reasonable demand. */ - - -static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER; - - -#define N 10 - - -static void * -tf (void *arg) -{ - int i = (long int) arg; - int err; - - /* Get the mutex. */ - err = pthread_mutex_lock (&mut); - if (err != 0) - { - printf ("child %d mutex_lock failed: %s\n", i, strerror (err)); - exit (1); - } - - /* This call should never return. */ - pthread_cond_wait (&cond, &mut); - - /* We should never get here. */ - exit (1); - - return NULL; -} - - -static int -do_test (void) -{ - int err; - int i; - - for (i = 0; i < N; ++i) - { - pthread_t th; - - if (i != 0) - { - /* Release the mutex. */ - err = pthread_mutex_unlock (&mut); - if (err != 0) - { - printf ("mutex_unlock %d failed: %s\n", i, strerror (err)); - return 1; - } - } - - err = pthread_create (&th, NULL, tf, (void *) (long int) i); - if (err != 0) - { - printf ("create %d failed: %s\n", i, strerror (err)); - return 1; - } - - /* Get the mutex. */ - err = pthread_mutex_lock (&mut); - if (err != 0) - { - printf ("mutex_lock %d failed: %s\n", i, strerror (err)); - return 1; - } - } - - /* Set an alarm for 1 second. The wrapper will expect this. */ - alarm (1); - - /* This call should never return. */ - pthread_cond_wait (&cond, &mut); - - puts ("cond_wait returned"); - return 1; -} - - -#define EXPECTED_SIGNAL SIGALRM -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond4.c b/test/nptl/tst-cond4.c deleted file mode 100644 index 47a7380de..000000000 --- a/test/nptl/tst-cond4.c +++ /dev/null @@ -1,263 +0,0 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -int *condition; - -static int -do_test (void) -{ - size_t ps = sysconf (_SC_PAGESIZE); - char tmpfname[] = "/tmp/tst-cond4.XXXXXX"; - char data[ps]; - void *mem; - int fd; - pthread_mutexattr_t ma; - pthread_mutex_t *mut1; - pthread_mutex_t *mut2; - pthread_condattr_t ca; - pthread_cond_t *cond; - pid_t pid; - int result = 0; - int p; - - fd = mkstemp (tmpfname); - if (fd == -1) - { - printf ("cannot open temporary file: %m\n"); - return 1; - } - - /* Make sure it is always removed. */ - unlink (tmpfname); - - /* Create one page of data. */ - memset (data, '\0', ps); - - /* Write the data to the file. */ - if (write (fd, data, ps) != (ssize_t) ps) - { - puts ("short write"); - return 1; - } - - mem = mmap (NULL, ps, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (mem == MAP_FAILED) - { - printf ("mmap failed: %m\n"); - return 1; - } - - mut1 = (pthread_mutex_t *) (((uintptr_t) mem - + __alignof (pthread_mutex_t)) - & ~(__alignof (pthread_mutex_t) - 1)); - mut2 = mut1 + 1; - - cond = (pthread_cond_t *) (((uintptr_t) (mut2 + 1) - + __alignof (pthread_cond_t)) - & ~(__alignof (pthread_cond_t) - 1)); - - condition = (int *) (((uintptr_t) (cond + 1) + __alignof (int)) - & ~(__alignof (int) - 1)); - - if (pthread_mutexattr_init (&ma) != 0) - { - puts ("mutexattr_init failed"); - return 1; - } - - if (pthread_mutexattr_getpshared (&ma, &p) != 0) - { - puts ("1st mutexattr_getpshared failed"); - return 1; - } - - if (p != PTHREAD_PROCESS_PRIVATE) - { - puts ("default pshared value wrong"); - return 1; - } - - if (pthread_mutexattr_setpshared (&ma, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("mutexattr_setpshared failed"); - return 1; - } - - if (pthread_mutexattr_getpshared (&ma, &p) != 0) - { - puts ("2nd mutexattr_getpshared failed"); - return 1; - } - - if (p != PTHREAD_PROCESS_SHARED) - { - puts ("pshared value after setpshared call wrong"); - return 1; - } - - if (pthread_mutex_init (mut1, &ma) != 0) - { - puts ("1st mutex_init failed"); - return 1; - } - - if (pthread_mutex_init (mut2, &ma) != 0) - { - puts ("2nd mutex_init failed"); - return 1; - } - - if (pthread_condattr_init (&ca) != 0) - { - puts ("condattr_init failed"); - return 1; - } - - if (pthread_condattr_getpshared (&ca, &p) != 0) - { - puts ("1st condattr_getpshared failed"); - return 1; - } - - if (p != PTHREAD_PROCESS_PRIVATE) - { - puts ("default value for pshared in condattr wrong"); - return 1; - } - - if (pthread_condattr_setpshared (&ca, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("condattr_setpshared failed"); - return 1; - } - - if (pthread_condattr_getpshared (&ca, &p) != 0) - { - puts ("2nd condattr_getpshared failed"); - return 1; - } - - if (p != PTHREAD_PROCESS_SHARED) - { - puts ("pshared condattr still not set"); - return 1; - } - - if (pthread_cond_init (cond, &ca) != 0) - { - puts ("cond_init failed"); - return 1; - } - - if (pthread_mutex_lock (mut1) != 0) - { - puts ("parent: 1st mutex_lock failed"); - return 1; - } - - puts ("going to fork now"); - pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - return 1; - } - else if (pid == 0) - { - if (pthread_mutex_lock (mut2) != 0) - { - puts ("child: mutex_lock failed"); - return 1; - } - - if (pthread_mutex_unlock (mut1) != 0) - { - puts ("child: 1st mutex_unlock failed"); - return 1; - } - - do - if (pthread_cond_wait (cond, mut2) != 0) - { - puts ("child: cond_wait failed"); - return 1; - } - while (*condition == 0); - - if (pthread_mutex_unlock (mut2) != 0) - { - puts ("child: 2nd mutex_unlock failed"); - return 1; - } - - puts ("child done"); - } - else - { - int status; - - if (pthread_mutex_lock (mut1) != 0) - { - puts ("parent: 2nd mutex_lock failed"); - return 1; - } - - if (pthread_mutex_lock (mut2) != 0) - { - puts ("parent: 3rd mutex_lock failed"); - return 1; - } - - if (pthread_cond_signal (cond) != 0) - { - puts ("parent: cond_signal failed"); - return 1; - } - - *condition = 1; - - if (pthread_mutex_unlock (mut2) != 0) - { - puts ("parent: mutex_unlock failed"); - return 1; - } - - puts ("waiting for child"); - - waitpid (pid, &status, 0); - result |= status; - - puts ("parent done"); - } - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond5.c b/test/nptl/tst-cond5.c deleted file mode 100644 index 7da5b4110..000000000 --- a/test/nptl/tst-cond5.c +++ /dev/null @@ -1,105 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - - -static pthread_mutex_t mut; -static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; - - -static int -do_test (void) -{ - pthread_mutexattr_t ma; - int err; - struct timespec ts; - struct timeval tv; - - if (pthread_mutexattr_init (&ma) != 0) - { - puts ("mutexattr_init failed"); - exit (1); - } - - if (pthread_mutexattr_settype (&ma, PTHREAD_MUTEX_ERRORCHECK) != 0) - { - puts ("mutexattr_settype failed"); - exit (1); - } - - if (pthread_mutex_init (&mut, &ma) != 0) - { - puts ("mutex_init failed"); - exit (1); - } - - /* Get the mutex. */ - if (pthread_mutex_lock (&mut) != 0) - { - puts ("mutex_lock failed"); - exit (1); - } - - /* Waiting for the condition will fail. But we want the timeout here. */ - if (gettimeofday (&tv, NULL) != 0) - { - puts ("gettimeofday failed"); - exit (1); - } - - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ts.tv_nsec += 500000000; - if (ts.tv_nsec >= 1000000000) - { - ts.tv_nsec -= 1000000000; - ++ts.tv_sec; - } - err = pthread_cond_timedwait (&cond, &mut, &ts); - if (err == 0) - { - /* This could in theory happen but here without any signal and - additional waiter it should not. */ - puts ("cond_timedwait succeeded"); - exit (1); - } - else if (err != ETIMEDOUT) - { - printf ("cond_timedwait returned with %s\n", strerror (err)); - exit (1); - } - - err = pthread_mutex_unlock (&mut); - if (err != 0) - { - printf ("mutex_unlock failed: %s\n", strerror (err)); - exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond6.c b/test/nptl/tst-cond6.c deleted file mode 100644 index f28d4c157..000000000 --- a/test/nptl/tst-cond6.c +++ /dev/null @@ -1,233 +0,0 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -int *condition; - -static int -do_test (void) -{ - size_t ps = sysconf (_SC_PAGESIZE); - char tmpfname[] = "/tmp/tst-cond6.XXXXXX"; - char data[ps]; - void *mem; - int fd; - pthread_mutexattr_t ma; - pthread_mutex_t *mut1; - pthread_mutex_t *mut2; - pthread_condattr_t ca; - pthread_cond_t *cond; - pid_t pid; - int result = 0; - - fd = mkstemp (tmpfname); - if (fd == -1) - { - printf ("cannot open temporary file: %m\n"); - exit (1); - } - - /* Make sure it is always removed. */ - unlink (tmpfname); - - /* Create one page of data. */ - memset (data, '\0', ps); - - /* Write the data to the file. */ - if (write (fd, data, ps) != (ssize_t) ps) - { - puts ("short write"); - exit (1); - } - - mem = mmap (NULL, ps, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (mem == MAP_FAILED) - { - printf ("mmap failed: %m\n"); - exit (1); - } - - mut1 = (pthread_mutex_t *) (((uintptr_t) mem - + __alignof (pthread_mutex_t)) - & ~(__alignof (pthread_mutex_t) - 1)); - mut2 = mut1 + 1; - - cond = (pthread_cond_t *) (((uintptr_t) (mut2 + 1) - + __alignof (pthread_cond_t)) - & ~(__alignof (pthread_cond_t) - 1)); - - condition = (int *) (((uintptr_t) (cond + 1) + __alignof (int)) - & ~(__alignof (int) - 1)); - - if (pthread_mutexattr_init (&ma) != 0) - { - puts ("mutexattr_init failed"); - exit (1); - } - - if (pthread_mutexattr_setpshared (&ma, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("mutexattr_setpshared failed"); - exit (1); - } - - if (pthread_mutex_init (mut1, &ma) != 0) - { - puts ("1st mutex_init failed"); - exit (1); - } - - if (pthread_mutex_init (mut2, &ma) != 0) - { - puts ("2nd mutex_init failed"); - exit (1); - } - - if (pthread_condattr_init (&ca) != 0) - { - puts ("condattr_init failed"); - exit (1); - } - - if (pthread_condattr_setpshared (&ca, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("condattr_setpshared failed"); - exit (1); - } - - if (pthread_cond_init (cond, &ca) != 0) - { - puts ("cond_init failed"); - exit (1); - } - - if (pthread_mutex_lock (mut1) != 0) - { - puts ("parent: 1st mutex_lock failed"); - exit (1); - } - - puts ("going to fork now"); - pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - exit (1); - } - else if (pid == 0) - { - struct timespec ts; - struct timeval tv; - - if (pthread_mutex_lock (mut2) != 0) - { - puts ("child: mutex_lock failed"); - exit (1); - } - - if (pthread_mutex_unlock (mut1) != 0) - { - puts ("child: 1st mutex_unlock failed"); - exit (1); - } - - if (gettimeofday (&tv, NULL) != 0) - { - puts ("gettimeofday failed"); - exit (1); - } - - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ts.tv_nsec += 500000000; - if (ts.tv_nsec >= 1000000000) - { - ts.tv_nsec -= 1000000000; - ++ts.tv_sec; - } - - do - if (pthread_cond_timedwait (cond, mut2, &ts) != 0) - { - puts ("child: cond_wait failed"); - exit (1); - } - while (*condition == 0); - - if (pthread_mutex_unlock (mut2) != 0) - { - puts ("child: 2nd mutex_unlock failed"); - exit (1); - } - - puts ("child done"); - } - else - { - int status; - - if (pthread_mutex_lock (mut1) != 0) - { - puts ("parent: 2nd mutex_lock failed"); - exit (1); - } - - if (pthread_mutex_lock (mut2) != 0) - { - puts ("parent: 3rd mutex_lock failed"); - exit (1); - } - - if (pthread_cond_signal (cond) != 0) - { - puts ("parent: cond_signal failed"); - exit (1); - } - - *condition = 1; - - if (pthread_mutex_unlock (mut2) != 0) - { - puts ("parent: mutex_unlock failed"); - exit (1); - } - - puts ("waiting for child"); - - waitpid (pid, &status, 0); - result |= status; - - puts ("parent done"); - } - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond7.c b/test/nptl/tst-cond7.c deleted file mode 100644 index c48fda13c..000000000 --- a/test/nptl/tst-cond7.c +++ /dev/null @@ -1,167 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include - - -typedef struct - { - pthread_cond_t cond; - pthread_mutex_t lock; - pthread_t h; - } T; - - -static volatile bool done; - - -static void * -tf (void *arg) -{ - puts ("child created"); - - if (pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, NULL) != 0 - || pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, NULL) != 0) - { - puts ("cannot set cancellation options"); - exit (1); - } - - T *t = (T *) arg; - - if (pthread_mutex_lock (&t->lock) != 0) - { - puts ("child: lock failed"); - exit (1); - } - - done = true; - - if (pthread_cond_signal (&t->cond) != 0) - { - puts ("child: cond_signal failed"); - exit (1); - } - - if (pthread_cond_wait (&t->cond, &t->lock) != 0) - { - puts ("child: cond_wait failed"); - exit (1); - } - - if (pthread_mutex_unlock (&t->lock) != 0) - { - puts ("child: unlock failed"); - exit (1); - } - - return NULL; -} - - -static int -do_test (void) -{ - int i; -#define N 100 - T *t[N]; - for (i = 0; i < N; ++i) - { - printf ("round %d\n", i); - - t[i] = (T *) malloc (sizeof (T)); - if (t[i] == NULL) - { - puts ("out of memory"); - exit (1); - } - - if (pthread_mutex_init (&t[i]->lock, NULL) != 0 - || pthread_cond_init (&t[i]->cond, NULL) != 0) - { - puts ("an _init function failed"); - exit (1); - } - - if (pthread_mutex_lock (&t[i]->lock) != 0) - { - puts ("initial mutex_lock failed"); - exit (1); - } - - done = false; - - if (pthread_create (&t[i]->h, NULL, tf, t[i]) != 0) - { - puts ("pthread_create failed"); - exit (1); - } - - do - if (pthread_cond_wait (&t[i]->cond, &t[i]->lock) != 0) - { - puts ("cond_wait failed"); - exit (1); - } - while (! done); - - /* Release the lock since the cancel handler will get it. */ - if (pthread_mutex_unlock (&t[i]->lock) != 0) - { - puts ("mutex_unlock failed"); - exit (1); - } - - if (pthread_cancel (t[i]->h) != 0) - { - puts ("cancel failed"); - exit (1); - } - - puts ("parent: joining now"); - - void *result; - if (pthread_join (t[i]->h, &result) != 0) - { - puts ("join failed"); - exit (1); - } - - if (result != PTHREAD_CANCELED) - { - puts ("result != PTHREAD_CANCELED"); - exit (1); - } - } - - for (i = 0; i < N; ++i) - free (t[i]); - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond8.c b/test/nptl/tst-cond8.c deleted file mode 100644 index fb13fa46c..000000000 --- a/test/nptl/tst-cond8.c +++ /dev/null @@ -1,276 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t mut = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP; - -static pthread_barrier_t bar; - - -static void -ch (void *arg) -{ - int e = pthread_mutex_lock (&mut); - if (e == 0) - { - puts ("mutex not locked at all by cond_wait"); - exit (1); - } - - if (e != EDEADLK) - { - puts ("no deadlock error signaled"); - exit (1); - } - - if (pthread_mutex_unlock (&mut) != 0) - { - puts ("ch: cannot unlock mutex"); - exit (1); - } - - puts ("ch done"); -} - - -static void * -tf1 (void *p) -{ - int err; - - if (pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, NULL) != 0 - || pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, NULL) != 0) - { - puts ("cannot set cancellation options"); - exit (1); - } - - err = pthread_mutex_lock (&mut); - if (err != 0) - { - puts ("child: cannot get mutex"); - exit (1); - } - - err = pthread_barrier_wait (&bar); - if (err != 0 && err != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("barrier_wait returned %d\n", err); - exit (1); - } - - puts ("child: got mutex; waiting"); - - pthread_cleanup_push (ch, NULL); - - pthread_cond_wait (&cond, &mut); - - pthread_cleanup_pop (0); - - puts ("child: cond_wait should not have returned"); - - return NULL; -} - - -static void * -tf2 (void *p) -{ - int err; - - if (pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, NULL) != 0 - || pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, NULL) != 0) - { - puts ("cannot set cancellation options"); - exit (1); - } - - err = pthread_mutex_lock (&mut); - if (err != 0) - { - puts ("child: cannot get mutex"); - exit (1); - } - - err = pthread_barrier_wait (&bar); - if (err != 0 && err != PTHREAD_BARRIER_SERIAL_THREAD) - { - printf ("barrier_wait returned %d\n", err); - exit (1); - } - - puts ("child: got mutex; waiting"); - - pthread_cleanup_push (ch, NULL); - - /* Current time. */ - struct timeval tv; - (void) gettimeofday (&tv, NULL); - /* +1000 seconds in correct format. */ - struct timespec ts; - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ts.tv_sec += 1000; - - pthread_cond_timedwait (&cond, &mut, &ts); - - pthread_cleanup_pop (0); - - puts ("child: cond_wait should not have returned"); - - return NULL; -} - - -static int -do_test (void) -{ - pthread_t th; - int err; - - printf ("&cond = %p\n&mut = %p\n", &cond, &mut); - - puts ("parent: get mutex"); - - err = pthread_barrier_init (&bar, NULL, 2); - if (err != 0) - { - puts ("parent: cannot init barrier"); - exit (1); - } - - puts ("parent: create child"); - - err = pthread_create (&th, NULL, tf1, NULL); - if (err != 0) - { - puts ("parent: cannot create thread"); - exit (1); - } - - puts ("parent: wait for child to lock mutex"); - - err = pthread_barrier_wait (&bar); - if (err != 0 && err != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("parent: cannot wait for barrier"); - exit (1); - } - - err = pthread_mutex_lock (&mut); - if (err != 0) - { - puts ("parent: mutex_lock failed"); - exit (1); - } - - err = pthread_mutex_unlock (&mut); - if (err != 0) - { - puts ("parent: mutex_unlock failed"); - exit (1); - } - - if (pthread_cancel (th) != 0) - { - puts ("cannot cancel thread"); - exit (1); - } - - void *r; - err = pthread_join (th, &r); - if (err != 0) - { - puts ("parent: failed to join"); - exit (1); - } - - if (r != PTHREAD_CANCELED) - { - puts ("child hasn't been canceled"); - exit (1); - } - - - - puts ("parent: create 2nd child"); - - err = pthread_create (&th, NULL, tf2, NULL); - if (err != 0) - { - puts ("parent: cannot create thread"); - exit (1); - } - - puts ("parent: wait for child to lock mutex"); - - err = pthread_barrier_wait (&bar); - if (err != 0 && err != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("parent: cannot wait for barrier"); - exit (1); - } - - err = pthread_mutex_lock (&mut); - if (err != 0) - { - puts ("parent: mutex_lock failed"); - exit (1); - } - - err = pthread_mutex_unlock (&mut); - if (err != 0) - { - puts ("parent: mutex_unlock failed"); - exit (1); - } - - if (pthread_cancel (th) != 0) - { - puts ("cannot cancel thread"); - exit (1); - } - - err = pthread_join (th, &r); - if (err != 0) - { - puts ("parent: failed to join"); - exit (1); - } - - if (r != PTHREAD_CANCELED) - { - puts ("child hasn't been canceled"); - exit (1); - } - - puts ("done"); - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cond9.c b/test/nptl/tst-cond9.c deleted file mode 100644 index dcb597ddf..000000000 --- a/test/nptl/tst-cond9.c +++ /dev/null @@ -1,149 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t mut = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP; - - -static void * -tf (void *arg) -{ - int err = pthread_cond_wait (&cond, &mut); - if (err == 0) - { - puts ("cond_wait did not fail"); - exit (1); - } - - if (err != EPERM) - { - printf ("cond_wait didn't return EPERM but %d\n", err); - exit (1); - } - - - /* Current time. */ - struct timeval tv; - (void) gettimeofday (&tv, NULL); - /* +1000 seconds in correct format. */ - struct timespec ts; - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ts.tv_sec += 1000; - - err = pthread_cond_timedwait (&cond, &mut, &ts); - if (err == 0) - { - puts ("cond_timedwait did not fail"); - exit (1); - } - - if (err != EPERM) - { - printf ("cond_timedwait didn't return EPERM but %d\n", err); - exit (1); - } - - return (void *) 1l; -} - - -static int -do_test (void) -{ - pthread_t th; - int err; - - printf ("&cond = %p\n&mut = %p\n", &cond, &mut); - - err = pthread_cond_wait (&cond, &mut); - if (err == 0) - { - puts ("cond_wait did not fail"); - exit (1); - } - - if (err != EPERM) - { - printf ("cond_wait didn't return EPERM but %d\n", err); - exit (1); - } - - - /* Current time. */ - struct timeval tv; - (void) gettimeofday (&tv, NULL); - /* +1000 seconds in correct format. */ - struct timespec ts; - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ts.tv_sec += 1000; - - err = pthread_cond_timedwait (&cond, &mut, &ts); - if (err == 0) - { - puts ("cond_timedwait did not fail"); - exit (1); - } - - if (err != EPERM) - { - printf ("cond_timedwait didn't return EPERM but %d\n", err); - exit (1); - } - - if (pthread_mutex_lock (&mut) != 0) - { - puts ("parent: mutex_lock failed"); - exit (1); - } - - puts ("creating thread"); - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - exit (1); - } - - void *r; - if (pthread_join (th, &r) != 0) - { - puts ("join failed"); - exit (1); - } - if (r != (void *) 1l) - { - puts ("thread has wrong return value"); - exit (1); - } - - puts ("done"); - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cpuclock1.c b/test/nptl/tst-cpuclock1.c deleted file mode 100644 index 9d68ec520..000000000 --- a/test/nptl/tst-cpuclock1.c +++ /dev/null @@ -1,306 +0,0 @@ -/* Test program for process CPU clocks. - Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* This function is intended to rack up both user and system time. */ -static void -chew_cpu (void) -{ - while (1) - { - static volatile char buf[4096]; - for (int i = 0; i < 100; ++i) - for (size_t j = 0; j < sizeof buf; ++j) - buf[j] = 0xaa; - int nullfd = open ("/dev/null", O_WRONLY); - for (int i = 0; i < 100; ++i) - for (size_t j = 0; j < sizeof buf; ++j) - buf[j] = 0xbb; - write (nullfd, (char *) buf, sizeof buf); - close (nullfd); - if (getppid () == 1) - _exit (2); - } -} - -static int -do_test (void) -{ - int result = 0; - clockid_t cl; - int e; - pid_t dead_child, child; - - /* Fork a child and let it die, to give us a PID known not be valid - (assuming PIDs don't wrap around during the test). */ - { - dead_child = fork (); - if (dead_child == 0) - _exit (0); - if (dead_child < 0) - { - perror ("fork"); - return 1; - } - int x; - if (wait (&x) != dead_child) - { - perror ("wait"); - return 2; - } - } - - /* POSIX says we should get ESRCH for this. */ - e = clock_getcpuclockid (dead_child, &cl); - if (e != ENOSYS && e != ESRCH && e != EPERM) - { - printf ("clock_getcpuclockid on dead PID %d => %s\n", - dead_child, strerror (e)); - result = 1; - } - - /* Now give us a live child eating up CPU time. */ - child = fork (); - if (child == 0) - { - chew_cpu (); - _exit (1); - } - if (child < 0) - { - perror ("fork"); - return 1; - } - - e = clock_getcpuclockid (child, &cl); - if (e == EPERM) - { - puts ("clock_getcpuclockid does not support other processes"); - goto done; - } - if (e != 0) - { - printf ("clock_getcpuclockid on live PID %d => %s\n", - child, strerror (e)); - result = 1; - goto done; - } - - const clockid_t child_clock = cl; - struct timespec res; - if (clock_getres (child_clock, &res) < 0) - { - printf ("clock_getres on live PID %d clock %lx => %s\n", - child, (unsigned long int) child_clock, strerror (errno)); - result = 1; - goto done; - } - printf ("live PID %d clock %lx resolution %lu.%.9lu\n", - child, (unsigned long int) child_clock, res.tv_sec, res.tv_nsec); - - struct timespec before, after; - if (clock_gettime (child_clock, &before) < 0) - { - printf ("clock_gettime on live PID %d clock %lx => %s\n", - child, (unsigned long int) child_clock, strerror (errno)); - result = 1; - goto done; - } - printf ("live PID %d before sleep => %lu.%.9lu\n", - child, before.tv_sec, before.tv_nsec); - - struct timespec sleeptime = { .tv_nsec = 500000000 }; - nanosleep (&sleeptime, NULL); - - if (clock_gettime (child_clock, &after) < 0) - { - printf ("clock_gettime on live PID %d clock %lx => %s\n", - child, (unsigned long int) child_clock, strerror (errno)); - result = 1; - goto done; - } - printf ("live PID %d after sleep => %lu.%.9lu\n", - child, after.tv_sec, after.tv_nsec); - - struct timespec diff = { .tv_sec = after.tv_sec - before.tv_sec, - .tv_nsec = after.tv_nsec - before.tv_nsec }; - if (diff.tv_nsec < 0) - { - --diff.tv_sec; - diff.tv_nsec += 1000000000; - } - if (diff.tv_sec != 0 - || diff.tv_nsec > 600000000 - || diff.tv_nsec < 100000000) - { - printf ("before - after %lu.%.9lu outside reasonable range\n", - diff.tv_sec, diff.tv_nsec); - result = 1; - } - - sleeptime.tv_nsec = 100000000; - e = clock_nanosleep (child_clock, 0, &sleeptime, NULL); - if (e == EINVAL || e == ENOTSUP || e == ENOSYS) - { - printf ("clock_nanosleep not supported for other process clock: %s\n", - strerror (e)); - } - else if (e != 0) - { - printf ("clock_nanosleep on other process clock: %s\n", strerror (e)); - result = 1; - } - else - { - struct timespec afterns; - if (clock_gettime (child_clock, &afterns) < 0) - { - printf ("clock_gettime on live PID %d clock %lx => %s\n", - child, (unsigned long int) child_clock, strerror (errno)); - result = 1; - } - else - { - struct timespec d = { .tv_sec = afterns.tv_sec - after.tv_sec, - .tv_nsec = afterns.tv_nsec - after.tv_nsec }; - if (d.tv_nsec < 0) - { - --d.tv_sec; - d.tv_nsec += 1000000000; - } - if (d.tv_sec > 0 - || d.tv_nsec < sleeptime.tv_nsec - || d.tv_nsec > sleeptime.tv_nsec * 2) - { - printf ("nanosleep time %lu.%.9lu outside reasonable range\n", - d.tv_sec, d.tv_nsec); - result = 1; - } - } - } - - if (kill (child, SIGKILL) != 0) - { - perror ("kill"); - result = 2; - goto done; - } - - /* Wait long enough to let the child finish dying. */ - - sleeptime.tv_nsec = 200000000; - nanosleep (&sleeptime, NULL); - - struct timespec dead; - if (clock_gettime (child_clock, &dead) < 0) - { - printf ("clock_gettime on dead PID %d clock %lx => %s\n", - child, (unsigned long int) child_clock, strerror (errno)); - result = 1; - goto done; - } - printf ("dead PID %d => %lu.%.9lu\n", - child, dead.tv_sec, dead.tv_nsec); - - diff.tv_sec = dead.tv_sec - after.tv_sec; - diff.tv_nsec = dead.tv_nsec - after.tv_nsec; - if (diff.tv_nsec < 0) - { - --diff.tv_sec; - diff.tv_nsec += 1000000000; - } - if (diff.tv_sec != 0 || diff.tv_nsec > 200000000) - { - printf ("dead - after %lu.%.9lu outside reasonable range\n", - diff.tv_sec, diff.tv_nsec); - result = 1; - } - - /* Now reap the child and verify that its clock is no longer valid. */ - { - int x; - if (waitpid (child, &x, 0) != child) - { - perror ("waitpid"); - result = 1; - } - } - - if (clock_gettime (child_clock, &dead) == 0) - { - printf ("clock_gettime on reaped PID %d clock %lx => %lu%.9lu\n", - child, (unsigned long int) child_clock, - dead.tv_sec, dead.tv_nsec); - result = 1; - } - else - { - if (errno != EINVAL) - result = 1; - printf ("clock_gettime on reaped PID %d clock %lx => %s\n", - child, (unsigned long int) child_clock, strerror (errno)); - } - - if (clock_getres (child_clock, &dead) == 0) - { - printf ("clock_getres on reaped PID %d clock %lx => %lu%.9lu\n", - child, (unsigned long int) child_clock, - dead.tv_sec, dead.tv_nsec); - result = 1; - } - else - { - if (errno != EINVAL) - result = 1; - printf ("clock_getres on reaped PID %d clock %lx => %s\n", - child, (unsigned long int) child_clock, strerror (errno)); - } - - return result; - - done: - { - if (kill (child, SIGKILL) != 0 && errno != ESRCH) - { - perror ("kill"); - return 2; - } - int x; - if (waitpid (child, &x, 0) != child && errno != ECHILD) - { - perror ("waitpid"); - return 2; - } - } - - return result; -} - - -#define TIMEOUT 5 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cpuclock2.c b/test/nptl/tst-cpuclock2.c deleted file mode 100644 index d08dc6211..000000000 --- a/test/nptl/tst-cpuclock2.c +++ /dev/null @@ -1,331 +0,0 @@ -/* Test program for process and thread CPU clocks. - Copyright (C) 2005 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include - -#if (_POSIX_THREADS - 0) <= 0 - -# define TEST_FUNCTION 0 - -#else - -#include -#include -#include -#include -#include -#include -#include - -static pthread_barrier_t barrier; - -/* This function is intended to rack up both user and system time. */ -static void * -chew_cpu (void *arg) -{ - pthread_barrier_wait (&barrier); - - while (1) - { - static volatile char buf[4096]; - for (int i = 0; i < 100; ++i) - for (size_t j = 0; j < sizeof buf; ++j) - buf[j] = 0xaa; - int nullfd = open ("/dev/null", O_WRONLY); - for (int i = 0; i < 100; ++i) - for (size_t j = 0; j < sizeof buf; ++j) - buf[j] = 0xbb; - write (nullfd, (char *) buf, sizeof buf); - close (nullfd); - } - - return NULL; -} - -static unsigned long long int -tsdiff (const struct timespec *before, const struct timespec *after) -{ - struct timespec diff = { .tv_sec = after->tv_sec - before->tv_sec, - .tv_nsec = after->tv_nsec - before->tv_nsec }; - while (diff.tv_nsec < 0) - { - --diff.tv_sec; - diff.tv_nsec += 1000000000; - } - return diff.tv_sec * 1000000000ULL + diff.tv_nsec; -} - -static unsigned long long int -test_nanosleep (clockid_t clock, const char *which, - const struct timespec *before, int *bad) -{ - const struct timespec sleeptime = { .tv_nsec = 100000000 }; - int e = clock_nanosleep (clock, 0, &sleeptime, NULL); - if (e == EINVAL || e == ENOTSUP || e == ENOSYS) - { - printf ("clock_nanosleep not supported for %s CPU clock: %s\n", - which, strerror (e)); - return 0; - } - if (e != 0) - { - printf ("clock_nanosleep on %s CPU clock: %s\n", which, strerror (e)); - *bad = 1; - return 0; - } - - struct timespec after; - if (clock_gettime (clock, &after) < 0) - { - printf ("clock_gettime on %s CPU clock %lx => %s\n", - which, (unsigned long int) clock, strerror (errno)); - *bad = 1; - return 0; - } - - unsigned long long int diff = tsdiff (before, &after); - if (diff < sleeptime.tv_nsec || diff > sleeptime.tv_nsec * 2) - { - printf ("clock_nanosleep on %s slept %llu (outside reasonable range)\n", - which, diff); - *bad = 1; - return diff; - } - - struct timespec sleeptimeabs = sleeptime; - sleeptimeabs.tv_sec += after.tv_sec; - sleeptimeabs.tv_nsec += after.tv_nsec; - while (sleeptimeabs.tv_nsec > 1000000000) - { - ++sleeptimeabs.tv_sec; - sleeptimeabs.tv_nsec -= 1000000000; - } - e = clock_nanosleep (clock, TIMER_ABSTIME, &sleeptimeabs, NULL); - if (e != 0) - { - printf ("absolute clock_nanosleep on %s CPU clock: %s\n", - which, strerror (e)); - *bad = 1; - return diff; - } - - struct timespec afterabs; - if (clock_gettime (clock, &afterabs) < 0) - { - printf ("clock_gettime on %s CPU clock %lx => %s\n", - which, (unsigned long int) clock, strerror (errno)); - *bad = 1; - return diff; - } - - unsigned long long int sleepdiff = tsdiff (&sleeptimeabs, &afterabs); - if (sleepdiff > sleeptime.tv_nsec) - { - printf ("\ -absolute clock_nanosleep on %s %llu past target (outside reasonable range)\n", - which, sleepdiff); - *bad = 1; - } - - unsigned long long int diffabs = tsdiff (&after, &afterabs); - if (diffabs < sleeptime.tv_nsec || diffabs > sleeptime.tv_nsec * 2) - { - printf ("\ -absolute clock_nanosleep on %s slept %llu (outside reasonable range)\n", - which, diffabs); - *bad = 1; - } - - return diff + diffabs; -} - - - -static int -do_test (void) -{ - int result = 0; - clockid_t process_clock, th_clock, my_thread_clock; - int e; - pthread_t th; - - e = clock_getcpuclockid (0, &process_clock); - if (e != 0) - { - printf ("clock_getcpuclockid on self => %s\n", strerror (e)); - return 1; - } - - e = pthread_getcpuclockid (pthread_self (), &my_thread_clock); - if (e != 0) - { - printf ("pthread_getcpuclockid on self => %s\n", strerror (e)); - return 1; - } - - /* This is a kludge. This test fails if the semantics of thread and - process clocks are wrong. The old code using hp-timing without kernel - support has bogus semantics if there are context switches. We don't - fail to report failure when the proper functionality is not available - in the kernel. It so happens that Linux kernels without correct CPU - clock support also lack CPU timer support, so we use use that to guess - that we are using the bogus code and not test it. */ - timer_t t; - if (timer_create (my_thread_clock, NULL, &t) != 0) - { - printf ("timer_create: %m\n"); - puts ("No support for CPU clocks with good semantics, skipping test"); - return 0; - } - timer_delete (t); - - - pthread_barrier_init (&barrier, NULL, 2); - - e = pthread_create (&th, NULL, chew_cpu, NULL); - if (e != 0) - { - printf ("pthread_create: %s\n", strerror (e)); - return 1; - } - - e = pthread_getcpuclockid (th, &th_clock); - if (e == ENOENT || e == ENOSYS || e == ENOTSUP) - { - puts ("pthread_getcpuclockid does not support other threads"); - return 1; - } - - pthread_barrier_wait (&barrier); - - struct timespec res; - if (clock_getres (th_clock, &res) < 0) - { - printf ("clock_getres on thread clock %lx => %s\n", - (unsigned long int) th_clock, strerror (errno)); - result = 1; - return 1; - } - printf ("live thread clock %lx resolution %lu.%.9lu\n", - (unsigned long int) th_clock, res.tv_sec, res.tv_nsec); - - struct timespec process_before, process_after; - if (clock_gettime (process_clock, &process_before) < 0) - { - printf ("clock_gettime on process clock %lx => %s\n", - (unsigned long int) th_clock, strerror (errno)); - return 1; - } - - struct timespec before, after; - if (clock_gettime (th_clock, &before) < 0) - { - printf ("clock_gettime on live thread clock %lx => %s\n", - (unsigned long int) th_clock, strerror (errno)); - return 1; - } - printf ("live thread before sleep => %lu.%.9lu\n", - before.tv_sec, before.tv_nsec); - - struct timespec me_before, me_after; - if (clock_gettime (my_thread_clock, &me_before) < 0) - { - printf ("clock_gettime on live thread clock %lx => %s\n", - (unsigned long int) th_clock, strerror (errno)); - return 1; - } - printf ("self thread before sleep => %lu.%.9lu\n", - me_before.tv_sec, me_before.tv_nsec); - - struct timespec sleeptime = { .tv_nsec = 500000000 }; - nanosleep (&sleeptime, NULL); - - if (clock_gettime (th_clock, &after) < 0) - { - printf ("clock_gettime on live thread clock %lx => %s\n", - (unsigned long int) th_clock, strerror (errno)); - return 1; - } - printf ("live thread after sleep => %lu.%.9lu\n", - after.tv_sec, after.tv_nsec); - - if (clock_gettime (process_clock, &process_after) < 0) - { - printf ("clock_gettime on process clock %lx => %s\n", - (unsigned long int) th_clock, strerror (errno)); - return 1; - } - - if (clock_gettime (my_thread_clock, &me_after) < 0) - { - printf ("clock_gettime on live thread clock %lx => %s\n", - (unsigned long int) th_clock, strerror (errno)); - return 1; - } - printf ("self thread after sleep => %lu.%.9lu\n", - me_after.tv_sec, me_after.tv_nsec); - - unsigned long long int th_diff = tsdiff (&before, &after); - unsigned long long int pdiff = tsdiff (&process_before, &process_after); - unsigned long long int my_diff = tsdiff (&me_before, &me_after); - - if (th_diff < 100000000 || th_diff > 600000000) - { - printf ("thread before - after %llu outside reasonable range\n", - th_diff); - result = 1; - } - - if (my_diff > 100000000) - { - printf ("self thread before - after %llu outside reasonable range\n", - my_diff); - result = 1; - } - - if (pdiff < th_diff) - { - printf ("process before - after %llu outside reasonable range (%llu)\n", - pdiff, th_diff); - result = 1; - } - - process_after.tv_nsec += test_nanosleep (th_clock, "thread", - &after, &result); - process_after.tv_nsec += test_nanosleep (process_clock, "process", - &process_after, &result); - test_nanosleep (CLOCK_PROCESS_CPUTIME_ID, - "PROCESS_CPUTIME_ID", &process_after, &result); - - pthread_cancel (th); - - e = clock_nanosleep (CLOCK_THREAD_CPUTIME_ID, 0, &sleeptime, NULL); - if (e != EINVAL) - { - printf ("clock_nanosleep CLOCK_THREAD_CPUTIME_ID: %s\n", - strerror (e)); - result = 1; - } - - return result; -} -# define TIMEOUT 8 -# define TEST_FUNCTION do_test () -#endif - -#include "../test-skeleton.c" diff --git a/test/nptl/tst-cputimer1.c b/test/nptl/tst-cputimer1.c deleted file mode 100644 index 8f5dd76cf..000000000 --- a/test/nptl/tst-cputimer1.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Tests for POSIX timer implementation using process CPU clock. */ - -#include - -#if _POSIX_THREADS && defined _POSIX_CPUTIME - -#include -#include -#include -#include -#include -#include - -#define TEST_CLOCK CLOCK_PROCESS_CPUTIME_ID -#define TEST_CLOCK_MISSING(clock) \ - (setup_test () ? "process CPU clock timer support" : NULL) - -/* This function is intended to rack up both user and system time. */ -static void * -chew_cpu (void *arg) -{ - while (1) - { - static volatile char buf[4096]; - for (int i = 0; i < 100; ++i) - for (size_t j = 0; j < sizeof buf; ++j) - buf[j] = 0xaa; - int nullfd = open ("/dev/null", O_WRONLY); - for (int i = 0; i < 100; ++i) - for (size_t j = 0; j < sizeof buf; ++j) - buf[j] = 0xbb; - write (nullfd, (char *) buf, sizeof buf); - close (nullfd); - } - - return NULL; -} - -static int -setup_test (void) -{ - /* Test timers on our own process CPU clock by having a worker thread - eating CPU. First make sure we can make such timers at all. */ - - timer_t t; - if (timer_create (TEST_CLOCK, NULL, &t) != 0) - { - printf ("timer_create: %m\n"); - return 1; - } - timer_delete (t); - - pthread_t th; - int e = pthread_create (&th, NULL, chew_cpu, NULL); - if (e != 0) - { - printf ("pthread_create: %s\n", strerror (e)); - exit (1); - } - - return 0; -} - -#else -# define TEST_CLOCK_MISSING(clock) "process clocks" -#endif - -#include "tst-timer4.c" diff --git a/test/nptl/tst-cputimer2.c b/test/nptl/tst-cputimer2.c deleted file mode 100644 index 397d7998c..000000000 --- a/test/nptl/tst-cputimer2.c +++ /dev/null @@ -1,83 +0,0 @@ -/* Tests for POSIX timer implementation using thread CPU clock. */ - -#include - -#if _POSIX_THREADS && defined _POSIX_CPUTIME - -#include -#include -#include -#include -#include -#include -#include - -static clockid_t worker_thread_clock; - -#define TEST_CLOCK worker_thread_clock -#define TEST_CLOCK_MISSING(clock) \ - (setup_test () ? "thread CPU clock timer support" : NULL) - -/* This function is intended to rack up both user and system time. */ -static void * -chew_cpu (void *arg) -{ - while (1) - { - static volatile char buf[4096]; - for (int i = 0; i < 100; ++i) - for (size_t j = 0; j < sizeof buf; ++j) - buf[j] = 0xaa; - int nullfd = open ("/dev/null", O_WRONLY); - for (int i = 0; i < 100; ++i) - for (size_t j = 0; j < sizeof buf; ++j) - buf[j] = 0xbb; - write (nullfd, (char *) buf, sizeof buf); - close (nullfd); - } - - return NULL; -} - -static int -setup_test (void) -{ - /* Test timers on a thread CPU clock by having a worker thread eating - CPU. First make sure we can make such timers at all. */ - - pthread_t th; - int e = pthread_create (&th, NULL, chew_cpu, NULL); - if (e != 0) - { - printf ("pthread_create: %s\n", strerror (e)); - exit (1); - } - - e = pthread_getcpuclockid (th, &worker_thread_clock); - if (e == EPERM || e == ENOENT || e == ENOTSUP) - { - puts ("pthread_getcpuclockid does not support other threads"); - return 1; - } - if (e != 0) - { - printf ("pthread_getcpuclockid: %s\n", strerror (e)); - exit (1); - } - - timer_t t; - if (timer_create (TEST_CLOCK, NULL, &t) != 0) - { - printf ("timer_create: %m\n"); - return 1; - } - timer_delete (t); - - return 0; -} - -#else -# define TEST_CLOCK_MISSING(clock) "process clocks" -#endif - -#include "tst-timer4.c" diff --git a/test/nptl/tst-cputimer3.c b/test/nptl/tst-cputimer3.c deleted file mode 100644 index 056766a37..000000000 --- a/test/nptl/tst-cputimer3.c +++ /dev/null @@ -1,130 +0,0 @@ -/* Tests for POSIX timer implementation using another process's CPU clock. */ - -#include - -#if _POSIX_THREADS && defined _POSIX_CPUTIME - -#include -#include -#include -#include -#include -#include -#include -#include - -static clockid_t child_clock; - -#define TEST_CLOCK child_clock -#define TEST_CLOCK_MISSING(clock) \ - (setup_test () ? "other-process CPU clock timer support" : NULL) - -/* This function is intended to rack up both user and system time. */ -static void -chew_cpu (void) -{ - while (1) - { - static volatile char buf[4096]; - for (int i = 0; i < 100; ++i) - for (size_t j = 0; j < sizeof buf; ++j) - buf[j] = 0xaa; - int nullfd = open ("/dev/null", O_WRONLY); - for (int i = 0; i < 100; ++i) - for (size_t j = 0; j < sizeof buf; ++j) - buf[j] = 0xbb; - write (nullfd, (char *) buf, sizeof buf); - close (nullfd); - if (getppid () == 1) - _exit (2); - } -} - -static pid_t child; -static void -cleanup_child (void) -{ - if (child <= 0) - return; - if (kill (child, SIGKILL) < 0 && errno != ESRCH) - printf ("cannot kill child %d: %m\n", child); - else - { - int status; - errno = 0; - if (waitpid (child, &status, 0) != child) - printf ("waitpid %d: %m\n", child); - } -} -#define CLEANUP_HANDLER cleanup_child () - -static int -setup_test (void) -{ - /* Test timers on a process CPU clock by having a child process eating - CPU. First make sure we can make such timers at all. */ - - int pipefd[2]; - if (pipe (pipefd) < 0) - { - printf ("pipe: %m\n"); - exit (1); - } - - child = fork (); - - if (child == 0) - { - char c; - close (pipefd[1]); - if (read (pipefd[0], &c, 1) == 1) - chew_cpu (); - _exit (1); - } - - if (child < 0) - { - printf ("fork: %m\n"); - exit (1); - } - - atexit (&cleanup_child); - - close (pipefd[0]); - - int e = clock_getcpuclockid (child, &child_clock); - if (e == EPERM) - { - puts ("clock_getcpuclockid does not support other processes"); - return 1; - } - if (e != 0) - { - printf ("clock_getcpuclockid: %s\n", strerror (e)); - exit (1); - } - - timer_t t; - if (timer_create (TEST_CLOCK, NULL, &t) != 0) - { - printf ("timer_create: %m\n"); - return 1; - } - timer_delete (t); - - /* Get the child started chewing. */ - if (write (pipefd[1], "x", 1) != 1) - { - printf ("write to pipe: %m\n"); - return 1; - } - close (pipefd[1]); - - return 0; -} - -#else -# define TEST_CLOCK_MISSING(clock) "process clocks" -#endif - -#include "tst-timer4.c" diff --git a/test/nptl/tst-detach1.c b/test/nptl/tst-detach1.c deleted file mode 100644 index 90a69fffd..000000000 --- a/test/nptl/tst-detach1.c +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static void * -tf (void *arg) -{ - return NULL; -} - - -static int -do_test (void) -{ - pthread_t th; - if (pthread_create (&th, NULL, tf, (void *) pthread_self ()) != 0) - { - puts ("create failed"); - exit (1); - } - - /* Give the child a chance to finish. */ - sleep (1); - - if (pthread_detach (th) != 0) - { - puts ("detach failed"); - exit (1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-dlsym1.c b/test/nptl/tst-dlsym1.c deleted file mode 100644 index 3744570c7..000000000 --- a/test/nptl/tst-dlsym1.c +++ /dev/null @@ -1,66 +0,0 @@ -/* Test case by Hui Huang . */ -#include -#include -#include -#include - - -static void * -start_routine (void *args) -{ - int i; - void **addrs = (void **) args; - for (i = 0; i < 10000; ++i) - addrs[i % 1024] = dlsym (NULL, "does_not_exist"); - - return addrs; -} - - -static int -do_test (void) -{ - pthread_t tid1, tid2, tid3; - - void *addrs1[1024]; - void *addrs2[1024]; - void *addrs3[1024]; - - if (pthread_create (&tid1, NULL, start_routine, addrs1) != 0) - { - puts ("1st create failed"); - exit (1); - } - if (pthread_create (&tid2, NULL, start_routine, addrs2) != 0) - { - puts ("2nd create failed"); - exit (1); - } - if (pthread_create (&tid3, NULL, start_routine, addrs3) != 0) - { - puts ("3rd create failed"); - exit (1); - } - - if (pthread_join (tid1, NULL) != 0) - { - puts ("1st join failed"); - exit (1); - } - if (pthread_join (tid2, NULL) != 0) - { - puts ("2nd join failed"); - exit (1); - } - if (pthread_join (tid3, NULL) != 0) - { - puts ("2rd join failed"); - exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-eintr1.c b/test/nptl/tst-eintr1.c deleted file mode 100644 index ac381a88b..000000000 --- a/test/nptl/tst-eintr1.c +++ /dev/null @@ -1,104 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - -#include "eintr.c" - - -static void * -tf2 (void *arg) -{ - return arg; -} - - -static void * -tf1 (void *arg) -{ - while (1) - { - pthread_t th; - - int e = pthread_create (&th, NULL, tf2, NULL); - if (e != 0) - { - if (e == EINTR) - { - puts ("pthread_create returned EINTR"); - exit (1); - } - - char buf[100]; - printf ("tf1: pthread_create failed: %s\n", - strerror_r (e, buf, sizeof (buf))); - exit (1); - } - - e = pthread_join (th, NULL); - if (e != 0) - { - if (e == EINTR) - { - puts ("pthread_join returned EINTR"); - exit (1); - } - - char buf[100]; - printf ("tf1: pthread_join failed: %s\n", - strerror_r (e, buf, sizeof (buf))); - exit (1); - } - } -} - - -static int -do_test (void) -{ - setup_eintr (SIGUSR1, NULL); - - int i; - for (i = 0; i < 10; ++i) - { - pthread_t th; - int e = pthread_create (&th, NULL, tf1, NULL); - if (e != 0) - { - char buf[100]; - printf ("main: pthread_create failed: %s\n", - strerror_r (e, buf, sizeof (buf))); - exit (1); - } - } - - (void) tf1 (NULL); - /* NOTREACHED */ - - return 0; -} - -#define EXPECTED_SIGNAL SIGALRM -#define TIMEOUT 3 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-eintr2.c b/test/nptl/tst-eintr2.c deleted file mode 100644 index f20c70922..000000000 --- a/test/nptl/tst-eintr2.c +++ /dev/null @@ -1,117 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - -#include "eintr.c" - - -static pthread_mutex_t m1 = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t m2 = PTHREAD_MUTEX_INITIALIZER; - - -static void * -tf1 (void *arg) -{ - struct timespec ts; - struct timeval tv; - - gettimeofday (&tv, NULL); - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ts.tv_sec += 10000; - - /* This call must never return. */ - int e = pthread_mutex_timedlock (&m1, &ts); - char buf[100]; - printf ("tf1: mutex_timedlock returned: %s\n", - strerror_r (e, buf, sizeof (buf))); - - exit (1); -} - - -static void * -tf2 (void *arg) -{ - while (1) - { - int e = pthread_mutex_lock (&m2); - if (e != 0) - { - puts ("tf2: mutex_lock failed"); - exit (1); - } - e = pthread_mutex_unlock (&m2); - if (e != 0) - { - puts ("tf2: mutex_unlock failed"); - exit (1); - } - struct timespec ts = { .tv_sec = 0, .tv_nsec = 10000000 }; - nanosleep (&ts, NULL); - } -} - - -static int -do_test (void) -{ - if (pthread_mutex_lock (&m1) != 0) - { - puts ("mutex_lock failed"); - exit (1); - } - - setup_eintr (SIGUSR1, NULL); - - pthread_t th; - char buf[100]; - int e = pthread_create (&th, NULL, tf1, NULL); - if (e != 0) - { - printf ("main: 1st pthread_create failed: %s\n", - strerror_r (e, buf, sizeof (buf))); - exit (1); - } - - e = pthread_create (&th, NULL, tf2, NULL); - if (e != 0) - { - printf ("main: 2nd pthread_create failed: %s\n", - strerror_r (e, buf, sizeof (buf))); - exit (1); - } - - /* This call must never return. */ - e = pthread_mutex_lock (&m1); - printf ("main: mutex_lock returned: %s\n", - strerror_r (e, buf, sizeof (buf))); - - return 0; -} - -#define EXPECTED_SIGNAL SIGALRM -#define TIMEOUT 3 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-eintr3.c b/test/nptl/tst-eintr3.c deleted file mode 100644 index 31497603b..000000000 --- a/test/nptl/tst-eintr3.c +++ /dev/null @@ -1,71 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - -#include "eintr.c" - - -static void * -tf (void *arg) -{ - pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; - pthread_mutex_lock (&m); - /* This call must not return. */ - pthread_mutex_lock (&m); - - puts ("tf: mutex_lock returned"); - exit (1); -} - - -static int -do_test (void) -{ - pthread_t self = pthread_self (); - - setup_eintr (SIGUSR1, &self); - - pthread_t th; - char buf[100]; - int e = pthread_create (&th, NULL, tf, NULL); - if (e != 0) - { - printf ("main: pthread_create failed: %s\n", - strerror_r (e, buf, sizeof (buf))); - exit (1); - } - - /* This call must never return. */ - e = pthread_join (th, NULL); - - if (e == EINTR) - puts ("pthread_join returned with EINTR"); - - return 0; -} - -#define EXPECTED_SIGNAL SIGALRM -#define TIMEOUT 1 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-eintr4.c b/test/nptl/tst-eintr4.c deleted file mode 100644 index f2290f9d0..000000000 --- a/test/nptl/tst-eintr4.c +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - -#include "eintr.c" - - -static int -do_test (void) -{ - pthread_t self = pthread_self (); - - setup_eintr (SIGUSR1, &self); - - pthread_barrier_t b; - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - /* This call must never return. */ - int e = pthread_barrier_wait (&b); - - if (e == EINTR) - puts ("pthread_join returned with EINTR"); - - return 0; -} - -#define EXPECTED_SIGNAL SIGALRM -#define TIMEOUT 1 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-eintr5.c b/test/nptl/tst-eintr5.c deleted file mode 100644 index f7cb76274..000000000 --- a/test/nptl/tst-eintr5.c +++ /dev/null @@ -1,80 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - -#include "eintr.c" - - -static pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; -static pthread_cond_t c = PTHREAD_COND_INITIALIZER; - - -static void * -tf (void *arg) -{ - struct timespec ts; - struct timeval tv; - - gettimeofday (&tv, NULL); - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ts.tv_sec += 10000; - - /* This call must never return. */ - int e = pthread_cond_timedwait (&c, &m, &ts); - char buf[100]; - printf ("tf: cond_timedwait returned: %s\n", - strerror_r (e, buf, sizeof (buf))); - - exit (1); -} - - -static int -do_test (void) -{ - setup_eintr (SIGUSR1, NULL); - - pthread_t th; - char buf[100]; - int e = pthread_create (&th, NULL, tf, NULL); - if (e != 0) - { - printf ("main: pthread_create failed: %s\n", - strerror_r (e, buf, sizeof (buf))); - exit (1); - } - - /* This call must never return. */ - e = pthread_cond_wait (&c, &m); - printf ("main: cond_wait returned: %s\n", - strerror_r (e, buf, sizeof (buf))); - - return 0; -} - -#define EXPECTED_SIGNAL SIGALRM -#define TIMEOUT 3 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-exec2.c b/test/nptl/tst-exec2.c deleted file mode 100644 index 061e3fc7c..000000000 --- a/test/nptl/tst-exec2.c +++ /dev/null @@ -1,153 +0,0 @@ -/* Thread with running thread calls exec. - Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -static void * -tf (void *arg) -{ - pthread_t th = (pthread_t) arg; - - if (pthread_join (th, NULL) == 0) - { - puts ("thread in parent joined!?"); - exit (1); - } - - puts ("join in thread in parent returned!?"); - exit (1); -} - - -static int -do_test (void) -{ - int fd[2]; - if (pipe (fd) != 0) - { - puts ("pipe failed"); - exit (1); - } - - /* Not interested in knowing when the pipe is closed. */ - if (sigignore (SIGPIPE) != 0) - { - puts ("sigignore failed"); - exit (1); - } - - pid_t pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - exit (1); - } - - if (pid == 0) - { - /* Use the fd for stdout. This is kind of ugly because it - substitutes the fd of stdout but we know what we are doing - here... */ - if (dup2 (fd[1], STDOUT_FILENO) != STDOUT_FILENO) - { - puts ("dup2 failed"); - exit (1); - } - - close (fd[0]); - - pthread_t th; - if (pthread_create (&th, NULL, tf, (void *) pthread_self ()) != 0) - { - puts ("create failed"); - exit (1); - } - - execl (_PATH_BSHELL, _PATH_BSHELL, "-c", "echo $$", NULL); - - puts ("execl failed"); - exit (1); - } - - close (fd[1]); - - char buf[200]; - ssize_t n; - bool seen_pid = false; - while (TEMP_FAILURE_RETRY ((n = read (fd[0], buf, sizeof (buf)))) > 0) - { - /* We only expect to read the PID. */ - char *endp; - long int rpid = strtol (buf, &endp, 10); - - if (*endp != '\n') - { - printf ("didn't parse whole line: \"%s\"\n", buf); - exit (1); - } - if (endp == buf) - { - puts ("read empty line"); - exit (1); - } - - if (rpid != pid) - { - printf ("found \"%s\", expected PID %ld\n", buf, (long int) pid); - exit (1); - } - - if (seen_pid) - { - puts ("found more than one PID line"); - exit (1); - } - seen_pid = true; - } - - close (fd[0]); - - int status; - int err = waitpid (pid, &status, 0); - if (err != pid) - { - puts ("waitpid failed"); - exit (1); - } - - if (!seen_pid) - { - puts ("didn't get PID"); - exit (1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-exec3.c b/test/nptl/tst-exec3.c deleted file mode 100644 index be4098b32..000000000 --- a/test/nptl/tst-exec3.c +++ /dev/null @@ -1,151 +0,0 @@ -/* Thread calls exec. - Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -static void * -tf (void *arg) -{ - execl (_PATH_BSHELL, _PATH_BSHELL, "-c", "echo $$", NULL); - - puts ("execl failed"); - exit (1); -} - - -static int -do_test (void) -{ - int fd[2]; - if (pipe (fd) != 0) - { - puts ("pipe failed"); - exit (1); - } - - /* Not interested in knowing when the pipe is closed. */ - if (sigignore (SIGPIPE) != 0) - { - puts ("sigignore failed"); - exit (1); - } - - pid_t pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - exit (1); - } - - if (pid == 0) - { - /* Use the fd for stdout. This is kind of ugly because it - substitutes the fd of stdout but we know what we are doing - here... */ - if (dup2 (fd[1], STDOUT_FILENO) != STDOUT_FILENO) - { - puts ("dup2 failed"); - exit (1); - } - - close (fd[0]); - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - exit (1); - } - - if (pthread_join (th, NULL) == 0) - { - puts ("join succeeded!?"); - exit (1); - } - - puts ("join returned!?"); - exit (1); - } - - close (fd[1]); - - char buf[200]; - ssize_t n; - bool seen_pid = false; - while (TEMP_FAILURE_RETRY ((n = read (fd[0], buf, sizeof (buf)))) > 0) - { - /* We only expect to read the PID. */ - char *endp; - long int rpid = strtol (buf, &endp, 10); - - if (*endp != '\n') - { - printf ("didn't parse whole line: \"%s\"\n", buf); - exit (1); - } - if (endp == buf) - { - puts ("read empty line"); - exit (1); - } - - if (rpid != pid) - { - printf ("found \"%s\", expected PID %ld\n", buf, (long int) pid); - exit (1); - } - - if (seen_pid) - { - puts ("found more than one PID line"); - exit (1); - } - seen_pid = true; - } - - close (fd[0]); - - int status; - int err = waitpid (pid, &status, 0); - if (err != pid) - { - puts ("waitpid failed"); - exit (1); - } - - if (!seen_pid) - { - puts ("didn't get PID"); - exit (1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-exec4.c b/test/nptl/tst-exec4.c deleted file mode 100644 index 1a4b88c69..000000000 --- a/test/nptl/tst-exec4.c +++ /dev/null @@ -1,115 +0,0 @@ -/* Signal handler and mask set in thread which calls exec. - Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static void * -tf (void *arg) -{ - /* Ignore SIGUSR1 and block SIGUSR2. */ - if (sigignore (SIGUSR1) != 0) - { - puts ("sigignore failed"); - exit (1); - } - - sigset_t ss; - sigemptyset (&ss); - sigaddset (&ss, SIGUSR2); - if (pthread_sigmask (SIG_BLOCK, &ss, NULL) != 0) - { - puts ("1st run: sigmask failed"); - exit (1); - } - - char **oldargv = (char **) arg; - size_t n = 1; - while (oldargv[n] != NULL) - ++n; - - char **argv = (char **) alloca ((n + 1) * sizeof (char *)); - for (n = 0; oldargv[n + 1] != NULL; ++n) - argv[n] = oldargv[n + 1]; - argv[n++] = (char *) "-d"; - argv[n] = NULL; - - execv (argv[0], argv); - - puts ("execv failed"); - - exit (1); -} - - -static int -do_test (int argc, char *argv[]) -{ - if (argc == 1) - { - /* This is the second call. Perform the test. */ - struct sigaction sa; - - if (sigaction (SIGUSR1, NULL, &sa) != 0) - { - puts ("2nd run: sigaction failed"); - return 1; - } - if (sa.sa_handler != SIG_IGN) - { - puts ("SIGUSR1 not ignored"); - return 1; - } - - sigset_t ss; - if (pthread_sigmask (SIG_SETMASK, NULL, &ss) != 0) - { - puts ("2nd run: sigmask failed"); - return 1; - } - if (! sigismember (&ss, SIGUSR2)) - { - puts ("SIGUSR2 not blocked"); - return 1; - } - - return 0; - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, argv) != 0) - { - puts ("create failed"); - exit (1); - } - - /* This call should never return. */ - pthread_join (th, NULL); - - puts ("join returned"); - - return 1; -} - -#define TEST_FUNCTION do_test (argc, argv) -#include "../test-skeleton.c" diff --git a/test/nptl/tst-exit1.c b/test/nptl/tst-exit1.c deleted file mode 100644 index 7f0fe7954..000000000 --- a/test/nptl/tst-exit1.c +++ /dev/null @@ -1,78 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -/* NOTE: this tests functionality beyond POSIX. POSIX does not allow - exit to be called more than once. */ - -#include -#include -#include - -static pthread_barrier_t b; - - -static void * -tf (void *arg) -{ - int r = pthread_barrier_wait (&b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - exit (0); -} - - -static int -do_test (void) -{ - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - exit (1); - } - - int r = pthread_barrier_wait (&b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - /* Do nothing. */ - if (pthread_join (th, NULL) == 0) - { - puts ("join succeeded!?"); - exit (1); - } - - puts ("join returned!?"); - exit (1); -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-exit2.c b/test/nptl/tst-exit2.c deleted file mode 100644 index 3f5ff27b0..000000000 --- a/test/nptl/tst-exit2.c +++ /dev/null @@ -1,40 +0,0 @@ -#include -#include -#include -#include -#include - - -static void * -tf (void *arg) -{ - while (1) - sleep (100); - - /* NOTREACHED */ - return NULL; -} - - -static int -do_test (void) -{ - pthread_t th; - - int e = pthread_create (&th, NULL, tf, NULL); - if (e != 0) - { - printf ("create failed: %s\n", strerror (e)); - return 1; - } - - /* Terminate only this thread. */ - pthread_exit (NULL); - - /* NOTREACHED */ - return 1; -} - -#define EXPECTED_SIGNAL SIGALRM -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-exit3.c b/test/nptl/tst-exit3.c deleted file mode 100644 index da92c82c0..000000000 --- a/test/nptl/tst-exit3.c +++ /dev/null @@ -1,81 +0,0 @@ -#include -#include -#include -#include -#include -#include - - -static pthread_barrier_t b; - - -static void * -tf2 (void *arg) -{ - while (1) - sleep (100); - - /* NOTREACHED */ - return NULL; -} - - -static void * -tf (void *arg) -{ - pthread_t th; - - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - e = pthread_create (&th, NULL, tf2, NULL); - if (e != 0) - { - printf ("create failed: %s\n", strerror (e)); - exit (1); - } - - /* Terminate only this thread. */ - return NULL; -} - - -static int -do_test (void) -{ - pthread_t th; - - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - int e = pthread_create (&th, NULL, tf, NULL); - if (e != 0) - { - printf ("create failed: %s\n", strerror (e)); - exit (1); - } - - e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - /* Terminate only this thread. */ - pthread_exit (NULL); - - /* NOTREACHED */ - return 1; -} - -#define EXPECTED_SIGNAL SIGALRM -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-fini1.c b/test/nptl/tst-fini1.c deleted file mode 100644 index b8c7a7306..000000000 --- a/test/nptl/tst-fini1.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include - -extern void m (void); - -int -main (void) -{ - alarm (5); - - m (); - - /* The destructor is supposed to run now. Make sure that if it is - not we will notice it by using 42 as the exit code. In case the - destructor is run it will terminate with status zero. */ - return 42; -} diff --git a/test/nptl/tst-fini1mod.c b/test/nptl/tst-fini1mod.c deleted file mode 100644 index 669c9af4c..000000000 --- a/test/nptl/tst-fini1mod.c +++ /dev/null @@ -1,71 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static void * -tf (void *arg) -{ - int fds[2]; - if (pipe (fds) != 0) - { - puts ("pipe failed"); - exit (1); - } - - char buf[10]; - read (fds[0], buf, sizeof (buf)); - - puts ("read returned"); - exit (1); -} - -static pthread_t th; - -static void -__attribute ((destructor)) -dest (void) -{ - if (pthread_cancel (th) != 0) - { - puts ("cancel failed"); - _exit (1); - } - void *r; - if (pthread_join (th, &r) != 0) - { - puts ("join failed"); - _exit (1); - } - /* Exit successfully. */ - _exit (0); -} - -void -m (void) -{ - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - _exit (1); - } -} diff --git a/test/nptl/tst-flock1.c b/test/nptl/tst-flock1.c deleted file mode 100644 index e271c8023..000000000 --- a/test/nptl/tst-flock1.c +++ /dev/null @@ -1,92 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; - -static int fd; - - -static void * -tf (void *arg) -{ - if (flock (fd, LOCK_SH | LOCK_NB) != 0) - { - puts ("second flock failed"); - exit (1); - } - - pthread_mutex_unlock (&lock); - - return NULL; -} - - -static int -do_test (void) -{ - char tmp[] = "/tmp/tst-flock1-XXXXXX"; - - fd = mkstemp (tmp); - if (fd == -1) - { - puts ("mkstemp failed"); - exit (1); - } - - unlink (tmp); - - write (fd, "foobar xyzzy", 12); - - if (flock (fd, LOCK_EX | LOCK_NB) != 0) - { - puts ("first flock failed"); - exit (1); - } - - pthread_mutex_lock (&lock); - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("pthread_create failed"); - exit (1); - } - - pthread_mutex_lock (&lock); - - void *result; - if (pthread_join (th, &result) != 0) - { - puts ("pthread_join failed"); - exit (1); - } - - close (fd); - - return result != NULL; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-flock2.c b/test/nptl/tst-flock2.c deleted file mode 100644 index 941c52ffe..000000000 --- a/test/nptl/tst-flock2.c +++ /dev/null @@ -1,259 +0,0 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include - - -static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t lock2 = PTHREAD_MUTEX_INITIALIZER; -static int fd; - - -static void * -tf (void *arg) -{ - struct flock fl = - { - .l_type = F_WRLCK, - .l_start = 0, - .l_whence = SEEK_SET, - .l_len = 10 - }; - if (TEMP_FAILURE_RETRY (fcntl (fd, F_SETLKW, &fl)) != 0) - { - puts ("fourth fcntl failed"); - exit (1); - } - - pthread_mutex_unlock (&lock); - - pthread_mutex_lock (&lock2); - - return NULL; -} - - -static int -do_test (void) -{ - char tmp[] = "/tmp/tst-flock2-XXXXXX"; - - fd = mkstemp (tmp); - if (fd == -1) - { - puts ("mkstemp failed"); - return 1; - } - - unlink (tmp); - - int i; - for (i = 0; i < 20; ++i) - write (fd, "foobar xyzzy", 12); - - pthread_barrier_t *b; - b = mmap (NULL, sizeof (pthread_barrier_t), PROT_READ | PROT_WRITE, - MAP_SHARED, fd, 0); - if (b == MAP_FAILED) - { - puts ("mmap failed"); - return 1; - } - - pthread_barrierattr_t ba; - if (pthread_barrierattr_init (&ba) != 0) - { - puts ("barrierattr_init failed"); - return 1; - } - - if (pthread_barrierattr_setpshared (&ba, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("barrierattr_setpshared failed"); - return 1; - } - - if (pthread_barrier_init (b, &ba, 2) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - if (pthread_barrierattr_destroy (&ba) != 0) - { - puts ("barrierattr_destroy failed"); - return 1; - } - - struct flock fl = - { - .l_type = F_WRLCK, - .l_start = 0, - .l_whence = SEEK_SET, - .l_len = 10 - }; - if (TEMP_FAILURE_RETRY (fcntl (fd, F_SETLKW, &fl)) != 0) - { - puts ("first fcntl failed"); - return 1; - } - - pid_t pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - return 1; - } - - if (pid == 0) - { - /* Make sure the child does not stay around indefinitely. */ - alarm (10); - - /* Try to get the lock. */ - if (TEMP_FAILURE_RETRY (fcntl (fd, F_SETLK, &fl)) == 0) - { - puts ("child: second flock succeeded"); - return 1; - } - } - - pthread_barrier_wait (b); - - if (pid != 0) - { - fl.l_type = F_UNLCK; - if (TEMP_FAILURE_RETRY (fcntl (fd, F_SETLKW, &fl)) != 0) - { - puts ("third fcntl failed"); - return 1; - } - } - - pthread_barrier_wait (b); - - pthread_t th; - if (pid == 0) - { - if (pthread_mutex_lock (&lock) != 0) - { - puts ("1st locking of lock failed"); - return 1; - } - - if (pthread_mutex_lock (&lock2) != 0) - { - puts ("1st locking of lock2 failed"); - return 1; - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("pthread_create failed"); - return 1; - } - - if (pthread_mutex_lock (&lock) != 0) - { - puts ("2nd locking of lock failed"); - return 1; - } - - puts ("child locked file"); - } - - pthread_barrier_wait (b); - - if (pid != 0) - { - fl.l_type = F_WRLCK; - if (TEMP_FAILURE_RETRY (fcntl (fd, F_SETLK, &fl)) == 0) - { - puts ("fifth fcntl succeeded"); - return 1; - } - - puts ("file locked by child"); - } - - pthread_barrier_wait (b); - - if (pid == 0) - { - if (pthread_mutex_unlock (&lock2) != 0) - { - puts ("unlock of lock2 failed"); - return 1; - } - - if (pthread_join (th, NULL) != 0) - { - puts ("join failed"); - return 1; - } - - puts ("child's thread terminated"); - } - - pthread_barrier_wait (b); - - if (pid != 0) - { - fl.l_type = F_WRLCK; - if (TEMP_FAILURE_RETRY (fcntl (fd, F_SETLK, &fl)) == 0) - { - puts ("fifth fcntl succeeded"); - return 1; - } - - puts ("file still locked"); - } - - pthread_barrier_wait (b); - - if (pid == 0) - { - _exit (0); - } - - int status; - if (TEMP_FAILURE_RETRY (waitpid (pid, &status, 0)) != pid) - { - puts ("waitpid failed"); - return 1; - } - puts ("child terminated"); - - if (TEMP_FAILURE_RETRY (fcntl (fd, F_SETLKW, &fl)) != 0) - { - puts ("sixth fcntl failed"); - return 1; - } - - return status; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-fork1.c b/test/nptl/tst-fork1.c deleted file mode 100644 index 0d8972831..000000000 --- a/test/nptl/tst-fork1.c +++ /dev/null @@ -1,119 +0,0 @@ -/* Copyright (C) 2002, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Roland McGrath , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - -static void * -thread_function (void * arg) -{ - int i = (intptr_t) arg; - int status; - pid_t pid; - pid_t pid2; - - pid = fork (); - switch (pid) - { - case 0: - printf ("%ld for %d\n", (long int) getpid (), i); - struct timespec ts = { .tv_sec = 0, .tv_nsec = 100000000 * i }; - nanosleep (&ts, NULL); - _exit (i); - break; - case -1: - printf ("fork: %m\n"); - return (void *) 1l; - break; - } - - pid2 = TEMP_FAILURE_RETRY (waitpid (pid, &status, 0)); - if (pid2 != pid) - { - printf ("waitpid returned %ld, expected %ld\n", - (long int) pid2, (long int) pid); - return (void *) 1l; - } - - printf ("%ld with %d, expected %d\n", - (long int) pid, WEXITSTATUS (status), i); - - return WEXITSTATUS (status) == i ? NULL : (void *) 1l; -} - -#define N 5 -static const int t[N] = { 7, 6, 5, 4, 3 }; - -int -main (void) -{ - pthread_t th[N]; - int i; - int result = 0; - pthread_attr_t at; - - if (pthread_attr_init (&at) != 0) - { - puts ("attr_init failed"); - return 1; - } - - if (pthread_attr_setstacksize (&at, 1 * 1024 * 1024) != 0) - { - puts ("attr_setstacksize failed"); - return 1; - } - - for (i = 0; i < N; ++i) - if (pthread_create (&th[i], NULL, thread_function, - (void *) (intptr_t) t[i]) != 0) - { - printf ("creation of thread %d failed\n", i); - exit (1); - } - - if (pthread_attr_destroy (&at) != 0) - { - puts ("attr_destroy failed"); - return 1; - } - - for (i = 0; i < N; ++i) - { - void *v; - if (pthread_join (th[i], &v) != 0) - { - printf ("join of thread %d failed\n", i); - result = 1; - } - else if (v != NULL) - { - printf ("join %d successful, but child failed\n", i); - result = 1; - } - else - printf ("join %d successful\n", i); - } - - return result; -} diff --git a/test/nptl/tst-fork2.c b/test/nptl/tst-fork2.c deleted file mode 100644 index d85ea21e1..000000000 --- a/test/nptl/tst-fork2.c +++ /dev/null @@ -1,89 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Roland McGrath , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static pid_t initial_pid; - - -static void * -tf (void *arg) -{ - if (getppid () != initial_pid) - { - printf ("getppid in thread returned %ld, expected %ld\n", - (long int) getppid (), (long int) initial_pid); - return (void *) -1; - } - - return NULL; -} - - -int -main (void) -{ - initial_pid = getpid (); - - pid_t child = fork (); - if (child == 0) - { - if (getppid () != initial_pid) - { - printf ("first getppid returned %ld, expected %ld\n", - (long int) getppid (), (long int) initial_pid); - exit (1); - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("pthread_create failed"); - exit (1); - } - - void *result; - if (pthread_join (th, &result) != 0) - { - puts ("pthread_join failed"); - exit (1); - } - - exit (result == NULL ? 0 : 1); - } - else if (child == -1) - { - puts ("initial fork failed"); - return 1; - } - - int status; - if (TEMP_FAILURE_RETRY (waitpid (child, &status, 0)) != child) - { - printf ("waitpid failed: %m\n"); - return 1; - } - - return status; -} diff --git a/test/nptl/tst-fork3.c b/test/nptl/tst-fork3.c deleted file mode 100644 index 968d0ab98..000000000 --- a/test/nptl/tst-fork3.c +++ /dev/null @@ -1,106 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Roland McGrath , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static pid_t initial_pid; - - -static void * -tf2 (void *arg) -{ - if (getppid () != initial_pid) - { - printf ("getppid in thread returned %ld, expected %ld\n", - (long int) getppid (), (long int) initial_pid); - return (void *) -1; - } - - return NULL; -} - - -static void * -tf1 (void *arg) -{ - pid_t child = fork (); - if (child == 0) - { - if (getppid () != initial_pid) - { - printf ("first getppid returned %ld, expected %ld\n", - (long int) getppid (), (long int) initial_pid); - exit (1); - } - - pthread_t th2; - if (pthread_create (&th2, NULL, tf2, NULL) != 0) - { - puts ("child: pthread_create failed"); - exit (1); - } - - void *result; - if (pthread_join (th2, &result) != 0) - { - puts ("pthread_join failed"); - exit (1); - } - - exit (result == NULL ? 0 : 1); - } - else if (child == -1) - { - puts ("initial fork failed"); - exit (1); - } - - int status; - if (TEMP_FAILURE_RETRY (waitpid (child, &status, 0)) != child) - { - printf ("waitpid failed: %m\n"); - exit (1); - } - - exit (status); -} - - -int -main (void) -{ - initial_pid = getpid (); - - pthread_t th1; - if (pthread_create (&th1, NULL, tf1, NULL) != 0) - { - puts ("parent: pthread_create failed"); - exit (1); - } - - /* This call should never return. */ - pthread_join (th1, NULL); - - return 1; -} diff --git a/test/nptl/tst-fork4.c b/test/nptl/tst-fork4.c deleted file mode 100644 index ee87108a1..000000000 --- a/test/nptl/tst-fork4.c +++ /dev/null @@ -1,64 +0,0 @@ -/* Test of fork updating child universe's pthread structures. - Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - - -static int -do_test (void) -{ - pthread_t me = pthread_self (); - - pid_t pid = fork (); - - if (pid < 0) - { - printf ("fork: %m\n"); - return 1; - } - - if (pid == 0) - { - int err = pthread_kill (me, SIGTERM); - printf ("pthread_kill returned: %s\n", strerror (err)); - return 3; - } - - int status; - errno = 0; - if (wait (&status) != pid) - printf ("wait failed: %m\n"); - else if (WIFSIGNALED (status) && WTERMSIG (status) == SIGTERM) - { - printf ("child correctly died with SIGTERM\n"); - return 0; - } - else - printf ("child died with bad status %#x\n", status); - - return 1; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-getpid1.c b/test/nptl/tst-getpid1.c deleted file mode 100644 index 4d25b0de7..000000000 --- a/test/nptl/tst-getpid1.c +++ /dev/null @@ -1,122 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef TEST_CLONE_FLAGS -#define TEST_CLONE_FLAGS 0 -#endif - -static int sig; - -static int -f (void *a) -{ - puts ("in f"); - union sigval sival; - sival.sival_int = getpid (); - printf ("pid = %d\n", sival.sival_int); - if (sigqueue (getppid (), sig, sival) != 0) - return 1; - return 0; -} - - -static int -do_test (void) -{ - int mypid = getpid (); - - sig = SIGRTMIN; - sigset_t ss; - sigemptyset (&ss); - sigaddset (&ss, sig); - if (sigprocmask (SIG_BLOCK, &ss, NULL) != 0) - { - printf ("sigprocmask failed: %m\n"); - return 1; - } - -#ifdef __ia64__ - extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base, - size_t __child_stack_size, int __flags, - void *__arg, ...); - char st[256 * 1024] __attribute__ ((aligned)); - pid_t p = __clone2 (f, st, sizeof (st), TEST_CLONE_FLAGS, 0); -#else - char st[128 * 1024] __attribute__ ((aligned)); -# if _STACK_GROWS_DOWN - pid_t p = clone (f, st + sizeof (st), TEST_CLONE_FLAGS, 0); -# elif _STACK_GROWS_UP - pid_t p = clone (f, st, TEST_CLONE_FLAGS, 0); -# else -# error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP" -# endif -#endif - if (p == -1) - { - printf("clone failed: %m\n"); - return 1; - } - printf ("new thread: %d\n", (int) p); - - siginfo_t si; - do - if (sigwaitinfo (&ss, &si) < 0) - { - printf("sigwaitinfo failed: %m\n"); - kill (p, SIGKILL); - return 1; - } - while (si.si_signo != sig || si.si_code != SI_QUEUE); - - int e; - if (waitpid (p, &e, __WCLONE) != p) - { - puts ("waitpid failed"); - kill (p, SIGKILL); - return 1; - } - if (!WIFEXITED (e)) - { - if (WIFSIGNALED (e)) - printf ("died from signal %s\n", strsignal (WTERMSIG (e))); - else - puts ("did not terminate correctly"); - return 1; - } - if (WEXITSTATUS (e) != 0) - { - printf ("exit code %d\n", WEXITSTATUS (e)); - return 1; - } - - if (si.si_int != (int) p) - { - printf ("expected PID %d, got si_int %d\n", (int) p, si.si_int); - kill (p, SIGKILL); - return 1; - } - - if (si.si_pid != p) - { - printf ("expected PID %d, got si_pid %d\n", (int) p, (int) si.si_pid); - kill (p, SIGKILL); - return 1; - } - - if (getpid () != mypid) - { - puts ("my PID changed"); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-getpid2.c b/test/nptl/tst-getpid2.c deleted file mode 100644 index fc98cb60d..000000000 --- a/test/nptl/tst-getpid2.c +++ /dev/null @@ -1,2 +0,0 @@ -#define TEST_CLONE_FLAGS CLONE_VM -#include "tst-getpid1.c" diff --git a/test/nptl/tst-getpid3.c b/test/nptl/tst-getpid3.c deleted file mode 100644 index f1e77f6b1..000000000 --- a/test/nptl/tst-getpid3.c +++ /dev/null @@ -1,114 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - - -static pid_t pid; - -static void * -pid_thread (void *arg) -{ - if (pid != getpid ()) - { - printf ("pid wrong in thread: should be %d, is %d\n", - (int) pid, (int) getpid ()); - return (void *) 1L; - } - - return NULL; -} - -static int -do_test (void) -{ - pid = getpid (); - - pthread_t thr; - int ret = pthread_create (&thr, NULL, pid_thread, NULL); - if (ret) - { - printf ("pthread_create failed: %d\n", ret); - return 1; - } - - void *thr_ret; - ret = pthread_join (thr, &thr_ret); - if (ret) - { - printf ("pthread_create failed: %d\n", ret); - return 1; - } - else if (thr_ret) - { - printf ("thread getpid failed\n"); - return 1; - } - - pid_t child = fork (); - if (child == -1) - { - printf ("fork failed: %m\n"); - return 1; - } - else if (child == 0) - { - if (pid == getpid ()) - { - puts ("pid did not change after fork"); - exit (1); - } - - pid = getpid (); - ret = pthread_create (&thr, NULL, pid_thread, NULL); - if (ret) - { - printf ("pthread_create failed: %d\n", ret); - return 1; - } - - ret = pthread_join (thr, &thr_ret); - if (ret) - { - printf ("pthread_create failed: %d\n", ret); - return 1; - } - else if (thr_ret) - { - printf ("thread getpid failed\n"); - return 1; - } - - return 0; - } - - int status; - if (TEMP_FAILURE_RETRY (waitpid (child, &status, 0)) != child) - { - puts ("waitpid failed"); - kill (child, SIGKILL); - return 1; - } - - if (!WIFEXITED (status)) - { - if (WIFSIGNALED (status)) - printf ("died from signal %s\n", strsignal (WTERMSIG (status))); - else - puts ("did not terminate correctly"); - return 1; - } - if (WEXITSTATUS (status) != 0) - { - printf ("exit code %d\n", WEXITSTATUS (status)); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-initializers1-c89.c b/test/nptl/tst-initializers1-c89.c deleted file mode 100644 index 7c27c1d54..000000000 --- a/test/nptl/tst-initializers1-c89.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-initializers1.c" diff --git a/test/nptl/tst-initializers1-c99.c b/test/nptl/tst-initializers1-c99.c deleted file mode 100644 index 7c27c1d54..000000000 --- a/test/nptl/tst-initializers1-c99.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-initializers1.c" diff --git a/test/nptl/tst-initializers1-gnu89.c b/test/nptl/tst-initializers1-gnu89.c deleted file mode 100644 index 7c27c1d54..000000000 --- a/test/nptl/tst-initializers1-gnu89.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-initializers1.c" diff --git a/test/nptl/tst-initializers1-gnu99.c b/test/nptl/tst-initializers1-gnu99.c deleted file mode 100644 index 7c27c1d54..000000000 --- a/test/nptl/tst-initializers1-gnu99.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-initializers1.c" diff --git a/test/nptl/tst-initializers1.c b/test/nptl/tst-initializers1.c deleted file mode 100644 index 1e353806b..000000000 --- a/test/nptl/tst-initializers1.c +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright (C) 2005 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2005. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include - -pthread_mutex_t mtx_normal = PTHREAD_MUTEX_INITIALIZER; -pthread_mutex_t mtx_recursive = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; -pthread_mutex_t mtx_errorchk = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP; -pthread_mutex_t mtx_adaptive = PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP; -pthread_rwlock_t rwl_normal = PTHREAD_RWLOCK_INITIALIZER; -pthread_rwlock_t rwl_writer - = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP; -pthread_cond_t cond = PTHREAD_COND_INITIALIZER; - -int -main (void) -{ - if (mtx_normal.__data.__kind != PTHREAD_MUTEX_TIMED_NP) - return 1; - if (mtx_recursive.__data.__kind != PTHREAD_MUTEX_RECURSIVE_NP) - return 1; - if (mtx_errorchk.__data.__kind != PTHREAD_MUTEX_ERRORCHECK_NP) - return 1; - if (mtx_adaptive.__data.__kind != PTHREAD_MUTEX_ADAPTIVE_NP) - return 1; - if (rwl_normal.__data.__flags != PTHREAD_RWLOCK_PREFER_READER_NP) - return 1; - if (rwl_writer.__data.__flags - != PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP) - return 1; - return 0; -} diff --git a/test/nptl/tst-join1.c b/test/nptl/tst-join1.c deleted file mode 100644 index 681245a1c..000000000 --- a/test/nptl/tst-join1.c +++ /dev/null @@ -1,82 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - - -static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; - - -static void * -tf (void *arg) -{ - pthread_t mh = (pthread_t) arg; - void *result; - - if (pthread_mutex_unlock (&lock) != 0) - { - puts ("unlock failed"); - exit (1); - } - - if (pthread_join (mh, &result) != 0) - { - puts ("join failed"); - exit (1); - } - - if (result != (void *) 42l) - { - printf ("result wrong: expected %p, got %p\n", (void *) 42, result); - exit (1); - } - - exit (0); -} - - -static int -do_test (void) -{ - pthread_t th; - - if (pthread_mutex_lock (&lock) != 0) - { - puts ("1st lock failed"); - exit (1); - } - - if (pthread_create (&th, NULL, tf, (void *) pthread_self ()) != 0) - { - puts ("create failed"); - exit (1); - } - - if (pthread_mutex_lock (&lock) != 0) - { - puts ("2nd lock failed"); - exit (1); - } - - pthread_exit ((void *) 42); -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-join2.c b/test/nptl/tst-join2.c deleted file mode 100644 index 03203983c..000000000 --- a/test/nptl/tst-join2.c +++ /dev/null @@ -1,103 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; - - -static void * -tf (void *arg) -{ - if (pthread_mutex_lock (&lock) != 0) - { - puts ("child: mutex_lock failed"); - return NULL; - } - - return (void *) 42l; -} - - -static int -do_test (void) -{ - pthread_t th; - - if (pthread_mutex_lock (&lock) != 0) - { - puts ("mutex_lock failed"); - exit (1); - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("mutex_create failed"); - exit (1); - } - - void *status; - int val = pthread_tryjoin_np (th, &status); - if (val == 0) - { - puts ("1st tryjoin succeeded"); - exit (1); - } - else if (val != EBUSY) - { - puts ("1st tryjoin didn't return EBUSY"); - exit (1); - } - - if (pthread_mutex_unlock (&lock) != 0) - { - puts ("mutex_unlock failed"); - exit (1); - } - - while ((val = pthread_tryjoin_np (th, &status)) != 0) - { - if (val != EBUSY) - { - printf ("tryjoin returned %s (%d), expected only 0 or EBUSY\n", - strerror (val), val); - exit (1); - } - - /* Delay minimally. */ - struct timespec ts = { .tv_sec = 0, .tv_nsec = 10000000 }; - nanosleep (&ts, NULL); - } - - if (status != (void *) 42l) - { - printf ("return value %p, expected %p\n", status, (void *) 42l); - exit (1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-join3.c b/test/nptl/tst-join3.c deleted file mode 100644 index b25ffd8ba..000000000 --- a/test/nptl/tst-join3.c +++ /dev/null @@ -1,122 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; - - -static void * -tf (void *arg) -{ - if (pthread_mutex_lock (&lock) != 0) - { - puts ("child: mutex_lock failed"); - return NULL; - } - - return (void *) 42l; -} - - -static int -do_test (void) -{ - pthread_t th; - - if (pthread_mutex_lock (&lock) != 0) - { - puts ("mutex_lock failed"); - exit (1); - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("mutex_create failed"); - exit (1); - } - - void *status; - struct timespec ts; - struct timeval tv; - (void) gettimeofday (&tv, NULL); - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ts.tv_nsec += 200000000; - if (ts.tv_nsec >= 1000000000) - { - ts.tv_nsec -= 1000000000; - ++ts.tv_sec; - } - int val = pthread_timedjoin_np (th, &status, &ts); - if (val == 0) - { - puts ("1st timedjoin succeeded"); - exit (1); - } - else if (val != ETIMEDOUT) - { - puts ("1st timedjoin didn't return ETIMEDOUT"); - exit (1); - } - - if (pthread_mutex_unlock (&lock) != 0) - { - puts ("mutex_unlock failed"); - exit (1); - } - - while (1) - { - (void) gettimeofday (&tv, NULL); - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ts.tv_nsec += 200000000; - if (ts.tv_nsec >= 1000000000) - { - ts.tv_nsec -= 1000000000; - ++ts.tv_sec; - } - - val = pthread_timedjoin_np (th, &status, &ts); - if (val == 0) - break; - - if (val != ETIMEDOUT) - { - printf ("timedjoin returned %s (%d), expected only 0 or ETIMEDOUT\n", - strerror (val), val); - exit (1); - } - } - - if (status != (void *) 42l) - { - printf ("return value %p, expected %p\n", status, (void *) 42l); - exit (1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-join4.c b/test/nptl/tst-join4.c deleted file mode 100644 index 96b650ddc..000000000 --- a/test/nptl/tst-join4.c +++ /dev/null @@ -1,124 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static pthread_barrier_t bar; - - -static void * -tf (void *arg) -{ - if (pthread_barrier_wait (&bar) != 0) - { - puts ("tf: barrier_wait failed"); - exit (1); - } - - return (void *) 1l; -} - - -static int -do_test (void) -{ - if (pthread_barrier_init (&bar, NULL, 3) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - pthread_attr_t a; - - if (pthread_attr_init (&a) != 0) - { - puts ("attr_init failed"); - exit (1); - } - - if (pthread_attr_setstacksize (&a, 1 * 1024 * 1024) != 0) - { - puts ("attr_setstacksize failed"); - return 1; - } - - pthread_t th[2]; - - if (pthread_create (&th[0], &a, tf, NULL) != 0) - { - puts ("1st create failed"); - exit (1); - } - - if (pthread_attr_setdetachstate (&a, PTHREAD_CREATE_DETACHED) != 0) - { - puts ("attr_setdetachstate failed"); - exit (1); - } - - if (pthread_create (&th[1], &a, tf, NULL) != 0) - { - puts ("1st create failed"); - exit (1); - } - - if (pthread_attr_destroy (&a) != 0) - { - puts ("attr_destroy failed"); - exit (1); - } - - if (pthread_detach (th[0]) != 0) - { - puts ("could not detach 1st thread"); - exit (1); - } - - int err = pthread_detach (th[0]); - if (err == 0) - { - puts ("second detach of 1st thread succeeded"); - exit (1); - } - if (err != EINVAL) - { - printf ("second detach of 1st thread returned %d, not EINVAL\n", err); - exit (1); - } - - err = pthread_detach (th[1]); - if (err == 0) - { - puts ("detach of 2nd thread succeeded"); - exit (1); - } - if (err != EINVAL) - { - printf ("detach of 2nd thread returned %d, not EINVAL\n", err); - exit (1); - } - - exit (0); -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-join5.c b/test/nptl/tst-join5.c deleted file mode 100644 index feeee2ee3..000000000 --- a/test/nptl/tst-join5.c +++ /dev/null @@ -1,142 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static void * -tf1 (void *arg) -{ - pthread_join ((pthread_t) arg, NULL); - - puts ("1st join returned"); - - return (void *) 1l; -} - - -static void * -tf2 (void *arg) -{ - int a; - a = pthread_join ((pthread_t) arg, NULL); - - puts ("2nd join returned"); - printf("a = %i\n", a); - - return (void *) 1l; -} - - -static int -do_test (void) -{ - pthread_t th; - - int err = pthread_join (pthread_self (), NULL); - if (err == 0) - { - puts ("1st circular join succeeded"); - exit (1); - } - if (err != EDEADLK) - { - printf ("1st circular join %d, not EDEADLK\n", err); - exit (1); - } - - if (pthread_create (&th, NULL, tf1, (void *) pthread_self ()) != 0) - { - puts ("1st create failed"); - exit (1); - } - - if (pthread_cancel (th) != 0) - { - puts ("cannot cancel 1st thread"); - exit (1); - } - - void *r; - err = pthread_join (th, &r); - if (err != 0) - { - printf ("cannot join 1st thread: %d\n", err); - exit (1); - } - if (r != PTHREAD_CANCELED) - { - puts ("1st thread not canceled"); - exit (1); - } - - err = pthread_join (pthread_self (), NULL); - if (err == 0) - { - puts ("2nd circular join succeeded"); - exit (1); - } - if (err != EDEADLK) - { - printf ("2nd circular join %d, not EDEADLK\n", err); - exit (1); - } - - if (pthread_create (&th, NULL, tf2, (void *) pthread_self ()) != 0) - { - puts ("2nd create failed"); - exit (1); - } - - if (pthread_cancel (th) != 0) - { - puts ("cannot cancel 2nd thread"); - exit (1); - } - - if (pthread_join (th, &r) != 0) - { - puts ("cannot join 2nd thread"); - exit (1); - } - if (r != PTHREAD_CANCELED) - { - puts ("2nd thread not canceled"); - exit (1); - } - - err = pthread_join (pthread_self (), NULL); - if (err == 0) - { - puts ("2nd circular join succeeded"); - exit (1); - } - if (err != EDEADLK) - { - printf ("2nd circular join %d, not EDEADLK\n", err); - exit (1); - } - - exit (0); -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-join6.c b/test/nptl/tst-join6.c deleted file mode 100644 index 0c9e7c056..000000000 --- a/test/nptl/tst-join6.c +++ /dev/null @@ -1,2 +0,0 @@ -#define WAIT_IN_CHILD 1 -#include "tst-join5.c" diff --git a/test/nptl/tst-key1.c b/test/nptl/tst-key1.c deleted file mode 100644 index ebda39533..000000000 --- a/test/nptl/tst-key1.c +++ /dev/null @@ -1,88 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -int -do_test (void) -{ - int max; -#ifdef PTHREAD_KEYS_MAX - max = PTHREAD_KEYS_MAX; -#else - max = _POSIX_THREAD_KEYS_MAX; -#endif - pthread_key_t *keys = alloca (max * sizeof (pthread_key_t)); - - int i; - for (i = 0; i < max; ++i) - if (pthread_key_create (&keys[i], NULL) != 0) - { - write (2, "key_create failed\n", 18); - _exit (1); - } - else - { - printf ("created key %d\n", i); - - if (pthread_setspecific (keys[i], (const void *) (i + 100l)) != 0) - { - write (2, "setspecific failed\n", 19); - _exit (1); - } - } - - for (i = 0; i < max; ++i) - { - if (pthread_getspecific (keys[i]) != (void *) (i + 100l)) - { - write (2, "getspecific failed\n", 19); - _exit (1); - } - - if (pthread_key_delete (keys[i]) != 0) - { - write (2, "key_delete failed\n", 18); - _exit (1); - } - } - - /* Now it must be once again possible to allocate keys. */ - if (pthread_key_create (&keys[0], NULL) != 0) - { - write (2, "2nd key_create failed\n", 22); - _exit (1); - } - - if (pthread_key_delete (keys[0]) != 0) - { - write (2, "2nd key_delete failed\n", 22); - _exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-key2.c b/test/nptl/tst-key2.c deleted file mode 100644 index c32031e60..000000000 --- a/test/nptl/tst-key2.c +++ /dev/null @@ -1,114 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - -#define N 2 - - -static int cnt0; -static void -f0 (void *p) -{ - ++cnt0; -} - - -static int cnt1; -static void -f1 (void *p) -{ - ++cnt1; -} - - -static void (*fcts[N]) (void *) = -{ - f0, - f1 -}; - - -static void * -tf (void *arg) -{ - pthread_key_t *key = (pthread_key_t *) arg; - - if (pthread_setspecific (*key, (void *) -1l) != 0) - { - write (2, "setspecific failed\n", 19); - _exit (1); - } - - return NULL; -} - - -int -do_test (void) -{ - pthread_key_t keys[N]; - - int i; - for (i = 0; i < N; ++i) - if (pthread_key_create (&keys[i], fcts[i]) != 0) - { - write (2, "key_create failed\n", 18); - _exit (1); - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, &keys[1]) != 0) - { - write (2, "create failed\n", 14); - _exit (1); - } - - if (pthread_join (th, NULL) != 0) - { - write (2, "join failed\n", 12); - _exit (1); - } - - if (cnt0 != 0) - { - write (2, "cnt0 != 0\n", 10); - _exit (1); - } - - if (cnt1 != 1) - { - write (2, "cnt1 != 1\n", 10); - _exit (1); - } - - for (i = 0; i < N; ++i) - if (pthread_key_delete (keys[i]) != 0) - { - write (2, "key_delete failed\n", 18); - _exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-key3.c b/test/nptl/tst-key3.c deleted file mode 100644 index f5426ce12..000000000 --- a/test/nptl/tst-key3.c +++ /dev/null @@ -1,155 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - -#define N 2 - - -static int cnt0; -static void -f0 (void *p) -{ - ++cnt0; -} - - -static int cnt1; -static void -f1 (void *p) -{ - ++cnt1; -} - - -static void (*fcts[N]) (void *) = -{ - f0, - f1 -}; - - -static pthread_barrier_t b; - - -static void * -tf (void *arg) -{ - pthread_key_t *key = (pthread_key_t *) arg; - - if (pthread_setspecific (*key, (void *) -1l) != 0) - { - write (2, "setspecific failed\n", 19); - _exit (1); - } - - pthread_barrier_wait (&b); - - const struct timespec t = { .tv_sec = 1000, .tv_nsec = 0 }; - while (1) - nanosleep (&t, NULL); - - /* NOTREACHED */ - return NULL; -} - - -int -do_test (void) -{ - pthread_key_t keys[N]; - - int i; - for (i = 0; i < N; ++i) - if (pthread_key_create (&keys[i], fcts[i]) != 0) - { - write (2, "key_create failed\n", 18); - _exit (1); - } - - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - write (2, "barrier_init failed\n", 20); - _exit (1); - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, &keys[1]) != 0) - { - write (2, "create failed\n", 14); - _exit (1); - } - - pthread_barrier_wait (&b); - - if (pthread_cancel (th) != 0) - { - write (2, "cancel failed\n", 14); - _exit (1); - } - - void *status; - if (pthread_join (th, &status) != 0) - { - write (2, "join failed\n", 12); - _exit (1); - } - - if (status != PTHREAD_CANCELED) - { - write (2, "thread not canceled\n", 20); - _exit (1); - } - - /* Note that the TSD destructors not necessarily have to have - finished by the time pthread_join returns. At least according to - POSIX. We implement the stronger requirement that they indeed - have run and therefore these tests succeed. */ - if (cnt0 != 0) - { - write (2, "cnt0 != 0\n", 10); - _exit (1); - } - - if (cnt1 != 1) - { - write (2, "cnt1 != 1\n", 10); - _exit (1); - } - - for (i = 0; i < N; ++i) - if (pthread_key_delete (keys[i]) != 0) - { - write (2, "key_delete failed\n", 18); - _exit (1); - } - - if (pthread_barrier_destroy (&b) != 0) - { - write (2, "barrier_destroy failed\n", 23); - _exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-key4.c b/test/nptl/tst-key4.c deleted file mode 100644 index af44c2234..000000000 --- a/test/nptl/tst-key4.c +++ /dev/null @@ -1,136 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -#ifdef PTHREAD_KEYS_MAX -const int max = PTHREAD_KEYS_MAX; -#else -const int max = _POSIX_THREAD_KEYS_MAX; -#endif -static pthread_key_t *keys; - - -static void * -tf1 (void *arg) -{ - int i; - for (i = 0; i < max; ++i) - if (pthread_setspecific (keys[i], (void *) (long int) (i + 1)) != 0) - { - puts ("setspecific failed"); - exit (1); - } - - return NULL; -} - - -static void * -tf2 (void *arg) -{ - int i; - for (i = 0; i < max; ++i) - if (pthread_getspecific (keys[i]) != NULL) - { - printf ("getspecific for key %d not NULL\n", i); - exit (1); - } - - return NULL; -} - - -static int -do_test (void) -{ - keys = alloca (max * sizeof (pthread_key_t)); - - int i; - for (i = 0; i < max; ++i) - if (pthread_key_create (&keys[i], NULL) != 0) - { - puts ("key_create failed"); - exit (1); - } - - pthread_attr_t a; - - if (pthread_attr_init (&a) != 0) - { - puts ("attr_init failed"); - exit (1); - } - - if (pthread_attr_setstacksize (&a, 1 * 1024 * 1024) != 0) - { - puts ("attr_setstacksize failed"); - return 1; - } - - for (i = 0; i < 10; ++i) - { - int j; -#define N 2 - pthread_t th[N]; - for (j = 0; j < N; ++j) - if (pthread_create (&th[j], NULL, tf1, NULL) != 0) - { - puts ("1st create failed"); - exit (1); - } - - for (j = 0; j < N; ++j) - if (pthread_join (th[j], NULL) != 0) - { - puts ("1st join failed"); - exit (1); - } - - for (j = 0; j < N; ++j) - if (pthread_create (&th[j], NULL, tf2, NULL) != 0) - { - puts ("2nd create failed"); - exit (1); - } - - for (j = 0; j < N; ++j) - if (pthread_join (th[j], NULL) != 0) - { - puts ("2nd join failed"); - exit (1); - } - } - - if (pthread_attr_destroy (&a) != 0) - { - puts ("attr_destroy failed"); - exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-kill1.c b/test/nptl/tst-kill1.c deleted file mode 100644 index f58016f97..000000000 --- a/test/nptl/tst-kill1.c +++ /dev/null @@ -1,99 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static pthread_cond_t c = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; -static pthread_barrier_t b; - -static void * -tf (void *a) -{ - if (pthread_mutex_lock (&m) != 0) - { - puts ("child: mutex_lock failed"); - exit (1); - } - - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("child: barrier_wait failed"); - exit (1); - } - - /* This call should never return. */ - pthread_cond_wait (&c, &m); - - return NULL; -} - - -int -do_test (void) -{ - pthread_t th; - - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - exit (1); - } - - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - if (pthread_mutex_lock (&m) != 0) - { - puts ("mutex_lock failed"); - exit (1); - } - - /* Send the thread a signal which it doesn't catch and which will - cause the process to terminate. */ - if (pthread_kill (th, SIGUSR1) != 0) - { - puts ("kill failed"); - exit (1); - } - - /* This call should never return. */ - pthread_join (th, NULL); - - return 0; -} - - -#define EXPECTED_SIGNAL SIGUSR1 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-kill2.c b/test/nptl/tst-kill2.c deleted file mode 100644 index 0315a020f..000000000 --- a/test/nptl/tst-kill2.c +++ /dev/null @@ -1,138 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static pthread_cond_t c = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; -static pthread_barrier_t b; - -static void * -tf (void *a) -{ - /* Block SIGUSR1. */ - sigset_t ss; - - sigemptyset (&ss); - sigaddset (&ss, SIGUSR1); - if (pthread_sigmask (SIG_BLOCK, &ss, NULL) != 0) - { - puts ("child: sigmask failed"); - exit (1); - } - - if (pthread_mutex_lock (&m) != 0) - { - puts ("child: mutex_lock failed"); - exit (1); - } - - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("child: barrier_wait failed"); - exit (1); - } - - /* Compute timeout. */ - struct timeval tv; - (void) gettimeofday (&tv, NULL); - struct timespec ts; - TIMEVAL_TO_TIMESPEC (&tv, &ts); - /* Timeout: 1sec. */ - ts.tv_sec += 1; - - /* This call should never return. */ - if (pthread_cond_timedwait (&c, &m, &ts) != ETIMEDOUT) - { - puts ("cond_timedwait didn't time out"); - exit (1); - } - - return NULL; -} - - -int -do_test (void) -{ - pthread_t th; - - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - exit (1); - } - - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - if (pthread_mutex_lock (&m) != 0) - { - puts ("mutex_lock failed"); - exit (1); - } - - /* Send the thread a signal which it has blocked. */ - if (pthread_kill (th, SIGUSR1) != 0) - { - puts ("kill failed"); - exit (1); - } - - if (pthread_mutex_unlock (&m) != 0) - { - puts ("mutex_unlock failed"); - exit (1); - } - - void *r; - if (pthread_join (th, &r) != 0) - { - puts ("join failed"); - exit (1); - } - if (r != NULL) - { - puts ("return value wrong"); - exit (1); - } - - return 0; -} - - -#define TIMEOUT 5 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-kill3.c b/test/nptl/tst-kill3.c deleted file mode 100644 index fe9359b39..000000000 --- a/test/nptl/tst-kill3.c +++ /dev/null @@ -1,158 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - - -static pthread_cond_t c = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; -static pthread_barrier_t b; - - -static void -handler (int sig) -{ - write (1, "handler called\n", 15); - _exit (1); -} - - -static void * -tf (void *a) -{ - /* Block SIGUSR1. */ - sigset_t ss; - - sigemptyset (&ss); - sigaddset (&ss, SIGUSR1); - if (pthread_sigmask (SIG_BLOCK, &ss, NULL) != 0) - { - puts ("child: sigmask failed"); - exit (1); - } - - if (pthread_mutex_lock (&m) != 0) - { - puts ("child: mutex_lock failed"); - exit (1); - } - - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("child: barrier_wait failed"); - exit (1); - } - - /* Compute timeout. */ - struct timeval tv; - (void) gettimeofday (&tv, NULL); - struct timespec ts; - TIMEVAL_TO_TIMESPEC (&tv, &ts); - /* Timeout: 1sec. */ - ts.tv_sec += 1; - - /* This call should never return. */ - if (pthread_cond_timedwait (&c, &m, &ts) != ETIMEDOUT) - { - puts ("cond_timedwait didn't time out"); - exit (1); - } - - return NULL; -} - - -int -do_test (void) -{ - pthread_t th; - - struct sigaction sa; - sigemptyset (&sa.sa_mask); - sa.sa_flags = 0; - sa.sa_handler = handler; - if (sigaction (SIGUSR1, &sa, NULL) != 0) - { - puts ("sigaction failed"); - exit (1); - } - - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - exit (1); - } - - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - if (pthread_mutex_lock (&m) != 0) - { - puts ("mutex_lock failed"); - exit (1); - } - - /* Send the thread a signal which it has blocked. */ - if (pthread_kill (th, SIGUSR1) != 0) - { - puts ("kill failed"); - exit (1); - } - - if (pthread_mutex_unlock (&m) != 0) - { - puts ("mutex_unlock failed"); - exit (1); - } - - void *r; - if (pthread_join (th, &r) != 0) - { - puts ("join failed"); - exit (1); - } - if (r != NULL) - { - puts ("return value wrong"); - exit (1); - } - - return 0; -} - - -#define TIMEOUT 5 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-kill4.c b/test/nptl/tst-kill4.c deleted file mode 100644 index 4ede7ed5d..000000000 --- a/test/nptl/tst-kill4.c +++ /dev/null @@ -1,73 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static void * -tf (void *a) -{ - return NULL; -} - - -int -do_test (void) -{ - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - exit (1); - } - - if (pthread_join (th, NULL) != 0) - { - puts ("join failed"); - exit (1); - } - - /* The following only works because we assume here something about - the implementation. Namely, that the memory allocated for the - thread descriptor is not going away, that the the TID field is - cleared and therefore the signal is sent to process 0, and that - we can savely assume there is no other process with this ID at - that time. */ - int e = pthread_kill (th, 0); - if (e == 0) - { - puts ("pthread_kill succeeded"); - exit (1); - } - if (e != ESRCH) - { - puts ("pthread_kill didn't return ESRCH"); - exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-kill5.c b/test/nptl/tst-kill5.c deleted file mode 100644 index 254015c36..000000000 --- a/test/nptl/tst-kill5.c +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -int -do_test (void) -{ - /* XXX This test might require architecture and system specific changes. - There is no guarantee that this signal number is invalid. */ - int e = pthread_kill (pthread_self (), SIGRTMAX + 10); - if (e == 0) - { - puts ("kill didn't failed"); - exit (1); - } - if (e != EINVAL) - { - puts ("error not EINVAL"); - exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-kill6.c b/test/nptl/tst-kill6.c deleted file mode 100644 index f530e4ed0..000000000 --- a/test/nptl/tst-kill6.c +++ /dev/null @@ -1,161 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - - -static pthread_t receiver; -static sem_t sem; -static pthread_barrier_t b; - -static void -handler (int sig) -{ - if (sig != SIGUSR1) - { - write (STDOUT_FILENO, "wrong signal\n", 13); - _exit (1); - } - - if (pthread_self () != receiver) - { - write (STDOUT_FILENO, "not the intended receiver\n", 26); - _exit (1); - } - - if (sem_post (&sem) != 0) - { - write (STDOUT_FILENO, "sem_post failed\n", 16); - _exit (1); - } -} - - -static void * -tf (void *a) -{ - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("child: barrier_wait failed"); - exit (1); - } - - return NULL; -} - - -int -do_test (void) -{ - struct sigaction sa; - sigemptyset (&sa.sa_mask); - sa.sa_flags = 0; - sa.sa_handler = handler; - if (sigaction (SIGUSR1, &sa, NULL) != 0) - { - puts ("sigaction failed"); - exit (1); - } - -#define N 20 - - if (pthread_barrier_init (&b, NULL, N + 1) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - pthread_attr_t a; - - if (pthread_attr_init (&a) != 0) - { - puts ("attr_init failed"); - exit (1); - } - - if (pthread_attr_setstacksize (&a, 1 * 1024 * 1024) != 0) - { - puts ("attr_setstacksize failed"); - return 1; - } - - pthread_t th[N]; - int i; - for (i = 0; i < N; ++i) - if (pthread_create (&th[i], &a, tf, NULL) != 0) - { - puts ("create failed"); - exit (1); - } - - if (pthread_attr_destroy (&a) != 0) - { - puts ("attr_destroy failed"); - exit (1); - } - - if (sem_init (&sem, 0, 0) != 0) - { - puts ("sem_init failed"); - exit (1); - } - - for (i = 0; i < N * 10; ++i) - { - receiver = th[i % N]; - - if (pthread_kill (receiver, SIGUSR1) != 0) - { - puts ("kill failed"); - exit (1); - } - - if (TEMP_FAILURE_RETRY (sem_wait (&sem)) != 0) - { - puts ("sem_wait failed"); - exit (1); - } - } - - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - for (i = 0; i < N; ++i) - if (pthread_join (th[i], NULL) != 0) - { - puts ("join failed"); - exit (1); - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mqueue.h b/test/nptl/tst-mqueue.h deleted file mode 100644 index 1401c3e03..000000000 --- a/test/nptl/tst-mqueue.h +++ /dev/null @@ -1,83 +0,0 @@ -/* Common code for message queue passing tests. - Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - -static int temp_mq_fd; - -/* Add temporary files in list. */ -static void -__attribute__ ((unused)) -add_temp_mq (const char *name) -{ - struct iovec iov[2]; - iov[0].iov_base = (char *) name; - iov[0].iov_len = strlen (name); - iov[1].iov_base = (char *) "\n"; - iov[1].iov_len = 1; - if (writev (temp_mq_fd, iov, 2) != iov[0].iov_len + 1) - printf ("Could not record temp mq filename %s\n", name); -} - -/* Delete all temporary message queues. */ -static void -do_cleanup (void) -{ - if (lseek (temp_mq_fd, 0, SEEK_SET) != 0) - return; - - FILE *f = fdopen (temp_mq_fd, "r"); - if (f == NULL) - return; - - char *line = NULL; - size_t n = 0; - ssize_t rets; - while ((rets = getline (&line, &n, f)) > 0) - { - if (line[rets - 1] != '\n') - continue; - - line[rets - 1] = '\0'; - mq_unlink (line); - } - fclose (f); -} - -static void -do_prepare (void) -{ - char name [] = "/tmp/tst-mqueueN.XXXXXX"; - temp_mq_fd = mkstemp (name); - if (temp_mq_fd == -1) - { - printf ("Could not create temporary file %s: %m\n", name); - exit (1); - } - unlink (name); -} - -#define PREPARE(argc, argv) do_prepare () -#define CLEANUP_HANDLER do_cleanup () diff --git a/test/nptl/tst-mqueue1.c b/test/nptl/tst-mqueue1.c deleted file mode 100644 index 5ec79cf3b..000000000 --- a/test/nptl/tst-mqueue1.c +++ /dev/null @@ -1,416 +0,0 @@ -/* Test message queue passing. - Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "tst-mqueue.h" - -static int -intcmp (const void *a, const void *b) -{ - if (*(unsigned char *)a < *(unsigned char *)b) - return 1; - if (*(unsigned char *)a > *(unsigned char *)b) - return -1; - return 0; -} - -static int -check_attrs (struct mq_attr *attr, int nonblock, long cnt) -{ - int result = 0; - - if (attr->mq_maxmsg != 10 || attr->mq_msgsize != 1) - { - printf ("attributes don't match those passed to mq_open\n" - "mq_maxmsg %ld, mq_msgsize %ld\n", - attr->mq_maxmsg, attr->mq_msgsize); - result = 1; - } - - if ((attr->mq_flags & O_NONBLOCK) != nonblock) - { - printf ("mq_flags %lx != %x\n", (attr->mq_flags & O_NONBLOCK), nonblock); - result = 1; - } - - if (attr->mq_curmsgs != cnt) - { - printf ("mq_curmsgs %ld != %ld\n", attr->mq_curmsgs, cnt); - result = 1; - } - - return result; -} - -static int -do_one_test (mqd_t q, const char *name, int nonblock) -{ - int result = 0; - - char v [] - = { 0x32, 0x62, 0x22, 0x31, 0x11, 0x73, 0x61, 0x21, 0x72, 0x71, 0x81 }; - - struct mq_attr attr; - memset (&attr, 0xaa, sizeof (attr)); - if (mq_getattr (q, &attr) != 0) - { - printf ("mq_getattr failed: %m\n"); - result = 1; - } - else - result |= check_attrs (&attr, nonblock, 0); - - if (mq_receive (q, &v[0], 1, NULL) != -1) - { - puts ("mq_receive on O_WRONLY mqd_t unexpectedly succeeded"); - result = 1; - } - else if (errno != EBADF) - { - printf ("mq_receive on O_WRONLY mqd_t did not fail with EBADF: %m\n"); - result = 1; - } - - struct timespec ts; - if (clock_gettime (CLOCK_REALTIME, &ts) == 0) - --ts.tv_sec; - else - { - ts.tv_sec = time (NULL) - 1; - ts.tv_nsec = 0; - } - - int ret; - for (int i = 0; i < 10; ++i) - { - if (i & 1) - ret = mq_send (q, &v[i], 1, v[i] >> 4); - else - ret = mq_timedsend (q, &v[i], 1, v[i] >> 4, &ts); - - if (ret) - { - printf ("mq_%ssend failed: %m\n", (i & 1) ? "" : "timed"); - result = 1; - } - } - - ret = mq_timedsend (q, &v[10], 1, 8, &ts); - if (ret != -1) - { - puts ("mq_timedsend on full queue did not fail"); - result = 1; - } - else if (errno != (nonblock ? EAGAIN : ETIMEDOUT)) - { - printf ("mq_timedsend on full queue did not fail with %s: %m\n", - nonblock ? "EAGAIN" : "ETIMEDOUT"); - result = 1; - } - - if (nonblock) - { - ret = mq_send (q, &v[10], 1, 8); - if (ret != -1) - { - puts ("mq_send on full non-blocking queue did not fail"); - result = 1; - } - else if (errno != EAGAIN) - { - printf ("mq_send on full non-blocking queue did not fail" - "with EAGAIN: %m\n"); - result = 1; - } - } - - memset (&attr, 0xaa, sizeof (attr)); - if (mq_getattr (q, &attr) != 0) - { - printf ("mq_getattr failed: %m\n"); - result = 1; - } - else - result |= check_attrs (&attr, nonblock, 10); - - pid_t pid = fork (); - if (pid == -1) - { - printf ("fork failed: %m\n"); - result = 1; - } - else if (pid == 0) - { - result = 0; - - if (mq_close (q) != 0) - { - printf ("mq_close in child failed: %m\n"); - result = 1; - } - - q = mq_open (name, O_RDONLY | nonblock); - if (q == (mqd_t) -1) - { - printf ("mq_open in child failed: %m\n"); - exit (1); - } - - memset (&attr, 0xaa, sizeof (attr)); - if (mq_getattr (q, &attr) != 0) - { - printf ("mq_getattr failed: %m\n"); - result = 1; - } - else - result |= check_attrs (&attr, nonblock, 10); - - char vr[11] = { }; - unsigned int prio; - ssize_t rets; - - if (mq_send (q, &v[0], 1, 1) != -1) - { - puts ("mq_send on O_RDONLY mqd_t unexpectedly succeeded"); - result = 1; - } - else if (errno != EBADF) - { - printf ("mq_send on O_WRONLY mqd_t did not fail with EBADF: %m\n"); - result = 1; - } - - for (int i = 0; i < 10; ++i) - { - if (i & 1) - rets = mq_receive (q, &vr[i], 1, &prio); - else - rets = mq_timedreceive (q, &vr[i], 1, &prio, &ts); - - if (rets != 1) - { - if (rets == -1) - printf ("mq_%sreceive failed: %m\n", (i & 1) ? "" : "timed"); - else - printf ("mq_%sreceive returned %zd != 1\n", - (i & 1) ? "" : "timed", rets); - result = 1; - } - else if (prio != (unsigned int) vr[i] >> 4) - { - printf ("unexpected priority %x for value %02x\n", prio, - vr[i]); - result = 1; - } - } - - qsort (v, 10, 1, intcmp); - if (memcmp (v, vr, 10) != 0) - { - puts ("messages not received in expected order"); - result = 1; - } - - rets = mq_timedreceive (q, &vr[10], 1, &prio, &ts); - if (rets != -1) - { - puts ("mq_timedreceive on empty queue did not fail"); - result = 1; - } - else if (errno != (nonblock ? EAGAIN : ETIMEDOUT)) - { - printf ("mq_timedreceive on empty queue did not fail with %s: %m\n", - nonblock ? "EAGAIN" : "ETIMEDOUT"); - result = 1; - } - - if (nonblock) - { - ret = mq_receive (q, &vr[10], 1, &prio); - if (ret != -1) - { - puts ("mq_receive on empty non-blocking queue did not fail"); - result = 1; - } - else if (errno != EAGAIN) - { - printf ("mq_receive on empty non-blocking queue did not fail" - "with EAGAIN: %m\n"); - result = 1; - } - } - - memset (&attr, 0xaa, sizeof (attr)); - if (mq_getattr (q, &attr) != 0) - { - printf ("mq_getattr failed: %m\n"); - result = 1; - } - else - result |= check_attrs (&attr, nonblock, 0); - - if (mq_close (q) != 0) - { - printf ("mq_close in child failed: %m\n"); - result = 1; - } - - exit (result); - } - - int status; - if (TEMP_FAILURE_RETRY (waitpid (pid, &status, 0)) != pid) - { - printf ("waitpid failed: %m\n"); - kill (pid, SIGKILL); - result = 1; - } - else if (!WIFEXITED (status) || WEXITSTATUS (status)) - { - printf ("child failed: %d\n", status); - result = 1; - } - - memset (&attr, 0xaa, sizeof (attr)); - if (mq_getattr (q, &attr) != 0) - { - printf ("mq_getattr failed: %m\n"); - result = 1; - } - else - result |= check_attrs (&attr, nonblock, 0); - - return result; -} - -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ - int result = 0; - - char name[sizeof "/tst-mqueue1-" + sizeof (pid_t) * 3]; - snprintf (name, sizeof (name), "/tst-mqueue1-%u", getpid ()); - - struct mq_attr attr = { .mq_maxmsg = 10, .mq_msgsize = 1 }; - mqd_t q = mq_open (name, O_CREAT | O_EXCL | O_WRONLY, 0600, &attr); - - if (q == (mqd_t) -1) - { - printf ("mq_open failed with: %m\n"); - return result; - } - else - add_temp_mq (name); - - result |= do_one_test (q, name, 0); - - mqd_t q2 = mq_open (name, O_WRONLY | O_NONBLOCK); - if (q2 == (mqd_t) -1) - { - printf ("mq_open failed with: %m\n"); - q2 = q; - result = 1; - } - else - { - if (mq_close (q) != 0) - { - printf ("mq_close in parent failed: %m\n"); - result = 1; - } - - q = q2; - result |= do_one_test (q, name, O_NONBLOCK); - - if (mq_getattr (q, &attr) != 0) - { - printf ("mq_getattr failed: %m\n"); - result = 1; - } - else - { - attr.mq_flags ^= O_NONBLOCK; - - struct mq_attr attr2; - memset (&attr2, 0x55, sizeof (attr2)); - if (mq_setattr (q, &attr, &attr2) != 0) - { - printf ("mq_setattr failed: %m\n"); - result = 1; - } - else if (attr.mq_flags != (attr2.mq_flags ^ O_NONBLOCK) - || attr.mq_maxmsg != attr2.mq_maxmsg - || attr.mq_msgsize != attr2.mq_msgsize - || attr.mq_curmsgs != 0 - || attr2.mq_curmsgs != 0) - { - puts ("mq_setattr returned unexpected values in *omqstat"); - result = 1; - } - else - { - result |= do_one_test (q, name, 0); - - if (mq_setattr (q, &attr2, NULL) != 0) - { - printf ("mq_setattr failed: %m\n"); - result = 1; - } - else - result |= do_one_test (q, name, O_NONBLOCK); - } - } - } - - if (mq_unlink (name) != 0) - { - printf ("mq_unlink failed: %m\n"); - result = 1; - } - - if (mq_close (q) != 0) - { - printf ("mq_close in parent failed: %m\n"); - result = 1; - } - - if (mq_close (q) != -1) - { - puts ("second mq_close did not fail"); - result = 1; - } - else if (errno != EBADF) - { - printf ("second mq_close did not fail with EBADF: %m\n"); - result = 1; - } - - return result; -} - -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mqueue2.c b/test/nptl/tst-mqueue2.c deleted file mode 100644 index 9fbaedd90..000000000 --- a/test/nptl/tst-mqueue2.c +++ /dev/null @@ -1,476 +0,0 @@ -/* Test message queue passing. - Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "tst-mqueue.h" - -static void -alrm_handler (int sig) -{ -} - -#define TIMEOUT 10 -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ - int result = 0; - - char name[sizeof "/tst-mqueue2-" + sizeof (pid_t) * 3]; - snprintf (name, sizeof (name), "/tst-mqueue2-%u", getpid ()); - - struct mq_attr attr = { .mq_maxmsg = 2, .mq_msgsize = 2 }; - mqd_t q = mq_open (name, O_CREAT | O_EXCL | O_RDWR, 0600, &attr); - - if (q == (mqd_t) -1) - { - printf ("mq_open failed with: %m\n"); - return result; - } - else - add_temp_mq (name); - - mqd_t q2 = mq_open (name, O_CREAT | O_EXCL | O_RDWR, 0600, &attr); - if (q2 != (mqd_t) -1) - { - puts ("mq_open with O_EXCL unexpectedly succeeded"); - result = 1; - } - else if (errno != EEXIST) - { - printf ("mq_open did not fail with EEXIST: %m\n"); - result = 1; - } - - char name2[sizeof "/tst-mqueue2-2-" + sizeof (pid_t) * 3]; - snprintf (name2, sizeof (name2), "/tst-mqueue2-2-%u", getpid ()); - - attr.mq_maxmsg = -2; - q2 = mq_open (name2, O_CREAT | O_EXCL | O_RDWR, 0600, &attr); - if (q2 != (mqd_t) -1) - { - puts ("mq_open with invalid mq_maxmsg unexpectedly succeeded"); - add_temp_mq (name2); - result = 1; - } - else if (errno != EINVAL) - { - printf ("mq_open with invalid mq_maxmsg did not fail with " - "EINVAL: %m\n"); - result = 1; - } - - attr.mq_maxmsg = 2; - attr.mq_msgsize = -56; - q2 = mq_open (name2, O_CREAT | O_EXCL | O_RDWR, 0600, &attr); - if (q2 != (mqd_t) -1) - { - puts ("mq_open with invalid mq_msgsize unexpectedly succeeded"); - add_temp_mq (name2); - result = 1; - } - else if (errno != EINVAL) - { - printf ("mq_open with invalid mq_msgsize did not fail with " - "EINVAL: %m\n"); - result = 1; - } - - char buf[3]; - struct timespec ts; - if (clock_gettime (CLOCK_REALTIME, &ts) == 0) - ts.tv_sec += 10; - else - { - ts.tv_sec = time (NULL) + 10; - ts.tv_nsec = 0; - } - - if (mq_timedreceive (q, buf, 1, NULL, &ts) == 0) - { - puts ("mq_timedreceive with too small msg_len did not fail"); - result = 1; - } - else if (errno != EMSGSIZE) - { - printf ("mq_timedreceive with too small msg_len did not fail with " - "EMSGSIZE: %m\n"); - result = 1; - } - - ts.tv_nsec = -1; - if (mq_timedreceive (q, buf, 2, NULL, &ts) == 0) - { - puts ("mq_timedreceive with negative tv_nsec did not fail"); - result = 1; - } - else if (errno != EINVAL) - { - printf ("mq_timedreceive with negative tv_nsec did not fail with " - "EINVAL: %m\n"); - result = 1; - } - - ts.tv_nsec = 1000000000; - if (mq_timedreceive (q, buf, 2, NULL, &ts) == 0) - { - puts ("mq_timedreceive with tv_nsec >= 1000000000 did not fail"); - result = 1; - } - else if (errno != EINVAL) - { - printf ("mq_timedreceive with tv_nsec >= 1000000000 did not fail with " - "EINVAL: %m\n"); - result = 1; - } - - struct sigaction sa = { .sa_handler = alrm_handler, .sa_flags = 0 }; - sigemptyset (&sa.sa_mask); - sigaction (SIGALRM, &sa, NULL); - - struct itimerval it = { .it_value = { .tv_sec = 1 } }; - setitimer (ITIMER_REAL, &it, NULL); - - if (mq_receive (q, buf, 2, NULL) == 0) - { - puts ("mq_receive on empty queue did not block"); - result = 1; - } - else if (errno != EINTR) - { - printf ("mq_receive on empty queue did not fail with EINTR: %m\n"); - result = 1; - } - - setitimer (ITIMER_REAL, &it, NULL); - - ts.tv_nsec = 0; - if (mq_timedreceive (q, buf, 2, NULL, &ts) == 0) - { - puts ("mq_timedreceive on empty queue did not block"); - result = 1; - } - else if (errno != EINTR) - { - printf ("mq_timedreceive on empty queue did not fail with EINTR: %m\n"); - result = 1; - } - - buf[0] = '6'; - buf[1] = '7'; - if (mq_send (q, buf, 2, 3) != 0 - || (buf[0] = '8', mq_send (q, buf, 1, 4) != 0)) - { - printf ("mq_send failed: %m\n"); - result = 1; - } - - memset (buf, ' ', sizeof (buf)); - - unsigned int prio; - ssize_t rets = mq_receive (q, buf, 3, &prio); - if (rets != 1) - { - if (rets == -1) - printf ("mq_receive failed: %m\n"); - else - printf ("mq_receive returned %zd != 1\n", rets); - result = 1; - } - else if (prio != 4 || memcmp (buf, "8 ", 3) != 0) - { - printf ("mq_receive prio %u (4) buf \"%c%c%c\" (\"8 \")\n", - prio, buf[0], buf[1], buf[2]); - result = 1; - } - - rets = mq_receive (q, buf, 2, NULL); - if (rets != 2) - { - if (rets == -1) - printf ("mq_receive failed: %m\n"); - else - printf ("mq_receive returned %zd != 2\n", rets); - result = 1; - } - else if (memcmp (buf, "67 ", 3) != 0) - { - printf ("mq_receive buf \"%c%c%c\" != \"67 \"\n", - buf[0], buf[1], buf[2]); - result = 1; - } - - buf[0] = '2'; - buf[1] = '1'; - if (clock_gettime (CLOCK_REALTIME, &ts) != 0) - ts.tv_sec = time (NULL); - ts.tv_nsec = -1000000001; - if ((mq_timedsend (q, buf, 2, 5, &ts) != 0 - && (errno != EINVAL || mq_send (q, buf, 2, 5) != 0)) - || (buf[0] = '3', ts.tv_nsec = -ts.tv_nsec, - (mq_timedsend (q, buf, 1, 4, &ts) != 0 - && (errno != EINVAL || mq_send (q, buf, 1, 4) != 0)))) - { - printf ("mq_timedsend failed: %m\n"); - result = 1; - } - - buf[0] = '-'; - ts.tv_nsec = 1000000001; - if (mq_timedsend (q, buf, 1, 6, &ts) == 0) - { - puts ("mq_timedsend with tv_nsec >= 1000000000 did not fail"); - result = 1; - } - else if (errno != EINVAL) - { - printf ("mq_timedsend with tv_nsec >= 1000000000 did not fail with " - "EINVAL: %m\n"); - result = 1; - } - - ts.tv_nsec = -2; - if (mq_timedsend (q, buf, 1, 6, &ts) == 0) - { - puts ("mq_timedsend with negative tv_nsec did not fail"); - result = 1; - } - else if (errno != EINVAL) - { - printf ("mq_timedsend with megatove tv_nsec did not fail with " - "EINVAL: %m\n"); - result = 1; - } - - setitimer (ITIMER_REAL, &it, NULL); - - if (mq_send (q, buf, 2, 8) == 0) - { - puts ("mq_send on full queue did not block"); - result = 1; - } - else if (errno != EINTR) - { - printf ("mq_send on full queue did not fail with EINTR: %m\n"); - result = 1; - } - - setitimer (ITIMER_REAL, &it, NULL); - - ts.tv_sec += 10; - ts.tv_nsec = 0; - if (mq_timedsend (q, buf, 2, 7, &ts) == 0) - { - puts ("mq_timedsend on full queue did not block"); - result = 1; - } - else if (errno != EINTR) - { - printf ("mq_timedsend on full queue did not fail with EINTR: %m\n"); - result = 1; - } - - memset (buf, ' ', sizeof (buf)); - - if (clock_gettime (CLOCK_REALTIME, &ts) != 0) - ts.tv_sec = time (NULL); - ts.tv_nsec = -1000000001; - rets = mq_timedreceive (q, buf, 2, &prio, &ts); - if (rets == -1 && errno == EINVAL) - rets = mq_receive (q, buf, 2, &prio); - if (rets != 2) - { - if (rets == -1) - printf ("mq_timedreceive failed: %m\n"); - else - printf ("mq_timedreceive returned %zd != 2\n", rets); - result = 1; - } - else if (prio != 5 || memcmp (buf, "21 ", 3) != 0) - { - printf ("mq_timedreceive prio %u (5) buf \"%c%c%c\" (\"21 \")\n", - prio, buf[0], buf[1], buf[2]); - result = 1; - } - - if (mq_receive (q, buf, 1, NULL) == 0) - { - puts ("mq_receive with too small msg_len did not fail"); - result = 1; - } - else if (errno != EMSGSIZE) - { - printf ("mq_receive with too small msg_len did not fail with " - "EMSGSIZE: %m\n"); - result = 1; - } - - ts.tv_nsec = -ts.tv_nsec; - rets = mq_timedreceive (q, buf, 2, NULL, &ts); - if (rets == -1 && errno == EINVAL) - rets = mq_receive (q, buf, 2, NULL); - if (rets != 1) - { - if (rets == -1) - printf ("mq_timedreceive failed: %m\n"); - else - printf ("mq_timedreceive returned %zd != 1\n", rets); - result = 1; - } - else if (memcmp (buf, "31 ", 3) != 0) - { - printf ("mq_timedreceive buf \"%c%c%c\" != \"31 \"\n", - buf[0], buf[1], buf[2]); - result = 1; - } - - if (mq_send (q, "", 0, 2) != 0) - { - printf ("mq_send with msg_len 0 failed: %m\n"); - result = 1; - } - - rets = mq_receive (q, buf, 2, &prio); - if (rets) - { - if (rets == -1) - printf ("mq_receive failed: %m\n"); - else - printf ("mq_receive returned %zd != 0\n", rets); - result = 1; - } - - long mq_prio_max = sysconf (_SC_MQ_PRIO_MAX); - if (mq_prio_max > 0 && (unsigned int) mq_prio_max == mq_prio_max) - { - if (mq_send (q, buf, 1, mq_prio_max) == 0) - { - puts ("mq_send with MQ_PRIO_MAX priority unpexpectedly succeeded"); - result = 1; - } - else if (errno != EINVAL) - { - printf ("mq_send with MQ_PRIO_MAX priority did not fail with " - "EINVAL: %m\n"); - result = 1; - } - - if (mq_send (q, buf, 1, mq_prio_max - 1) != 0) - { - printf ("mq_send with MQ_PRIO_MAX-1 priority failed: %m\n"); - result = 1; - } - } - - if (mq_unlink (name) != 0) - { - printf ("mq_unlink failed: %m\n"); - result = 1; - } - - q2 = mq_open (name, O_RDWR); - if (q2 != (mqd_t) -1) - { - printf ("mq_open of unlinked %s without O_CREAT unexpectedly" - "succeeded\n", name); - result = 1; - } - else if (errno != ENOENT) - { - printf ("mq_open of unlinked %s without O_CREAT did not fail with " - "ENOENT: %m\n", name); - result = 1; - } - - if (mq_close (q) != 0) - { - printf ("mq_close in parent failed: %m\n"); - result = 1; - } - - if (mq_receive (q, buf, 2, NULL) == 0) - { - puts ("mq_receive on invalid mqd_t did not fail"); - result = 1; - } - else if (errno != EBADF) - { - printf ("mq_receive on invalid mqd_t did not fail with EBADF: %m\n"); - result = 1; - } - - if (mq_send (q, buf, 1, 2) == 0) - { - puts ("mq_send on invalid mqd_t did not fail"); - result = 1; - } - else if (errno != EBADF) - { - printf ("mq_send on invalid mqd_t did not fail with EBADF: %m\n"); - result = 1; - } - - if (mq_getattr (q, &attr) == 0) - { - puts ("mq_getattr on invalid mqd_t did not fail"); - result = 1; - } - else if (errno != EBADF) - { - printf ("mq_getattr on invalid mqd_t did not fail with EBADF: %m\n"); - result = 1; - } - - memset (&attr, 0, sizeof (attr)); - if (mq_setattr (q, &attr, NULL) == 0) - { - puts ("mq_setattr on invalid mqd_t did not fail"); - result = 1; - } - else if (errno != EBADF) - { - printf ("mq_setattr on invalid mqd_t did not fail with EBADF: %m\n"); - result = 1; - } - - if (mq_unlink ("/tst-mqueue2-which-should-never-exist") != -1) - { - puts ("mq_unlink of non-existant message queue unexpectedly succeeded"); - result = 1; - } - else if (errno != ENOENT) - { - printf ("mq_unlink of non-existant message queue did not fail with " - "ENOENT: %m\n"); - result = 1; - } - return result; -} - -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mqueue3.c b/test/nptl/tst-mqueue3.c deleted file mode 100644 index 5686f43f7..000000000 --- a/test/nptl/tst-mqueue3.c +++ /dev/null @@ -1,243 +0,0 @@ -/* Test SIGEV_THREAD handling for POSIX message queues. - Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if _POSIX_THREADS -# include - -static pid_t pid; -static mqd_t m; -static const char message[] = "hello"; - -# define MAXMSG 10 -# define MSGSIZE 10 -# define UNIQUE 42 - - -static void -fct (union sigval s) -{ - /* Put the mq in non-blocking mode. */ - struct mq_attr attr; - if (mq_getattr (m, &attr) != 0) - { - printf ("%s: mq_getattr failed: %m\n", __FUNCTION__); - exit (1); - } - attr.mq_flags |= O_NONBLOCK; - if (mq_setattr (m, &attr, NULL) != 0) - { - printf ("%s: mq_setattr failed: %m\n", __FUNCTION__); - exit (1); - } - - /* Check the values. */ - if (attr.mq_maxmsg != MAXMSG) - { - printf ("%s: mq_maxmsg wrong: is %ld, expecte %d\n", - __FUNCTION__, attr.mq_maxmsg, MAXMSG); - exit (1); - } - if (attr.mq_msgsize != MAXMSG) - { - printf ("%s: mq_msgsize wrong: is %ld, expecte %d\n", - __FUNCTION__, attr.mq_msgsize, MSGSIZE); - exit (1); - } - - /* Read the message. */ - char buf[attr.mq_msgsize]; - ssize_t n = TEMP_FAILURE_RETRY (mq_receive (m, buf, attr.mq_msgsize, NULL)); - if (n != sizeof (message)) - { - printf ("%s: length of message wrong: is %zd, expected %zu\n", - __FUNCTION__, n, sizeof (message)); - exit (1); - } - if (memcmp (buf, message, sizeof (message)) != 0) - { - printf ("%s: message wrong: is \"%s\", expected \"%s\"\n", - __FUNCTION__, buf, message); - exit (1); - } - - exit (UNIQUE); -} - - -int -do_test (void) -{ - char tmpfname[] = "/tmp/tst-mqueue3-barrier.XXXXXX"; - int fd = mkstemp (tmpfname); - if (fd == -1) - { - printf ("cannot open temporary file: %m\n"); - return 1; - } - - /* Make sure it is always removed. */ - unlink (tmpfname); - - /* Create one page of data. */ - size_t ps = sysconf (_SC_PAGESIZE); - char data[ps]; - memset (data, '\0', ps); - - /* Write the data to the file. */ - if (write (fd, data, ps) != (ssize_t) ps) - { - puts ("short write"); - return 1; - } - - void *mem = mmap (NULL, ps, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (mem == MAP_FAILED) - { - printf ("mmap failed: %m\n"); - return 1; - } - - pthread_barrier_t *b; - b = (pthread_barrier_t *) (((uintptr_t) mem + __alignof (pthread_barrier_t)) - & ~(__alignof (pthread_barrier_t) - 1)); - - pthread_barrierattr_t a; - if (pthread_barrierattr_init (&a) != 0) - { - puts ("barrierattr_init failed"); - return 1; - } - - if (pthread_barrierattr_setpshared (&a, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("barrierattr_setpshared failed, could not test"); - return 0; - } - - if (pthread_barrier_init (b, &a, 2) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - if (pthread_barrierattr_destroy (&a) != 0) - { - puts ("barrierattr_destroy failed"); - return 1; - } - - /* Name for the message queue. */ - char mqname[sizeof ("/tst-mqueue3-") + 3 * sizeof (pid_t)]; - snprintf (mqname, sizeof (mqname) - 1, "/tst-mqueue3-%ld", - (long int) getpid ()); - - /* Create the message queue. */ - struct mq_attr attr = { .mq_maxmsg = MAXMSG, .mq_msgsize = MSGSIZE }; - m = mq_open (mqname, O_CREAT | O_EXCL | O_RDWR, 0600, &attr); - if (m == -1) - { - if (errno == ENOSYS) - { - puts ("not implemented"); - return 0; - } - - puts ("mq_open failed"); - return 1; - } - - /* Unlink the message queue right away. */ - if (mq_unlink (mqname) != 0) - { - puts ("mq_unlink failed"); - return 1; - } - - pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - return 1; - } - if (pid == 0) - { - /* Request notification via thread. */ - struct sigevent ev; - ev.sigev_notify = SIGEV_THREAD; - ev.sigev_notify_function = fct; - ev.sigev_value.sival_ptr = NULL; - ev.sigev_notify_attributes = NULL; - - /* Tell the kernel. */ - if (mq_notify (m,&ev) != 0) - { - puts ("mq_notify failed"); - exit (1); - } - - /* Tell the parent we are ready. */ - (void) pthread_barrier_wait (b); - - /* Make sure the process goes away eventually. */ - alarm (10); - - /* Do nothing forever. */ - while (1) - pause (); - } - - /* Wait for the child process to register to notification method. */ - (void) pthread_barrier_wait (b); - - /* Send the message. */ - if (mq_send (m, message, sizeof (message), 1) != 0) - { - kill (pid, SIGKILL); - puts ("mq_send failed"); - return 1; - } - - int r; - if (TEMP_FAILURE_RETRY (waitpid (pid, &r, 0)) != pid) - { - kill (pid, SIGKILL); - puts ("waitpid failed"); - return 1; - } - - return WIFEXITED (r) && WEXITSTATUS (r) == UNIQUE ? 0 : 1; -} -# define TEST_FUNCTION do_test () -#else -# define TEST_FUNCTION 0 -#endif - -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mqueue4.c b/test/nptl/tst-mqueue4.c deleted file mode 100644 index 87ef0c3c0..000000000 --- a/test/nptl/tst-mqueue4.c +++ /dev/null @@ -1,287 +0,0 @@ -/* Test message queue passing. - Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "tst-mqueue.h" - -#define TIMEOUT 4 -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ - int result = 0; - - char name[sizeof "/tst-mqueue4-" + sizeof (pid_t) * 3 + NAME_MAX]; - char *p; - p = name + snprintf (name, sizeof (name), "/tst-mqueue4-%u", getpid ()); - struct mq_attr attr = { .mq_maxmsg = 2, .mq_msgsize = 2 }; - mqd_t q = mq_open (name, O_CREAT | O_EXCL | O_RDWR, 0600, &attr); - - if (q == (mqd_t) -1) - { - printf ("mq_open failed with: %m\n"); - return result; - } - else - add_temp_mq (name); - - *p = '.'; - memset (p + 1, 'x', NAME_MAX + 1 - (p - name)); - name[NAME_MAX + 1] = '\0'; - - mqd_t q2 = mq_open (name, O_CREAT | O_EXCL | O_RDWR, 0600, &attr); - if (q2 == (mqd_t) -1) - { - printf ("mq_open with NAME_MAX long name compoment failed with: %m\n"); - result = 1; - } - - if (mq_unlink (name) != 0) - { - printf ("mq_unlink failed: %m\n"); - result = 1; - } - - if (mq_close (q2) != 0) - { - printf ("mq_close failed: %m\n"); - result = 1; - } - - name[NAME_MAX + 1] = 'x'; - name[NAME_MAX + 2] = '\0'; - q2 = mq_open (name, O_CREAT | O_EXCL | O_RDWR, 0600, &attr); - if (q2 != (mqd_t) -1) - { - puts ("mq_open with too long name component unexpectedly succeeded"); - mq_unlink (name); - mq_close (q2); - result = 1; - } - else if (errno != ENAMETOOLONG) - { - printf ("mq_open with too long name component did not fail with " - "ENAMETOOLONG: %m\n"); - result = 1; - } - - if (mq_unlink (name) == 0) - { - puts ("mq_unlink with too long name component unexpectedly succeeded"); - result = 1; - } - else if (errno != ENAMETOOLONG) - { - printf ("mq_unlink with too long name component did not fail with " - "ENAMETOOLONG: %m\n"); - result = 1; - } - - *p = '\0'; - attr.mq_maxmsg = 1; - attr.mq_msgsize = 3; - q2 = mq_open (name, O_CREAT | O_RDWR, 0600, &attr); - if (q2 == (mqd_t) -1) - { - printf ("mq_open without O_EXCL failed with %m\n"); - result = 1; - } - - char buf[3]; - strcpy (buf, "jk"); - if (mq_send (q, buf, 2, 4) != 0) - { - printf ("mq_send failed: %m\n"); - result = 1; - } - - if (mq_send (q, buf + 1, 1, 5) != 0) - { - printf ("mq_send failed: %m\n"); - result = 1; - } - - if (mq_getattr (q2, &attr) != 0) - { - printf ("mq_getattr failed: %m\n"); - result = 1; - } - - if ((attr.mq_flags & O_NONBLOCK) - || attr.mq_maxmsg != 2 - || attr.mq_msgsize != 2 - || attr.mq_curmsgs != 2) - { - printf ("mq_getattr returned unexpected { .mq_flags = %ld,\n" - ".mq_maxmsg = %ld, .mq_msgsize = %ld, .mq_curmsgs = %ld }\n", - attr.mq_flags, attr.mq_maxmsg, attr.mq_msgsize, attr.mq_curmsgs); - result = 1; - } - - struct timespec ts; - if (clock_gettime (CLOCK_REALTIME, &ts) == 0) - ++ts.tv_sec; - else - { - ts.tv_sec = time (NULL) + 1; - ts.tv_nsec = 0; - } - - if (mq_timedsend (q2, buf, 1, 1, &ts) == 0) - { - puts ("mq_timedsend unexpectedly succeeded"); - result = 1; - } - else if (errno != ETIMEDOUT) - { - printf ("mq_timedsend did not fail with ETIMEDOUT: %m\n"); - result = 1; - } - - if (mq_close (q2) != 0) - { - printf ("mq_close failed: %m\n"); - result = 1; - } - - q2 = mq_open (name, O_RDONLY, 0600); - if (q2 == (mqd_t) -1) - { - printf ("mq_open without O_CREAT failed with %m\n"); - result = 1; - } - - mqd_t q3 = mq_open (name, O_RDONLY, 0600); - if (q3 == (mqd_t) -1) - { - printf ("mq_open without O_CREAT failed with %m\n"); - result = 1; - } - - memset (buf, ' ', sizeof (buf)); - - unsigned int prio; - ssize_t rets = mq_receive (q2, buf, 2, &prio); - if (rets != 1) - { - if (rets == -1) - printf ("mq_receive failed with: %m\n"); - else - printf ("mq_receive returned %zd != 1\n", rets); - result = 1; - } - else if (prio != 5 || memcmp (buf, "k ", 3) != 0) - { - printf ("mq_receive returned prio %u (2) buf \"%c%c%c\" (\"k \")\n", - prio, buf[0], buf[1], buf[2]); - result = 1; - } - - if (mq_getattr (q3, &attr) != 0) - { - printf ("mq_getattr failed: %m\n"); - result = 1; - } - - if ((attr.mq_flags & O_NONBLOCK) - || attr.mq_maxmsg != 2 - || attr.mq_msgsize != 2 - || attr.mq_curmsgs != 1) - { - printf ("mq_getattr returned unexpected { .mq_flags = %ld,\n" - ".mq_maxmsg = %ld, .mq_msgsize = %ld, .mq_curmsgs = %ld }\n", - attr.mq_flags, attr.mq_maxmsg, attr.mq_msgsize, attr.mq_curmsgs); - result = 1; - } - - rets = mq_receive (q3, buf, 2, NULL); - if (rets != 2) - { - if (rets == -1) - printf ("mq_receive failed with: %m\n"); - else - printf ("mq_receive returned %zd != 2\n", rets); - result = 1; - } - else if (memcmp (buf, "jk ", 3) != 0) - { - printf ("mq_receive returned buf \"%c%c%c\" != \"jk \"\n", - buf[0], buf[1], buf[2]); - result = 1; - } - - if (clock_gettime (CLOCK_REALTIME, &ts) == 0) - ++ts.tv_sec; - else - { - ts.tv_sec = time (NULL) + 1; - ts.tv_nsec = 0; - } - - if (mq_timedreceive (q2, buf, 2, NULL, &ts) != -1) - { - puts ("mq_timedreceive on empty queue unexpectedly succeeded"); - result = 1; - } - else if (errno != ETIMEDOUT) - { - printf ("mq_timedreceive on empty queue did not fail with " - "ETIMEDOUT: %m\n"); - result = 1; - } - - if (mq_unlink (name) != 0) - { - printf ("mq_unlink failed: %m\n"); - result = 1; - } - - if (mq_close (q) != 0) - { - printf ("mq_close failed: %m\n"); - result = 1; - } - - if (mq_close (q2) != 0) - { - printf ("mq_close failed: %m\n"); - result = 1; - } - - if (mq_close (q3) != 0) - { - printf ("mq_close failed: %m\n"); - result = 1; - } - - return result; -} - -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mqueue5.c b/test/nptl/tst-mqueue5.c deleted file mode 100644 index 58e2ebfb4..000000000 --- a/test/nptl/tst-mqueue5.c +++ /dev/null @@ -1,1013 +0,0 @@ -/* Test mq_notify. - Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "tst-mqueue.h" - -#define TIMEOUT 3 - -#if _POSIX_THREADS -# include - -volatile int rtmin_cnt; -volatile pid_t rtmin_pid; -volatile uid_t rtmin_uid; -volatile int rtmin_code; -volatile union sigval rtmin_sigval; - -static void -rtmin_handler (int sig, siginfo_t *info, void *ctx) -{ - if (sig != SIGRTMIN) - abort (); - ++rtmin_cnt; - rtmin_pid = info->si_pid; - rtmin_uid = info->si_uid; - rtmin_code = info->si_code; - rtmin_sigval = info->si_value; -} - -#define mqsend(q) (mqsend) (q, __LINE__) -static int -(mqsend) (mqd_t q, int line) -{ - char c; - if (mq_send (q, &c, 1, 1) != 0) - { - printf ("mq_send on line %d failed with: %m\n", line); - return 1; - } - return 0; -} - -#define mqrecv(q) (mqrecv) (q, __LINE__) -static int -(mqrecv) (mqd_t q, int line) -{ - char c; - ssize_t rets = TEMP_FAILURE_RETRY (mq_receive (q, &c, 1, NULL)); - if (rets != 1) - { - if (rets == -1) - printf ("mq_receive on line %d failed with: %m\n", line); - else - printf ("mq_receive on line %d returned %zd != 1\n", - line, rets); - return 1; - } - return 0; -} - -struct thr_data -{ - const char *name; - pthread_barrier_t *b3; - mqd_t q; -}; - -static void * -thr (void *arg) -{ - pthread_barrier_t *b3 = ((struct thr_data *)arg)->b3; - mqd_t q = ((struct thr_data *)arg)->q; - const char *name = ((struct thr_data *)arg)->name; - int result = 0; - - result |= mqrecv (q); - - (void) pthread_barrier_wait (b3); - - /* Child verifies SIGRTMIN has not been sent. */ - - (void) pthread_barrier_wait (b3); - - /* Parent calls mqsend (q), which should trigger notification. */ - - (void) pthread_barrier_wait (b3); - - if (rtmin_cnt != 2) - { - puts ("SIGRTMIN signal in child did not arrive"); - result = 1; - } - else if (rtmin_pid != getppid () - || rtmin_uid != getuid () - || rtmin_code != SI_MESGQ - || rtmin_sigval.sival_int != 0xdeadbeef) - { - printf ("unexpected siginfo_t fields: pid %u (%u), uid %u (%u), code %d (%d), si_int %d (%d)\n", - rtmin_pid, getppid (), rtmin_uid, getuid (), - rtmin_code, SI_MESGQ, rtmin_sigval.sival_int, 0xdeadbeef); - result = 1; - } - - struct sigevent ev; - memset (&ev, 0x82, sizeof (ev)); - ev.sigev_notify = SIGEV_NONE; - if (mq_notify (q, &ev) != 0) - { - printf ("mq_notify in thread (q, { SIGEV_NONE }) failed with: %m\n"); - result = 1; - } - - if (mq_notify (q, NULL) != 0) - { - printf ("mq_notify in thread (q, NULL) failed with: %m\n"); - result = 1; - } - - result |= mqrecv (q); - - (void) pthread_barrier_wait (b3); - - /* Child calls mq_notify (q, { SIGEV_SIGNAL }). */ - - (void) pthread_barrier_wait (b3); - - if (mq_notify (q, NULL) != 0) - { - printf ("second mq_notify in thread (q, NULL) failed with: %m\n"); - result = 1; - } - - (void) pthread_barrier_wait (b3); - - /* Parent calls mqsend (q), which should not trigger notification. */ - - (void) pthread_barrier_wait (b3); - - /* Child verifies SIGRTMIN has not been received. */ - /* Child calls mq_notify (q, { SIGEV_SIGNAL }). */ - - (void) pthread_barrier_wait (b3); - - mqd_t q4 = mq_open (name, O_RDONLY); - if (q4 == (mqd_t) -1) - { - printf ("mq_open in thread failed with: %m\n"); - result = 1; - } - - if (mq_notify (q4, NULL) != 0) - { - printf ("mq_notify in thread (q4, NULL) failed with: %m\n"); - result = 1; - } - - if (mq_close (q4) != 0) - { - printf ("mq_close in thread failed with: %m\n"); - result = 1; - } - - (void) pthread_barrier_wait (b3); - - /* Parent calls mqsend (q), which should not trigger notification. */ - - (void) pthread_barrier_wait (b3); - - /* Child verifies SIGRTMIN has not been received. */ - /* Child calls mq_notify (q, { SIGEV_SIGNAL }). */ - - (void) pthread_barrier_wait (b3); - - mqd_t q5 = mq_open (name, O_WRONLY); - if (q5 == (mqd_t) -1) - { - printf ("mq_open O_WRONLY in thread failed with: %m\n"); - result = 1; - } - - if (mq_notify (q5, NULL) != 0) - { - printf ("mq_notify in thread (q5, NULL) failed with: %m\n"); - result = 1; - } - - if (mq_close (q5) != 0) - { - printf ("mq_close in thread failed with: %m\n"); - result = 1; - } - - (void) pthread_barrier_wait (b3); - - /* Parent calls mqsend (q), which should not trigger notification. */ - - (void) pthread_barrier_wait (b3); - - /* Child verifies SIGRTMIN has not been received. */ - - return (void *) (long) result; -} - -static void -do_child (const char *name, pthread_barrier_t *b2, pthread_barrier_t *b3, - mqd_t q) -{ - int result = 0; - - struct sigevent ev; - memset (&ev, 0x55, sizeof (ev)); - ev.sigev_notify = SIGEV_SIGNAL; - ev.sigev_signo = SIGRTMIN; - ev.sigev_value.sival_ptr = &ev; - if (mq_notify (q, &ev) == 0) - { - puts ("first mq_notify in child (q, { SIGEV_SIGNAL }) unexpectedly succeeded"); - result = 1; - } - else if (errno != EBUSY) - { - printf ("first mq_notify in child (q, { SIGEV_SIGNAL }) failed with: %m\n"); - result = 1; - } - - (void) pthread_barrier_wait (b2); - - /* Parent calls mqsend (q), which makes notification available. */ - - (void) pthread_barrier_wait (b2); - - rtmin_cnt = 0; - - if (mq_notify (q, &ev) != 0) - { - printf ("second mq_notify in child (q, { SIGEV_SIGNAL }) failed with: %m\n"); - result = 1; - } - - if (rtmin_cnt != 0) - { - puts ("SIGRTMIN signal in child caught too early"); - result = 1; - } - - (void) pthread_barrier_wait (b2); - - /* Parent unsuccessfully attempts to mq_notify. */ - /* Parent calls mqsend (q), which makes notification available - and triggers a signal in the child. */ - /* Parent successfully calls mq_notify SIGEV_SIGNAL. */ - - (void) pthread_barrier_wait (b2); - - if (rtmin_cnt != 1) - { - puts ("SIGRTMIN signal in child did not arrive"); - result = 1; - } - else if (rtmin_pid != getppid () - || rtmin_uid != getuid () - || rtmin_code != SI_MESGQ - || rtmin_sigval.sival_ptr != &ev) - { - printf ("unexpected siginfo_t fields: pid %u (%u), uid %u (%u), code %d (%d), si_ptr %p (%p)\n", - rtmin_pid, getppid (), rtmin_uid, getuid (), - rtmin_code, SI_MESGQ, rtmin_sigval.sival_ptr, &ev); - result = 1; - } - - result |= mqsend (q); - - (void) pthread_barrier_wait (b2); - - /* Parent verifies caught SIGRTMIN. */ - - mqd_t q2 = mq_open (name, O_RDWR); - if (q2 == (mqd_t) -1) - { - printf ("mq_open in child failed with: %m\n"); - result = 1; - } - - (void) pthread_barrier_wait (b2); - - /* Parent mq_open's another mqd_t for the same queue (q3). */ - - memset (&ev, 0x11, sizeof (ev)); - ev.sigev_notify = SIGEV_SIGNAL; - ev.sigev_signo = SIGRTMIN; - ev.sigev_value.sival_ptr = &ev; - if (mq_notify (q2, &ev) != 0) - { - printf ("mq_notify in child (q2, { SIGEV_SIGNAL }) failed with: %m\n"); - result = 1; - } - - (void) pthread_barrier_wait (b2); - - /* Parent unsuccessfully attempts to mq_notify { SIGEV_NONE } on q. */ - - (void) pthread_barrier_wait (b2); - - if (mq_close (q2) != 0) - { - printf ("mq_close failed: %m\n"); - result = 1; - } - - (void) pthread_barrier_wait (b2); - - /* Parent successfully calls mq_notify { SIGEV_NONE } on q3. */ - - (void) pthread_barrier_wait (b2); - - memset (&ev, 0xbb, sizeof (ev)); - ev.sigev_notify = SIGEV_SIGNAL; - ev.sigev_signo = SIGRTMIN; - ev.sigev_value.sival_ptr = &b2; - if (mq_notify (q, &ev) == 0) - { - puts ("third mq_notify in child (q, { SIGEV_SIGNAL }) unexpectedly succeeded"); - result = 1; - } - else if (errno != EBUSY) - { - printf ("third mq_notify in child (q, { SIGEV_SIGNAL }) failed with: %m\n"); - result = 1; - } - - (void) pthread_barrier_wait (b2); - - /* Parent calls mq_close on q3, which makes the queue available again for - notification. */ - - (void) pthread_barrier_wait (b2); - - memset (&ev, 0x13, sizeof (ev)); - ev.sigev_notify = SIGEV_NONE; - if (mq_notify (q, &ev) != 0) - { - printf ("mq_notify in child (q, { SIGEV_NONE }) failed with: %m\n"); - result = 1; - } - - if (mq_notify (q, NULL) != 0) - { - printf ("mq_notify in child (q, NULL) failed with: %m\n"); - result = 1; - } - - (void) pthread_barrier_wait (b2); - - struct thr_data thr_data = { .name = name, .b3 = b3, .q = q }; - pthread_t th; - int ret = pthread_create (&th, NULL, thr, &thr_data); - if (ret) - { - errno = ret; - printf ("pthread_created failed with: %m\n"); - result = 1; - } - - /* Wait till thr calls mq_receive on the empty queue q and blocks on it. */ - sleep (1); - - memset (&ev, 0x5f, sizeof (ev)); - ev.sigev_notify = SIGEV_SIGNAL; - ev.sigev_signo = SIGRTMIN; - ev.sigev_value.sival_int = 0xdeadbeef; - if (mq_notify (q, &ev) != 0) - { - printf ("fourth mq_notify in child (q, { SIGEV_SIGNAL }) failed with: %m\n"); - result = 1; - } - - (void) pthread_barrier_wait (b2); - - /* Parent calls mqsend (q), which should wake up mqrecv (q) - in the thread but no notification should be sent. */ - - (void) pthread_barrier_wait (b3); - - if (rtmin_cnt != 1) - { - puts ("SIGRTMIN signal caught while thr was blocked on mq_receive"); - result = 1; - } - - (void) pthread_barrier_wait (b3); - - /* Parent calls mqsend (q), which should trigger notification. */ - - (void) pthread_barrier_wait (b3); - - /* Thread verifies SIGRTMIN has been received. */ - /* Thread calls mq_notify (q, { SIGEV_NONE }) to verify notification is now - available for registration. */ - /* Thread calls mq_notify (q, NULL). */ - - (void) pthread_barrier_wait (b3); - - memset (&ev, 0x6a, sizeof (ev)); - ev.sigev_notify = SIGEV_SIGNAL; - ev.sigev_signo = SIGRTMIN; - ev.sigev_value.sival_ptr = do_child; - if (mq_notify (q, &ev) != 0) - { - printf ("fifth mq_notify in child (q, { SIGEV_SIGNAL }) failed with: %m\n"); - result = 1; - } - - (void) pthread_barrier_wait (b3); - - /* Thread calls mq_notify (q, NULL), which should unregister the above - notification. */ - - (void) pthread_barrier_wait (b3); - - /* Parent calls mqsend (q), which should not trigger notification. */ - - (void) pthread_barrier_wait (b3); - - if (rtmin_cnt != 2) - { - puts ("SIGRTMIN signal caught while notification has been disabled"); - result = 1; - } - - memset (&ev, 0x7b, sizeof (ev)); - ev.sigev_notify = SIGEV_SIGNAL; - ev.sigev_signo = SIGRTMIN; - ev.sigev_value.sival_ptr = thr; - if (mq_notify (q, &ev) != 0) - { - printf ("sixth mq_notify in child (q, { SIGEV_SIGNAL }) failed with: %m\n"); - result = 1; - } - - (void) pthread_barrier_wait (b3); - - /* Thread opens a new O_RDONLY mqd_t (q4). */ - /* Thread calls mq_notify (q4, NULL), which should unregister the above - notification. */ - /* Thread calls mq_close (q4). */ - - (void) pthread_barrier_wait (b3); - - /* Parent calls mqsend (q), which should not trigger notification. */ - - (void) pthread_barrier_wait (b3); - - if (rtmin_cnt != 2) - { - puts ("SIGRTMIN signal caught while notification has been disabled"); - result = 1; - } - - memset (&ev, 0xe1, sizeof (ev)); - ev.sigev_notify = SIGEV_SIGNAL; - ev.sigev_signo = SIGRTMIN; - ev.sigev_value.sival_int = 127; - if (mq_notify (q, &ev) != 0) - { - printf ("seventh mq_notify in child (q, { SIGEV_SIGNAL }) failed with: %m\n"); - result = 1; - } - - (void) pthread_barrier_wait (b3); - - /* Thread opens a new O_WRONLY mqd_t (q5). */ - /* Thread calls mq_notify (q5, NULL), which should unregister the above - notification. */ - /* Thread calls mq_close (q5). */ - - (void) pthread_barrier_wait (b3); - - /* Parent calls mqsend (q), which should not trigger notification. */ - - (void) pthread_barrier_wait (b3); - - if (rtmin_cnt != 2) - { - puts ("SIGRTMIN signal caught while notification has been disabled"); - result = 1; - } - - void *thr_ret; - ret = pthread_join (th, &thr_ret); - if (ret) - { - errno = ret; - printf ("pthread_join failed: %m\n"); - result = 1; - } - else if (thr_ret) - result = 1; - - if (mq_close (q) != 0) - { - printf ("mq_close failed: %m\n"); - result = 1; - } - - exit (result); -} - -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ - int result = 0; - - char tmpfname[] = "/tmp/tst-mqueue5-barrier.XXXXXX"; - int fd = mkstemp (tmpfname); - if (fd == -1) - { - printf ("cannot open temporary file: %m\n"); - return 1; - } - - /* Make sure it is always removed. */ - unlink (tmpfname); - - /* Create one page of data. */ - size_t ps = sysconf (_SC_PAGESIZE); - char data[ps]; - memset (data, '\0', ps); - - /* Write the data to the file. */ - if (write (fd, data, ps) != (ssize_t) ps) - { - puts ("short write"); - return 1; - } - - void *mem = mmap (NULL, ps, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (mem == MAP_FAILED) - { - printf ("mmap failed: %m\n"); - return 1; - } - - pthread_barrier_t *b2; - b2 = (pthread_barrier_t *) (((uintptr_t) mem + __alignof (pthread_barrier_t)) - & ~(__alignof (pthread_barrier_t) - 1)); - - pthread_barrier_t *b3; - b3 = b2 + 1; - - pthread_barrierattr_t a; - if (pthread_barrierattr_init (&a) != 0) - { - puts ("barrierattr_init failed"); - return 1; - } - - if (pthread_barrierattr_setpshared (&a, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("barrierattr_setpshared failed, could not test"); - return 0; - } - - if (pthread_barrier_init (b2, &a, 2) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - if (pthread_barrier_init (b3, &a, 3) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - if (pthread_barrierattr_destroy (&a) != 0) - { - puts ("barrierattr_destroy failed"); - return 1; - } - - char name[sizeof "/tst-mqueue5-" + sizeof (pid_t) * 3]; - snprintf (name, sizeof (name), "/tst-mqueue5-%u", getpid ()); - - struct mq_attr attr = { .mq_maxmsg = 1, .mq_msgsize = 1 }; - mqd_t q = mq_open (name, O_CREAT | O_EXCL | O_RDWR, 0600, &attr); - - if (q == (mqd_t) -1) - { - printf ("mq_open failed with: %m\n"); - return result; - } - else - add_temp_mq (name); - - struct sigevent ev; - memset (&ev, 0xaa, sizeof (ev)); - ev.sigev_notify = SIGEV_NONE; - if (mq_notify (q, &ev) != 0) - { - printf ("mq_notify (q, { SIGEV_NONE }) failed with: %m\n"); - result = 1; - } - - if (mq_notify (q, &ev) == 0) - { - puts ("second mq_notify (q, { SIGEV_NONE }) unexpectedly succeeded"); - result = 1; - } - else if (errno != EBUSY) - { - printf ("second mq_notify (q, { SIGEV_NONE }) failed with: %m\n"); - result = 1; - } - - result |= mqsend (q); - - if (mq_notify (q, &ev) != 0) - { - printf ("third mq_notify (q, { SIGEV_NONE }) failed with: %m\n"); - result = 1; - } - - result |= mqrecv (q); - - if (mq_notify (q, NULL) != 0) - { - printf ("mq_notify (q, NULL) failed with: %m\n"); - result = 1; - } - - if (mq_notify (q, NULL) != 0) - { - /* Implementation-defined behaviour, so don't fail, - just inform. */ - printf ("second mq_notify (q, NULL) failed with: %m\n"); - } - - struct sigaction sa = { .sa_sigaction = rtmin_handler, - .sa_flags = SA_SIGINFO }; - sigemptyset (&sa.sa_mask); - sigaction (SIGRTMIN, &sa, NULL); - - memset (&ev, 0x55, sizeof (ev)); - ev.sigev_notify = SIGEV_SIGNAL; - ev.sigev_signo = SIGRTMIN; - ev.sigev_value.sival_int = 26; - if (mq_notify (q, &ev) != 0) - { - printf ("mq_notify (q, { SIGEV_SIGNAL }) failed with: %m\n"); - result = 1; - } - - ev.sigev_value.sival_ptr = &ev; - if (mq_notify (q, &ev) == 0) - { - puts ("second mq_notify (q, { SIGEV_SIGNAL }) unexpectedly succeeded"); - result = 1; - } - else if (errno != EBUSY) - { - printf ("second mq_notify (q, { SIGEV_SIGNAL }) failed with: %m\n"); - result = 1; - } - - if (rtmin_cnt != 0) - { - puts ("SIGRTMIN signal caught too early"); - result = 1; - } - - result |= mqsend (q); - - if (rtmin_cnt != 1) - { - puts ("SIGRTMIN signal did not arrive"); - result = 1; - } - else if (rtmin_pid != getpid () - || rtmin_uid != getuid () - || rtmin_code != SI_MESGQ - || rtmin_sigval.sival_int != 26) - { - printf ("unexpected siginfo_t fields: pid %u (%u), uid %u (%u), code %d (%d), si_int %d (26)\n", - rtmin_pid, getpid (), rtmin_uid, getuid (), - rtmin_code, SI_MESGQ, rtmin_sigval.sival_int); - result = 1; - } - - ev.sigev_value.sival_int = 75; - if (mq_notify (q, &ev) != 0) - { - printf ("third mq_notify (q, { SIGEV_SIGNAL }) failed with: %m\n"); - result = 1; - } - - result |= mqrecv (q); - - if (mq_notify (q, NULL) != 0) - { - printf ("mq_notify (q, NULL) failed with: %m\n"); - result = 1; - } - - memset (&ev, 0x33, sizeof (ev)); - ev.sigev_notify = SIGEV_NONE; - if (mq_notify (q, &ev) != 0) - { - printf ("fourth mq_notify (q, { SIGEV_NONE }) failed with: %m\n"); - result = 1; - } - - pid_t pid = fork (); - if (pid == -1) - { - printf ("fork () failed: %m\n"); - mq_unlink (name); - return 1; - } - - if (pid == 0) - do_child (name, b2, b3, q); - - /* Child unsuccessfully attempts to mq_notify. */ - - (void) pthread_barrier_wait (b2); - - result |= mqsend (q); - - (void) pthread_barrier_wait (b2); - - /* Child successfully calls mq_notify SIGEV_SIGNAL now. */ - - result |= mqrecv (q); - - (void) pthread_barrier_wait (b2); - - memset (&ev, 0xbb, sizeof (ev)); - ev.sigev_notify = SIGEV_SIGNAL; - ev.sigev_signo = SIGRTMIN; - ev.sigev_value.sival_int = 15; - if (mq_notify (q, &ev) == 0) - { - puts ("fourth mq_notify (q, { SIGEV_SIGNAL }) unexpectedly succeeded"); - result = 1; - } - else if (errno != EBUSY) - { - printf ("fourth mq_notify (q, { SIGEV_SIGNAL }) failed with: %m\n"); - result = 1; - } - - result |= mqsend (q); - - if (mq_notify (q, &ev) != 0) - { - printf ("fifth mq_notify (q, { SIGEV_SIGNAL }) failed with: %m\n"); - result = 1; - } - - if (rtmin_cnt != 1) - { - puts ("SIGRTMIN signal caught too early"); - result = 1; - } - - result |= mqrecv (q); - - (void) pthread_barrier_wait (b2); - - /* Child verifies caught SIGRTMIN signal. */ - /* Child calls mq_send (q) which triggers SIGRTMIN signal here. */ - - (void) pthread_barrier_wait (b2); - - /* Child mq_open's another mqd_t for the same queue (q2). */ - - if (rtmin_cnt != 2) - { - puts ("SIGRTMIN signal did not arrive"); - result = 1; - } - else if (rtmin_pid != pid - || rtmin_uid != getuid () - || rtmin_code != SI_MESGQ - || rtmin_sigval.sival_int != 15) - { - printf ("unexpected siginfo_t fields: pid %u (%u), uid %u (%u), code %d (%d), si_int %d (15)\n", - rtmin_pid, pid, rtmin_uid, getuid (), - rtmin_code, SI_MESGQ, rtmin_sigval.sival_int); - result = 1; - } - - result |= mqrecv (q); - - (void) pthread_barrier_wait (b2); - - /* Child successfully calls mq_notify { SIGEV_SIGNAL } on q2. */ - - (void) pthread_barrier_wait (b2); - - memset (&ev, 0xbb, sizeof (ev)); - ev.sigev_notify = SIGEV_NONE; - if (mq_notify (q, &ev) == 0) - { - puts ("fifth mq_notify (q, { SIGEV_NONE }) unexpectedly succeeded"); - result = 1; - } - else if (errno != EBUSY) - { - printf ("fifth mq_notify (q, { SIGEV_NONE }) failed with: %m\n"); - result = 1; - } - - (void) pthread_barrier_wait (b2); - - /* Child calls mq_close on q2, which makes the queue available again for - notification. */ - - mqd_t q3 = mq_open (name, O_RDWR); - if (q3 == (mqd_t) -1) - { - printf ("mq_open q3 in parent failed with: %m\n"); - result = 1; - } - - (void) pthread_barrier_wait (b2); - - memset (&ev, 0x12, sizeof (ev)); - ev.sigev_notify = SIGEV_NONE; - if (mq_notify (q3, &ev) != 0) - { - printf ("mq_notify (q3, { SIGEV_NONE }) failed with: %m\n"); - result = 1; - } - - (void) pthread_barrier_wait (b2); - - /* Child unsuccessfully attempts to mq_notify { SIGEV_SIGNAL } on q. */ - - (void) pthread_barrier_wait (b2); - - if (mq_close (q3) != 0) - { - printf ("mq_close failed: %m\n"); - result = 1; - } - - (void) pthread_barrier_wait (b2); - - /* Child successfully calls mq_notify { SIGEV_NONE } on q. */ - /* Child successfully calls mq_notify NULL on q. */ - - (void) pthread_barrier_wait (b2); - - /* Child creates new thread. */ - /* Thread blocks on mqrecv (q). */ - /* Child sleeps for 1sec so that thread has time to reach that point. */ - /* Child successfully calls mq_notify { SIGEV_SIGNAL } on q. */ - - (void) pthread_barrier_wait (b2); - - result |= mqsend (q); - - (void) pthread_barrier_wait (b3); - - /* Child verifies SIGRTMIN has not been sent. */ - - (void) pthread_barrier_wait (b3); - - result |= mqsend (q); - - (void) pthread_barrier_wait (b3); - - /* Thread verifies SIGRTMIN has been caught. */ - /* Thread calls mq_notify (q, { SIGEV_NONE }) to verify notification is now - available for registration. */ - /* Thread calls mq_notify (q, NULL). */ - - (void) pthread_barrier_wait (b3); - - /* Child calls mq_notify (q, { SIGEV_SIGNAL }). */ - - (void) pthread_barrier_wait (b3); - - /* Thread calls mq_notify (q, NULL). */ - - (void) pthread_barrier_wait (b3); - - result |= mqsend (q); - result |= mqrecv (q); - - (void) pthread_barrier_wait (b3); - - /* Child verifies SIGRTMIN has not been sent. */ - /* Child calls mq_notify (q, { SIGEV_SIGNAL }). */ - - (void) pthread_barrier_wait (b3); - - /* Thread opens a new O_RDONLY mqd_t (q4). */ - /* Thread calls mq_notify (q4, NULL). */ - /* Thread calls mq_close (q4). */ - - (void) pthread_barrier_wait (b3); - - result |= mqsend (q); - result |= mqrecv (q); - - (void) pthread_barrier_wait (b3); - - /* Child verifies SIGRTMIN has not been sent. */ - /* Child calls mq_notify (q, { SIGEV_SIGNAL }). */ - - (void) pthread_barrier_wait (b3); - - /* Thread opens a new O_WRONLY mqd_t (q5). */ - /* Thread calls mq_notify (q5, NULL). */ - /* Thread calls mq_close (q5). */ - - (void) pthread_barrier_wait (b3); - - result |= mqsend (q); - result |= mqrecv (q); - - (void) pthread_barrier_wait (b3); - - /* Child verifies SIGRTMIN has not been sent. */ - - int status; - if (TEMP_FAILURE_RETRY (waitpid (pid, &status, 0)) != pid) - { - puts ("waitpid failed"); - kill (pid, SIGKILL); - result = 1; - } - else if (!WIFEXITED (status) || WEXITSTATUS (status)) - { - printf ("child failed with status %d\n", status); - result = 1; - } - - if (mq_unlink (name) != 0) - { - printf ("mq_unlink failed: %m\n"); - result = 1; - } - - if (mq_close (q) != 0) - { - printf ("mq_close failed: %m\n"); - result = 1; - } - - if (mq_notify (q, NULL) == 0) - { - puts ("mq_notify on closed mqd_t unexpectedly succeeded"); - result = 1; - } - else if (errno != EBADF) - { - printf ("mq_notify on closed mqd_t did not fail with EBADF: %m\n"); - result = 1; - } - - memset (&ev, 0x55, sizeof (ev)); - ev.sigev_notify = SIGEV_NONE; - if (mq_notify (q, &ev) == 0) - { - puts ("mq_notify on closed mqd_t unexpectedly succeeded"); - result = 1; - } - else if (errno != EBADF) - { - printf ("mq_notify on closed mqd_t did not fail with EBADF: %m\n"); - result = 1; - } - - return result; -} -#else -# define TEST_FUNCTION 0 -#endif - -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mqueue6.c b/test/nptl/tst-mqueue6.c deleted file mode 100644 index 8d84c1929..000000000 --- a/test/nptl/tst-mqueue6.c +++ /dev/null @@ -1,304 +0,0 @@ -/* Test mq_notify. - Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "tst-mqueue.h" - -#if _POSIX_THREADS -# include - -# define mqsend(q) (mqsend) (q, __LINE__) -static int -(mqsend) (mqd_t q, int line) -{ - char c; - if (mq_send (q, &c, 1, 1) != 0) - { - printf ("mq_send on line %d failed with: %m\n", line); - return 1; - } - return 0; -} - -# define mqrecv(q) (mqrecv) (q, __LINE__) -static int -(mqrecv) (mqd_t q, int line) -{ - char c; - ssize_t rets = TEMP_FAILURE_RETRY (mq_receive (q, &c, 1, NULL)); - if (rets != 1) - { - if (rets == -1) - printf ("mq_receive on line %d failed with: %m\n", line); - else - printf ("mq_receive on line %d returned %zd != 1\n", - line, rets); - return 1; - } - return 0; -} - -volatile int fct_cnt, fct_err; -size_t fct_guardsize; - -static void -fct (union sigval s) -{ - mqd_t q = *(mqd_t *) s.sival_ptr; - - pthread_attr_t nattr; - int ret = pthread_getattr_np (pthread_self (), &nattr); - if (ret) - { - errno = ret; - printf ("pthread_getattr_np failed: %m\n"); - fct_err = 1; - } - else - { - ret = pthread_attr_getguardsize (&nattr, &fct_guardsize); - if (ret) - { - errno = ret; - printf ("pthread_attr_getguardsize failed: %m\n"); - fct_err = 1; - } - if (pthread_attr_destroy (&nattr) != 0) - { - puts ("pthread_attr_destroy failed"); - fct_err = 1; - } - } - - ++fct_cnt; - fct_err |= mqsend (q); -} - -# define TEST_FUNCTION do_test () -static int -do_test (void) -{ - int result = 0; - - char name[sizeof "/tst-mqueue6-" + sizeof (pid_t) * 3]; - snprintf (name, sizeof (name), "/tst-mqueue6-%u", getpid ()); - - struct mq_attr attr = { .mq_maxmsg = 1, .mq_msgsize = 1 }; - mqd_t q = mq_open (name, O_CREAT | O_EXCL | O_RDWR, 0600, &attr); - - if (q == (mqd_t) -1) - { - printf ("mq_open failed with: %m\n"); - return result; - } - else - add_temp_mq (name); - - pthread_attr_t nattr; - if (pthread_attr_init (&nattr) - || pthread_attr_setguardsize (&nattr, 0)) - { - puts ("pthread_attr_t setup failed"); - result = 1; - } - - fct_guardsize = 1; - - struct sigevent ev; - memset (&ev, 0xaa, sizeof (ev)); - ev.sigev_notify = SIGEV_THREAD; - ev.sigev_notify_function = fct; - ev.sigev_notify_attributes = &nattr; - ev.sigev_value.sival_ptr = &q; - if (mq_notify (q, &ev) != 0) - { - printf ("mq_notify (q, { SIGEV_THREAD }) failed with: %m\n"); - result = 1; - } - - size_t ps = sysconf (_SC_PAGESIZE); - if (pthread_attr_setguardsize (&nattr, 32 * ps)) - { - puts ("pthread_attr_t setup failed"); - result = 1; - } - - if (mq_notify (q, &ev) == 0) - { - puts ("second mq_notify (q, { SIGEV_NONE }) unexpectedly succeeded"); - result = 1; - } - else if (errno != EBUSY) - { - printf ("second mq_notify (q, { SIGEV_NONE }) failed with: %m\n"); - result = 1; - } - - if (fct_cnt != 0) - { - printf ("fct called too early (%d on %d)\n", fct_cnt, __LINE__); - result = 1; - } - - result |= mqsend (q); - - result |= mqrecv (q); - result |= mqrecv (q); - - if (fct_cnt != 1) - { - printf ("fct not called (%d on %d)\n", fct_cnt, __LINE__); - result = 1; - } - else if (fct_guardsize != 0) - { - printf ("fct_guardsize %zd != 0\n", fct_guardsize); - result = 1; - } - - if (mq_notify (q, &ev) != 0) - { - printf ("third mq_notify (q, { SIGEV_NONE }) failed with: %m\n"); - result = 1; - } - - if (mq_notify (q, NULL) != 0) - { - printf ("mq_notify (q, NULL) failed with: %m\n"); - result = 1; - } - - memset (&ev, 0x11, sizeof (ev)); - ev.sigev_notify = SIGEV_THREAD; - ev.sigev_notify_function = fct; - ev.sigev_notify_attributes = &nattr; - ev.sigev_value.sival_ptr = &q; - if (mq_notify (q, &ev) != 0) - { - printf ("mq_notify (q, { SIGEV_THREAD }) failed with: %m\n"); - result = 1; - } - - if (pthread_attr_setguardsize (&nattr, 0)) - { - puts ("pthread_attr_t setup failed"); - result = 1; - } - - if (mq_notify (q, &ev) == 0) - { - puts ("second mq_notify (q, { SIGEV_NONE }) unexpectedly succeeded"); - result = 1; - } - else if (errno != EBUSY) - { - printf ("second mq_notify (q, { SIGEV_NONE }) failed with: %m\n"); - result = 1; - } - - if (fct_cnt != 1) - { - printf ("fct called too early (%d on %d)\n", fct_cnt, __LINE__); - result = 1; - } - - result |= mqsend (q); - - result |= mqrecv (q); - result |= mqrecv (q); - - if (fct_cnt != 2) - { - printf ("fct not called (%d on %d)\n", fct_cnt, __LINE__); - result = 1; - } - else if (fct_guardsize != 32 * ps) - { - printf ("fct_guardsize %zd != %zd\n", fct_guardsize, 32 * ps); - result = 1; - } - - if (mq_notify (q, &ev) != 0) - { - printf ("third mq_notify (q, { SIGEV_NONE }) failed with: %m\n"); - result = 1; - } - - if (mq_notify (q, NULL) != 0) - { - printf ("mq_notify (q, NULL) failed with: %m\n"); - result = 1; - } - - if (pthread_attr_destroy (&nattr) != 0) - { - puts ("pthread_attr_destroy failed"); - result = 1; - } - - if (mq_unlink (name) != 0) - { - printf ("mq_unlink failed: %m\n"); - result = 1; - } - - if (mq_close (q) != 0) - { - printf ("mq_close failed: %m\n"); - result = 1; - } - - memset (&ev, 0x55, sizeof (ev)); - ev.sigev_notify = SIGEV_THREAD; - ev.sigev_notify_function = fct; - ev.sigev_notify_attributes = NULL; - ev.sigev_value.sival_int = 0; - if (mq_notify (q, &ev) == 0) - { - puts ("mq_notify on closed mqd_t unexpectedly succeeded"); - result = 1; - } - else if (errno != EBADF) - { - printf ("mq_notify on closed mqd_t did not fail with EBADF: %m\n"); - result = 1; - } - - if (fct_err) - result = 1; - return result; -} -#else -# define TEST_FUNCTION 0 -#endif - -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mqueue7.c b/test/nptl/tst-mqueue7.c deleted file mode 100644 index 1892f951a..000000000 --- a/test/nptl/tst-mqueue7.c +++ /dev/null @@ -1,108 +0,0 @@ -/* Test all open message queues descriptors are closed during exec*. - Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define OPT_AFTEREXEC 20000 - -static mqd_t after_exec = (mqd_t) -1; - -#define CMDLINE_OPTIONS \ - "a:" - -#define CMDLINE_PROCESS \ - case 'a': \ - after_exec = (mqd_t) strtoul (optarg, NULL, 0); \ - break; - -static int -do_after_exec (void) -{ - int result = 0; - - struct mq_attr attr; - if (mq_getattr (after_exec, &attr) == 0) - { - puts ("mq_getattr after exec unexpectedly succeeded"); - result = 1; - } - else if (errno != EBADF) - { - printf ("mq_getattr after exec did not fail with EBADF: %m\n"); - result = 1; - } - - return result; -} - -static int -do_test (int argc, char **argv) -{ - if (after_exec != (mqd_t) -1) - return do_after_exec (); - - char name[sizeof "/tst-mqueue7-" + sizeof (pid_t) * 3]; - snprintf (name, sizeof (name), "/tst-mqueue7-%u", getpid ()); - - struct mq_attr attr = { .mq_maxmsg = 10, .mq_msgsize = 1 }; - mqd_t q = mq_open (name, O_CREAT | O_EXCL | O_WRONLY, 0600, &attr); - - if (q == (mqd_t) -1) - { - printf ("mq_open failed with: %m\n"); - return 0; - } - else if (mq_unlink (name) != 0) - { - printf ("mq_unlink failed with: %m\n"); - return 1; - } - - if (mq_getattr (q, &attr) != 0) - { - printf ("mq_getattr failed: %m\n"); - return 1; - } - - char after_exec_arg[sizeof "-a=0x" + sizeof (long) * 3]; - snprintf (after_exec_arg, sizeof (after_exec_arg), - "-a=0x%lx", (long) q); - - const char *newargv[argc + 2]; - for (int i = 1; i < argc; ++i) - newargv[i - 1] = argv[i]; - newargv[argc - 1] = "-d"; - newargv[argc] = after_exec_arg; - newargv[argc + 1] = NULL; - - /* Verify that exec* has the effect of mq_close (q). */ - execv (newargv[0], (char * const *) newargv); - printf ("execv failed: %m\n"); - return 1; -} - -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mqueue8.c b/test/nptl/tst-mqueue8.c deleted file mode 100644 index b80e4e5c3..000000000 --- a/test/nptl/tst-mqueue8.c +++ /dev/null @@ -1,265 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#if _POSIX_THREADS -# include - -static pthread_barrier_t b; - -/* Cleanup handling test. */ -static int cl_called; - -static void -cl (void *arg) -{ - ++cl_called; -} - -#define TF_MQ_RECEIVE 0L -#define TF_MQ_TIMEDRECEIVE 1L -#define TF_MQ_SEND 2L -#define TF_MQ_TIMEDSEND 3L - -static const char *names[] - = { "mq_receive", "mq_timedreceive", "mq_send", "mq_timedsend" }; - -static mqd_t q; -static struct timespec never; - -static void * -tf (void *arg) -{ - int r = pthread_barrier_wait (&b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("tf: barrier_wait failed"); - exit (1); - } - - pthread_cleanup_push (cl, NULL); - - char c = ' '; - - switch ((long) arg) - { - case TF_MQ_SEND: - TEMP_FAILURE_RETRY (mq_send (q, &c, 1, 1)); - break; - case TF_MQ_TIMEDSEND: - TEMP_FAILURE_RETRY (mq_timedsend (q, &c, 1, 1, &never)); - break; - case TF_MQ_RECEIVE: - TEMP_FAILURE_RETRY (mq_receive (q, &c, 1, NULL)); - break; - case TF_MQ_TIMEDRECEIVE: - TEMP_FAILURE_RETRY (mq_timedreceive (q, &c, 1, NULL, &never)); - break; - } - - pthread_cleanup_pop (0); - - printf ("tf: %s returned\n", names[(long) arg]); - - exit (1); -} - -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ - char name[sizeof "/tst-mqueue8-" + sizeof (pid_t) * 3]; - snprintf (name, sizeof (name), "/tst-mqueue8-%u", getpid ()); - - struct mq_attr attr = { .mq_maxmsg = 1, .mq_msgsize = 1 }; - q = mq_open (name, O_CREAT | O_EXCL | O_RDWR, 0600, &attr); - - if (q == (mqd_t) -1) - { - printf ("mq_open failed with: %m\n"); - return 0; - } - - if (mq_unlink (name) != 0) - { - printf ("mq_unlink failed with: %m\n"); - return 1; - } - - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - if (clock_gettime (CLOCK_REALTIME, &never) == 0) - never.tv_sec += 100; - else - { - never.tv_sec = time (NULL) + 100; - never.tv_nsec = 0; - } - - int result = 0; - for (long l = TF_MQ_RECEIVE; l <= TF_MQ_TIMEDSEND; ++l) - { - cl_called = 0; - - pthread_t th; - if (pthread_create (&th, NULL, tf, (void *) l) != 0) - { - printf ("1st %s create failed\n", names[l]); - result = 1; - continue; - } - - int r = pthread_barrier_wait (&b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - result = 1; - continue; - } - - struct timespec ts = { .tv_sec = 0, .tv_nsec = 100000000 }; - while (nanosleep (&ts, &ts) != 0) - continue; - - printf ("going to cancel %s in-time\n", names[l]); - if (pthread_cancel (th) != 0) - { - printf ("1st cancel of %s failed\n", names[l]); - result = 1; - continue; - } - - void *status; - if (pthread_join (th, &status) != 0) - { - printf ("1st join of %s failed\n", names[l]); - result = 1; - continue; - } - if (status != PTHREAD_CANCELED) - { - printf ("1st %s thread not canceled\n", names[l]); - result = 1; - continue; - } - - if (cl_called == 0) - { - printf ("%s cleanup handler not called\n", names[l]); - result = 1; - continue; - } - if (cl_called > 1) - { - printf ("%s cleanup handler called more than once\n", names[l]); - result = 1; - continue; - } - - printf ("in-time %s cancellation succeeded\n", names[l]); - - cl_called = 0; - - if (pthread_create (&th, NULL, tf, (void *) l) != 0) - { - printf ("2nd %s create failed\n", names[l]); - result = 1; - continue; - } - - printf ("going to cancel %s early\n", names[l]); - if (pthread_cancel (th) != 0) - { - printf ("2nd cancel of %s failed\n", names[l]); - result = 1; - continue; - } - - r = pthread_barrier_wait (&b); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - result = 1; - continue; - } - - if (pthread_join (th, &status) != 0) - { - printf ("2nd join of %s failed\n", names[l]); - result = 1; - continue; - } - if (status != PTHREAD_CANCELED) - { - printf ("2nd %s thread not canceled\n", names[l]); - result = 1; - continue; - } - - if (cl_called == 0) - { - printf ("%s cleanup handler not called\n", names[l]); - result = 1; - continue; - } - if (cl_called > 1) - { - printf ("%s cleanup handler called more than once\n", names[l]); - result = 1; - continue; - } - - printf ("early %s cancellation succeeded\n", names[l]); - - if (l == TF_MQ_TIMEDRECEIVE) - { - /* mq_receive and mq_timedreceive are tested on empty mq. - For mq_send and mq_timedsend we need to make it full. - If this fails, there is no point in doing further testing. */ - char c = ' '; - if (mq_send (q, &c, 1, 1) != 0) - { - printf ("mq_send failed: %m\n"); - result = 1; - break; - } - } - } - - if (mq_close (q) != 0) - { - printf ("mq_close failed: %m\n"); - result = 1; - } - - return result; -} -#else -# define TEST_FUNCTION 0 -#endif - -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mqueue9.c b/test/nptl/tst-mqueue9.c deleted file mode 100644 index 7098b847e..000000000 --- a/test/nptl/tst-mqueue9.c +++ /dev/null @@ -1,91 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include "tst-mqueue.h" - -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ - if (geteuid () != 0) - { - puts ("this test requires root"); - return 0; - } - - char name[sizeof "/tst-mqueue9-" + sizeof (pid_t) * 3]; - snprintf (name, sizeof (name), "/tst-mqueue9-%u", getpid ()); - - struct mq_attr attr = { .mq_maxmsg = 1, .mq_msgsize = 1 }; - mqd_t q = mq_open (name, O_CREAT | O_EXCL | O_RDWR, 0600, &attr); - - if (q == (mqd_t) -1) - { - printf ("mq_open failed with: %m\n"); - return 0; - } - else - add_temp_mq (name); - - if (seteuid (1) != 0) - { - printf ("failed to seteuid (1): %m\n"); - mq_unlink (name); - return 0; - } - - int result = 0; - if (mq_unlink (name) == 0) - { - puts ("mq_unlink unexpectedly succeeded"); - result = 1; - } - else if (errno != EACCES) - { - printf ("mq_unlink did not fail with EACCES: %m\n"); - result = 1;; - } - - if (seteuid (0) != 0) - { - printf ("failed to seteuid (0): %m\n"); - result = 1; - } - - if (mq_unlink (name) != 0) - { - printf ("mq_unlink failed with: %m\n"); - result = 1; - } - - if (mq_close (q) != 0) - { - printf ("mq_close failed with: %m\n"); - result = 1; - } - - return result; -} - -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mutex1.c b/test/nptl/tst-mutex1.c deleted file mode 100644 index 0f3a98c76..000000000 --- a/test/nptl/tst-mutex1.c +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - - -static int -do_test (void) -{ - pthread_mutex_t m; - - if (pthread_mutex_init (&m, NULL) != 0) - { - puts ("mutex_init failed"); - return 1; - } - - if (pthread_mutex_lock (&m) != 0) - { - puts ("mutex_lock failed"); - return 1; - } - - if (pthread_mutex_unlock (&m) != 0) - { - puts ("mutex_unlock failed"); - return 1; - } - - if (pthread_mutex_destroy (&m) != 0) - { - puts ("mutex_destroy failed"); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mutex2.c b/test/nptl/tst-mutex2.c deleted file mode 100644 index 707afe9fc..000000000 --- a/test/nptl/tst-mutex2.c +++ /dev/null @@ -1,222 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static pthread_mutex_t m; -static pthread_barrier_t b; - - -static void * -tf (void *arg) -{ - int e = pthread_mutex_unlock (&m); - if (e == 0) - { - puts ("child: 1st mutex_unlock succeeded"); - exit (1); - } - else if (e != EPERM) - { - puts ("child: 1st mutex_unlock error != EPERM"); - exit (1); - } - - e = pthread_mutex_trylock (&m); - if (e == 0) - { - puts ("child: 1st trylock suceeded"); - exit (1); - } - if (e != EBUSY) - { - puts ("child: 1st trylock didn't return EBUSY"); - exit (1); - } - - e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("child: 1st barrier_wait failed"); - exit (1); - } - - e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("child: 2nd barrier_wait failed"); - exit (1); - } - - e = pthread_mutex_unlock (&m); - if (e == 0) - { - puts ("child: 2nd mutex_unlock succeeded"); - exit (1); - } - else if (e != EPERM) - { - puts ("child: 2nd mutex_unlock error != EPERM"); - exit (1); - } - - if (pthread_mutex_trylock (&m) != 0) - { - puts ("child: 2nd trylock failed"); - exit (1); - } - - if (pthread_mutex_unlock (&m) != 0) - { - puts ("child: 3rd mutex_unlock failed"); - exit (1); - } - - return NULL; -} - - -static int -do_test (void) -{ - pthread_mutexattr_t a; - int e; - - if (pthread_mutexattr_init (&a) != 0) - { - puts ("mutexattr_init failed"); - exit (1); - } - - if (pthread_mutexattr_settype (&a, PTHREAD_MUTEX_ERRORCHECK) != 0) - { - puts ("mutexattr_settype failed"); - exit (1); - } - - if (pthread_mutex_init (&m, &a) != 0) - { - puts ("mutex_init failed"); - exit (1); - } - - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - if ((e = pthread_mutex_unlock (&m)) == 0) - { - puts ("1st mutex_unlock succeeded"); - exit (1); - } - else if (e != EPERM) - { - puts ("1st mutex_unlock error != EPERM"); - exit (1); - } - - if (pthread_mutex_lock (&m) != 0) - { - puts ("mutex_lock failed"); - exit (1); - } - - if ((e = pthread_mutex_lock (&m)) == 0) - { - puts ("2nd mutex_lock succeeded"); - exit (1); - } - else if (e != EDEADLK) - { - puts ("2nd mutex_lock error != EDEADLK"); - exit (1); - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - exit (1); - } - - e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("1st barrier_wait failed"); - exit (1); - } - - if (pthread_mutex_unlock (&m) != 0) - { - puts ("2nd mutex_unlock failed"); - exit (1); - } - - if ((e = pthread_mutex_unlock (&m)) == 0) - { - puts ("3rd mutex_unlock succeeded"); - exit (1); - } - else if (e != EPERM) - { - puts ("3rd mutex_unlock error != EPERM"); - exit (1); - } - - e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("2nd barrier_wait failed"); - exit (1); - } - - if (pthread_join (th, NULL) != 0) - { - puts ("join failed"); - exit (1); - } - - if (pthread_mutex_destroy (&m) != 0) - { - puts ("mutex_destroy failed"); - exit (1); - } - - if (pthread_barrier_destroy (&b) != 0) - { - puts ("barrier_destroy failed"); - exit (1); - } - - if (pthread_mutexattr_destroy (&a) != 0) - { - puts ("mutexattr_destroy failed"); - exit (1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mutex3.c b/test/nptl/tst-mutex3.c deleted file mode 100644 index 5e582858b..000000000 --- a/test/nptl/tst-mutex3.c +++ /dev/null @@ -1,224 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static pthread_mutex_t m; -static pthread_barrier_t b; - - -static void * -tf (void *arg) -{ - int e = pthread_mutex_unlock (&m); - if (e == 0) - { - puts ("1st mutex_unlock in child succeeded"); - exit (1); - } - if (e != EPERM) - { - puts ("1st mutex_unlock in child didn't return EPERM"); - exit (1); - } - - e = pthread_mutex_trylock (&m); - if (e == 0) - { - puts ("mutex_trylock in second thread succeeded"); - exit (1); - } - if (e != EBUSY) - { - puts ("mutex_trylock returned wrong value"); - exit (1); - } - - e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - exit (1); - } - - e = pthread_mutex_unlock (&m); - if (e == 0) - { - puts ("2nd mutex_unlock in child succeeded"); - exit (1); - } - if (e != EPERM) - { - puts ("2nd mutex_unlock in child didn't return EPERM"); - exit (1); - } - - if (pthread_mutex_trylock (&m) != 0) - { - puts ("2nd mutex_trylock in second thread failed"); - exit (1); - } - - if (pthread_mutex_unlock (&m) != 0) - { - puts ("3rd mutex_unlock in second thread failed"); - exit (1); - } - - return NULL; -} - - -static int -do_test (void) -{ - pthread_mutexattr_t a; - - if (pthread_mutexattr_init (&a) != 0) - { - puts ("mutexattr_init failed"); - return 1; - } - - if (pthread_mutexattr_settype (&a, PTHREAD_MUTEX_RECURSIVE) != 0) - { - puts ("mutexattr_settype failed"); - return 1; - } - - if (pthread_mutex_init (&m, &a) != 0) - { - puts ("mutex_init failed"); - return 1; - } - - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - if (pthread_mutex_lock (&m) != 0) - { - puts ("mutex_lock failed"); - return 1; - } - - if (pthread_mutex_lock (&m) != 0) - { - puts ("2nd mutex_lock failed"); - return 1; - } - - if (pthread_mutex_trylock (&m) != 0) - { - puts ("1st trylock failed"); - return 1; - } - - if (pthread_mutex_unlock (&m) != 0) - { - puts ("mutex_unlock failed"); - return 1; - } - - if (pthread_mutex_unlock (&m) != 0) - { - puts ("2nd mutex_unlock failed"); - return 1; - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - return 1; - } - - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - return 1; - } - - if (pthread_mutex_unlock (&m) != 0) - { - puts ("3rd mutex_unlock failed"); - return 1; - } - - e = pthread_mutex_unlock (&m); - if (e == 0) - { - puts ("4th mutex_unlock succeeded"); - return 1; - } - if (e != EPERM) - { - puts ("4th mutex_unlock didn't return EPERM"); - return 1; - } - - e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - return 1; - } - - if (pthread_join (th, NULL) != 0) - { - puts ("join failed"); - return 1; - } - - if (pthread_barrier_destroy (&b) != 0) - { - puts ("barrier_destroy failed"); - return 1; - } - - if (pthread_mutex_destroy (&m) != 0) - { - puts ("mutex_destroy failed"); - return 1; - } - - if (pthread_mutexattr_destroy (&a) != 0) - { - puts ("mutexattr_destroy failed"); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mutex4.c b/test/nptl/tst-mutex4.c deleted file mode 100644 index f66abc052..000000000 --- a/test/nptl/tst-mutex4.c +++ /dev/null @@ -1,190 +0,0 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -static int -do_test (void) -{ - size_t ps = sysconf (_SC_PAGESIZE); - char tmpfname[] = "/tmp/tst-mutex4.XXXXXX"; - char data[ps]; - void *mem; - int fd; - pthread_mutex_t *m; - pthread_mutexattr_t a; - pid_t pid; - char *p; - int err; - int s; - - fd = mkstemp (tmpfname); - if (fd == -1) - { - printf ("cannot open temporary file: %m\n"); - return 1; - } - - /* Make sure it is always removed. */ - unlink (tmpfname); - - /* Create one page of data. */ - memset (data, '\0', ps); - - /* Write the data to the file. */ - if (write (fd, data, ps) != (ssize_t) ps) - { - puts ("short write"); - return 1; - } - - mem = mmap (NULL, ps, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (mem == MAP_FAILED) - { - printf ("mmap failed: %m\n"); - return 1; - } - - m = (pthread_mutex_t *) (((uintptr_t) mem + __alignof (pthread_mutex_t)) - & ~(__alignof (pthread_mutex_t) - 1)); - p = (char *) (m + 1); - - if (pthread_mutexattr_init (&a) != 0) - { - puts ("mutexattr_init failed"); - return 1; - } - - if (pthread_mutexattr_getpshared (&a, &s) != 0) - { - puts ("1st mutexattr_getpshared failed"); - return 1; - } - - if (s != PTHREAD_PROCESS_PRIVATE) - { - puts ("default pshared value wrong"); - return 1; - } - - if (pthread_mutexattr_setpshared (&a, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("mutexattr_setpshared failed"); - return 1; - } - - if (pthread_mutexattr_getpshared (&a, &s) != 0) - { - puts ("2nd mutexattr_getpshared failed"); - return 1; - } - - if (s != PTHREAD_PROCESS_SHARED) - { - puts ("pshared value after setpshared call wrong"); - return 1; - } - - if (pthread_mutex_init (m, &a) != 0) - { - puts ("mutex_init failed"); - return 1; - } - - if (pthread_mutex_lock (m) != 0) - { - puts ("mutex_lock failed"); - return 1; - } - - if (pthread_mutexattr_destroy (&a) != 0) - { - puts ("mutexattr_destroy failed"); - return 1; - } - - err = pthread_mutex_trylock (m); - if (err == 0) - { - puts ("mutex_trylock succeeded"); - return 1; - } - else if (err != EBUSY) - { - puts ("mutex_trylock didn't return EBUSY"); - return 1; - } - - *p = 0; - - puts ("going to fork now"); - pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - return 1; - } - else if (pid == 0) - { - /* Play some lock ping-pong. It's our turn to unlock first. */ - if ((*p)++ != 0) - { - puts ("child: *p != 0"); - return 1; - } - - if (pthread_mutex_unlock (m) != 0) - { - puts ("child: 1st mutex_unlock failed"); - return 1; - } - - puts ("child done"); - } - else - { - if (pthread_mutex_lock (m) != 0) - { - puts ("parent: 2nd mutex_lock failed"); - return 1; - } - - if (*p != 1) - { - puts ("*p != 1"); - return 1; - } - - puts ("parent done"); - } - - return 0; -} - -#define TIMEOUT 4 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mutex5.c b/test/nptl/tst-mutex5.c deleted file mode 100644 index 85dddef7e..000000000 --- a/test/nptl/tst-mutex5.c +++ /dev/null @@ -1,185 +0,0 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -#ifndef TYPE -# define TYPE PTHREAD_MUTEX_NORMAL -#endif - - -static int -do_test (void) -{ - pthread_mutex_t m; - struct timespec ts; - struct timeval tv; - struct timeval tv2; - int err; - pthread_mutexattr_t a; - - if (pthread_mutexattr_init (&a) != 0) - { - puts ("mutexattr_init failed"); - return 1; - } - - if (pthread_mutexattr_settype (&a, TYPE) != 0) - { - puts ("mutexattr_settype failed"); - return 1; - } - - if (pthread_mutex_init (&m, &a) != 0) - { - puts ("mutex_init failed"); - return 1; - } - - if (pthread_mutexattr_destroy (&a) != 0) - { - puts ("mutexattr_destroy failed"); - return 1; - } - - if (pthread_mutex_lock (&m) != 0) - { - puts ("mutex_lock failed"); - return 1; - } - - if (pthread_mutex_trylock (&m) == 0) - { - puts ("mutex_trylock succeeded"); - return 1; - } - - gettimeofday (&tv, NULL); - TIMEVAL_TO_TIMESPEC (&tv, &ts); - - ts.tv_sec += 2; /* Wait 2 seconds. */ - - err = pthread_mutex_timedlock (&m, &ts); - if (err == 0) - { - puts ("timedlock succeeded"); - return 1; - } - else if (err != ETIMEDOUT) - { - printf ("timedlock error != ETIMEDOUT: %d\n", err); - return 1; - } - else - { - int clk_tck = sysconf (_SC_CLK_TCK); - - gettimeofday (&tv2, NULL); - - tv2.tv_sec -= tv.tv_sec; - tv2.tv_usec -= tv.tv_usec; - if (tv2.tv_usec < 0) - { - tv2.tv_usec += 1000000; - tv2.tv_sec -= 1; - } - - /* Be a bit tolerant, add one CLK_TCK. */ - tv2.tv_usec += 1000000 / clk_tck; - if (tv2.tv_usec >= 1000000) - { - tv2.tv_usec -= 1000000; - ++tv2.tv_sec; - } - - if (tv2.tv_sec < 2) - { - printf ("premature timeout: %ld.%06ld difference\n", - tv2.tv_sec, tv2.tv_usec); - return 1; - } - } - - (void) gettimeofday (&tv, NULL); - TIMEVAL_TO_TIMESPEC (&tv, &ts); - - ts.tv_sec += 2; /* Wait 2 seconds. */ - /* The following makes the ts value invalid. */ - ts.tv_nsec += 1000000000; - - err = pthread_mutex_timedlock (&m, &ts); - if (err == 0) - { - puts ("2nd timedlock succeeded"); - return 1; - } - else if (err != EINVAL) - { - printf ("2nd timedlock error != EINVAL: %d\n", err); - return 1; - } - - if (pthread_mutex_unlock (&m) != 0) - { - puts ("mutex_unlock failed"); - return 1; - } - - (void) gettimeofday (&tv, NULL); - TIMEVAL_TO_TIMESPEC (&tv, &ts); - - ts.tv_sec += 2; /* Wait 2 seconds. */ - if (pthread_mutex_timedlock (&m, &ts) != 0) - { - puts ("3rd timedlock failed"); - } - - (void) gettimeofday (&tv2, NULL); - - /* Check that timedlock didn't delay. We use a limit of 0.1 secs. */ - timersub (&tv2, &tv, &tv2); - if (tv2.tv_sec > 0 || tv2.tv_usec > 100000) - { - puts ("3rd timedlock didn't return right away"); - return 1; - } - - if (pthread_mutex_unlock (&m) != 0) - { - puts ("final mutex_unlock failed"); - return 1; - } - - if (pthread_mutex_destroy (&m) != 0) - { - puts ("mutex_destroy failed"); - return 1; - } - - return 0; -} - -#define TIMEOUT 4 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mutex5a.c b/test/nptl/tst-mutex5a.c deleted file mode 100644 index f91eec0d7..000000000 --- a/test/nptl/tst-mutex5a.c +++ /dev/null @@ -1,2 +0,0 @@ -#define TYPE PTHREAD_MUTEX_ADAPTIVE_NP -#include "tst-mutex5.c" diff --git a/test/nptl/tst-mutex6.c b/test/nptl/tst-mutex6.c deleted file mode 100644 index 0dcfc7725..000000000 --- a/test/nptl/tst-mutex6.c +++ /dev/null @@ -1,54 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static int -do_test (void) -{ - pthread_mutex_t m; - - if (pthread_mutex_init (&m, NULL) != 0) - { - puts ("mutex_init failed"); - return 1; - } - - if (pthread_mutex_lock (&m) != 0) - { - puts ("1st mutex_lock failed"); - return 1; - } - - /* Set an alarm for 1 second. The wrapper will expect this. */ - alarm (1); - - /* This call should never return. */ - pthread_mutex_lock (&m); - - puts ("2nd mutex_lock returned"); - return 1; -} - -#define EXPECTED_SIGNAL SIGALRM -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mutex7.c b/test/nptl/tst-mutex7.c deleted file mode 100644 index 29a1423fd..000000000 --- a/test/nptl/tst-mutex7.c +++ /dev/null @@ -1,120 +0,0 @@ -/* Copyright (C) 2002, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - - -#ifndef INIT -# define INIT PTHREAD_MUTEX_INITIALIZER -#endif - - -static pthread_mutex_t lock = INIT; - - -#define ROUNDS 1000 -#define N 100 - - -static void * -tf (void *arg) -{ - int nr = (long int) arg; - int cnt; - struct timespec ts = { .tv_sec = 0, .tv_nsec = 11000 }; - - for (cnt = 0; cnt < ROUNDS; ++cnt) - { - if (pthread_mutex_lock (&lock) != 0) - { - printf ("thread %d: failed to get the lock\n", nr); - return (void *) 1l; - } - - if (pthread_mutex_unlock (&lock) != 0) - { - printf ("thread %d: failed to release the lock\n", nr); - return (void *) 1l; - } - - nanosleep (&ts, NULL); - } - - return NULL; -} - - -static int -do_test (void) -{ - pthread_attr_t at; - pthread_t th[N]; - int cnt; - - if (pthread_attr_init (&at) != 0) - { - puts ("attr_init failed"); - return 1; - } - - if (pthread_attr_setstacksize (&at, 1 * 1024 * 1024) != 0) - { - puts ("attr_setstacksize failed"); - return 1; - } - - if (pthread_mutex_lock (&lock) != 0) - { - puts ("locking in parent failed"); - return 1; - } - - for (cnt = 0; cnt < N; ++cnt) - if (pthread_create (&th[cnt], &at, tf, (void *) (long int) cnt) != 0) - { - printf ("creating thread %d failed\n", cnt); - return 1; - } - - if (pthread_attr_destroy (&at) != 0) - { - puts ("attr_destroy failed"); - return 1; - } - - if (pthread_mutex_unlock (&lock) != 0) - { - puts ("unlocking in parent failed"); - return 1; - } - - for (cnt = 0; cnt < N; ++cnt) - if (pthread_join (th[cnt], NULL) != 0) - { - printf ("joining thread %d failed\n", cnt); - return 1; - } - - return 0; -} - -#define TIMEOUT 60 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mutex7a.c b/test/nptl/tst-mutex7a.c deleted file mode 100644 index f08799ae7..000000000 --- a/test/nptl/tst-mutex7a.c +++ /dev/null @@ -1,2 +0,0 @@ -#define INIT PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP -#include "tst-mutex7.c" diff --git a/test/nptl/tst-mutex8.c b/test/nptl/tst-mutex8.c deleted file mode 100644 index a949be340..000000000 --- a/test/nptl/tst-mutex8.c +++ /dev/null @@ -1,366 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -/* This test checks behavior not required by POSIX. */ -#include -#include -#include -#include -#include - - -static pthread_mutex_t *m; -static pthread_barrier_t b; -static pthread_cond_t c; -static bool done; - - -static void -cl (void *arg) -{ - if (pthread_mutex_unlock (m) != 0) - { - puts ("cl: mutex_unlocked failed"); - exit (1); - } -} - - -static void * -tf (void *arg) -{ - if (pthread_mutex_lock (m) != 0) - { - puts ("tf: mutex_lock failed"); - return (void *) 1l; - } - - int e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - return (void *) 1l; - } - - if (arg == NULL) - do - if (pthread_cond_wait (&c, m) != 0) - { - puts ("tf: cond_wait failed"); - return (void *) 1l; - } - while (! done); - else - do - { - pthread_cleanup_push (cl, NULL); - - if (pthread_cond_wait (&c, m) != 0) - { - puts ("tf: cond_wait failed"); - return (void *) 1l; - } - - pthread_cleanup_pop (0); - } - while (! done); - - if (pthread_mutex_unlock (m) != 0) - { - puts ("tf: mutex_unlock failed"); - return (void *) 1l; - } - - return NULL; -} - - -static int -check_type (const char *mas, pthread_mutexattr_t *ma) -{ - if (pthread_mutex_init (m, ma) != 0) - { - printf ("1st mutex_init failed for %s\n", mas); - return 1; - } - - if (pthread_mutex_destroy (m) != 0) - { - printf ("immediate mutex_destroy failed for %s\n", mas); - return 1; - } - - if (pthread_mutex_init (m, ma) != 0) - { - printf ("2nd mutex_init failed for %s\n", mas); - return 1; - } - - if (pthread_mutex_lock (m) != 0) - { - printf ("1st mutex_lock failed for %s\n", mas); - return 1; - } - - int e = pthread_mutex_destroy (m); - if (e == 0) - { - printf ("mutex_destroy of self-locked mutex succeeded for %s\n", mas); - return 1; - } - if (e != EBUSY) - { - printf ("mutex_destroy of self-locked mutex did not return EBUSY %s\n", - mas); - return 1; - } - - if (pthread_mutex_unlock (m) != 0) - { - printf ("1st mutex_unlock failed for %s\n", mas); - return 1; - } - - if (pthread_mutex_trylock (m) != 0) - { - printf ("mutex_trylock failed for %s\n", mas); - return 1; - } - - e = pthread_mutex_destroy (m); - if (e == 0) - { - printf ("mutex_destroy of self-trylocked mutex succeeded for %s\n", mas); - return 1; - } - if (e != EBUSY) - { - printf ("\ -mutex_destroy of self-trylocked mutex did not return EBUSY %s\n", - mas); - return 1; - } - - if (pthread_mutex_unlock (m) != 0) - { - printf ("2nd mutex_unlock failed for %s\n", mas); - return 1; - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("1st create failed"); - return 1; - } - done = false; - - e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("1st barrier_wait failed"); - return 1; - } - - if (pthread_mutex_lock (m) != 0) - { - printf ("2nd mutex_lock failed for %s\n", mas); - return 1; - } - - if (pthread_mutex_unlock (m) != 0) - { - printf ("3rd mutex_unlock failed for %s\n", mas); - return 1; - } - - e = pthread_mutex_destroy (m); - if (e == 0) - { - printf ("mutex_destroy of condvar-used mutex succeeded for %s\n", mas); - return 1; - } - if (e != EBUSY) - { - printf ("\ -mutex_destroy of condvar-used mutex did not return EBUSY for %s\n", mas); - return 1; - } - - done = true; - if (pthread_cond_signal (&c) != 0) - { - puts ("cond_signal failed"); - return 1; - } - - void *r; - if (pthread_join (th, &r) != 0) - { - puts ("join failed"); - return 1; - } - if (r != NULL) - { - puts ("thread didn't return NULL"); - return 1; - } - - if (pthread_mutex_destroy (m) != 0) - { - printf ("mutex_destroy after condvar-use failed for %s\n", mas); - return 1; - } - - if (pthread_mutex_init (m, ma) != 0) - { - printf ("3rd mutex_init failed for %s\n", mas); - return 1; - } - - if (pthread_create (&th, NULL, tf, (void *) 1) != 0) - { - puts ("2nd create failed"); - return 1; - } - done = false; - - e = pthread_barrier_wait (&b); - if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("2nd barrier_wait failed"); - return 1; - } - - if (pthread_mutex_lock (m) != 0) - { - printf ("3rd mutex_lock failed for %s\n", mas); - return 1; - } - - if (pthread_mutex_unlock (m) != 0) - { - printf ("4th mutex_unlock failed for %s\n", mas); - return 1; - } - - e = pthread_mutex_destroy (m); - if (e == 0) - { - printf ("2nd mutex_destroy of condvar-used mutex succeeded for %s\n", - mas); - return 1; - } - if (e != EBUSY) - { - printf ("\ -2nd mutex_destroy of condvar-used mutex did not return EBUSY for %s\n", - mas); - return 1; - } - - if (pthread_cancel (th) != 0) - { - puts ("cond_cancel failed"); - return 1; - } - - if (pthread_join (th, &r) != 0) - { - puts ("join failed"); - return 1; - } - if (r != PTHREAD_CANCELED) - { - puts ("thread not canceled"); - return 1; - } - - if (pthread_mutex_destroy (m) != 0) - { - printf ("mutex_destroy after condvar-canceled failed for %s\n", mas); - return 1; - } - - return 0; -} - - -static int -do_test (void) -{ - pthread_mutex_t mm; - m = &mm; - - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - if (pthread_cond_init (&c, NULL) != 0) - { - puts ("cond_init failed"); - return 1; - } - - puts ("check normal mutex"); - int res = check_type ("normal", NULL); - - pthread_mutexattr_t ma; - if (pthread_mutexattr_init (&ma) != 0) - { - puts ("1st mutexattr_init failed"); - return 1; - } - if (pthread_mutexattr_settype (&ma, PTHREAD_MUTEX_RECURSIVE) != 0) - { - puts ("1st mutexattr_settype failed"); - return 1; - } - puts ("check recursive mutex"); - res |= check_type ("recursive", &ma); - if (pthread_mutexattr_destroy (&ma) != 0) - { - puts ("1st mutexattr_destroy failed"); - return 1; - } - - if (pthread_mutexattr_init (&ma) != 0) - { - puts ("2nd mutexattr_init failed"); - return 1; - } - if (pthread_mutexattr_settype (&ma, PTHREAD_MUTEX_ERRORCHECK) != 0) - { - puts ("2nd mutexattr_settype failed"); - return 1; - } - puts ("check error-checking mutex"); - res |= check_type ("error-checking", &ma); - if (pthread_mutexattr_destroy (&ma) != 0) - { - puts ("2nd mutexattr_destroy failed"); - return 1; - } - - return res; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-mutex9.c b/test/nptl/tst-mutex9.c deleted file mode 100644 index a4bb3aaaf..000000000 --- a/test/nptl/tst-mutex9.c +++ /dev/null @@ -1,190 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int gettimeofday(struct timeval *tv, struct timezone *tz); - - -static int -do_test (void) -{ - size_t ps = sysconf (_SC_PAGESIZE); - char tmpfname[] = "/tmp/tst-mutex9.XXXXXX"; - char data[ps]; - void *mem; - int fd; - pthread_mutex_t *m; - pthread_mutexattr_t a; - pid_t pid; - char *p; - - fd = mkstemp (tmpfname); - if (fd == -1) - { - printf ("cannot open temporary file: %m\n"); - return 1; - } - - /* Make sure it is always removed. */ - unlink (tmpfname); - - /* Create one page of data. */ - memset (data, '\0', ps); - - /* Write the data to the file. */ - if (write (fd, data, ps) != (ssize_t) ps) - { - puts ("short write"); - return 1; - } - - mem = mmap (NULL, ps, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (mem == MAP_FAILED) - { - printf ("mmap failed: %m\n"); - return 1; - } - - m = (pthread_mutex_t *) (((uintptr_t) mem + __alignof (pthread_mutex_t)) - & ~(__alignof (pthread_mutex_t) - 1)); - p = (char *) (m + 1); - - if (pthread_mutexattr_init (&a) != 0) - { - puts ("mutexattr_init failed"); - return 1; - } - - if (pthread_mutexattr_setpshared (&a, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("mutexattr_setpshared failed"); - return 1; - } - - if (pthread_mutexattr_settype (&a, PTHREAD_MUTEX_RECURSIVE) != 0) - { - puts ("mutexattr_settype failed"); - return 1; - } - - if (pthread_mutex_init (m, &a) != 0) - { - puts ("mutex_init failed"); - return 1; - } - - if (pthread_mutex_lock (m) != 0) - { - puts ("mutex_lock failed"); - return 1; - } - - if (pthread_mutexattr_destroy (&a) != 0) - { - puts ("mutexattr_destroy failed"); - return 1; - } - - puts ("going to fork now"); - pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - return 1; - } - else if (pid == 0) - { - if (pthread_mutex_trylock (m) == 0) - { - puts ("child: mutex_trylock succeeded"); - exit (1); - } - - if (pthread_mutex_unlock (m) == 0) - { - puts ("child: mutex_unlock succeeded"); - exit (1); - } - - struct timeval tv; - gettimeofday (&tv, NULL); - struct timespec ts; - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ts.tv_nsec += 500000000; - if (ts.tv_nsec >= 1000000000) - { - ++ts.tv_sec; - ts.tv_nsec -= 1000000000; - } - - int e = pthread_mutex_timedlock (m, &ts); - if (e == 0) - { - puts ("child: mutex_timedlock succeeded"); - exit (1); - } - if (e != ETIMEDOUT) - { - puts ("child: mutex_timedlock didn't time out"); - exit (1); - } - - alarm (1); - - pthread_mutex_lock (m); - - puts ("child: mutex_lock returned"); - - exit (0); - } - - sleep (2); - - int status; - if (TEMP_FAILURE_RETRY (waitpid (pid, &status, 0)) != pid) - { - puts ("waitpid failed"); - return 1; - } - if (! WIFSIGNALED (status)) - { - puts ("child not killed by signal"); - return 1; - } - if (WTERMSIG (status) != SIGALRM) - { - puts ("child not killed by SIGALRM"); - return 1; - } - - return 0; -} - -#define TIMEOUT 3 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-oddstacklimit.c b/test/nptl/tst-oddstacklimit.c deleted file mode 100644 index 9fbef1889..000000000 --- a/test/nptl/tst-oddstacklimit.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-basic1.c" diff --git a/test/nptl/tst-once1.c b/test/nptl/tst-once1.c deleted file mode 100644 index 308a45586..000000000 --- a/test/nptl/tst-once1.c +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - - -static pthread_once_t once = PTHREAD_ONCE_INIT; - -static int global; - -static void -once_handler (void) -{ - ++global; -} - - -static int -do_test (void) -{ - pthread_once (&once, once_handler); - pthread_once (&once, once_handler); - - if (global != 1) - { - printf ("global = %d, expected 1\n", global); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-once2.c b/test/nptl/tst-once2.c deleted file mode 100644 index 6e2f3db1f..000000000 --- a/test/nptl/tst-once2.c +++ /dev/null @@ -1,103 +0,0 @@ -/* Copyright (C) 2002, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -#define N 100 - -static pthread_once_t once = PTHREAD_ONCE_INIT; - -static int global; - -static void -once_handler (void) -{ - struct timespec ts; - - ++global; - - ts.tv_sec = 2; - ts.tv_nsec = 0; - nanosleep (&ts, NULL); -} - - -static void * -tf (void *arg) -{ - pthread_once (&once, once_handler); - - if (global != 1) - { - printf ("thread %ld: global == %d\n", (long int) arg, global); - exit (1); - } - - return NULL; -} - - -static int -do_test (void) -{ - pthread_attr_t at; - pthread_t th[N]; - int cnt; - - if (pthread_attr_init (&at) != 0) - { - puts ("attr_init failed"); - return 1; - } - - if (pthread_attr_setstacksize (&at, 1 * 1024 * 1024) != 0) - { - puts ("attr_setstacksize failed"); - return 1; - } - - for (cnt = 0; cnt < N; ++cnt) - if (pthread_create (&th[cnt], &at, tf, (void *) (long int) cnt) != 0) - { - printf ("creation of thread %d failed\n", cnt); - return 1; - } - - if (pthread_attr_destroy (&at) != 0) - { - puts ("attr_destroy failed"); - return 1; - } - - for (cnt = 0; cnt < N; ++cnt) - if (pthread_join (th[cnt], NULL) != 0) - { - printf ("join of thread %d failed\n", cnt); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#define TIMEOUT 4 -#include "../test-skeleton.c" diff --git a/test/nptl/tst-once3.c b/test/nptl/tst-once3.c deleted file mode 100644 index c869ca890..000000000 --- a/test/nptl/tst-once3.c +++ /dev/null @@ -1,161 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -#define N 100 - -static pthread_once_t once = PTHREAD_ONCE_INIT; - -static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER; - -static pthread_barrier_t bar; - -static int global; -static int cl_called; - -static void -once_handler1 (void) -{ - if (pthread_mutex_lock (&mut) != 0) - { - puts ("once_handler1: mutex_lock failed"); - exit (1); - } - puts ("once_handler1: locked"); - - int r = pthread_barrier_wait (&bar); - if (r != 0 && r!= PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("once_handler1: barrier_wait failed"); - exit (1); - } - - pthread_cond_wait (&cond, &mut); - - /* We should never get here. */ - exit (42); -} - -static void -once_handler2 (void) -{ - global = 1; -} - - -static void -cl (void *arg) -{ - cl_called = 1; -} - - -static void * -tf (void *arg) -{ - pthread_cleanup_push (cl, NULL) - - pthread_once (&once, once_handler1); - - pthread_cleanup_pop (0); - - /* We should never get here. */ - puts ("pthread_once in tf returned"); - exit (1); -} - - -static int -do_test (void) -{ - pthread_t th; - - if (pthread_barrier_init (&bar, NULL, 2) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("first create failed"); - return 1; - } - - int r = pthread_barrier_wait (&bar); - if (r != 0 && r!= PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - return 1; - } - - if (pthread_mutex_lock (&mut) != 0) - { - puts ("mutex_lock failed"); - return 1; - } - /* We unlock the mutex so that we catch the case where the pthread_cond_wait - call incorrectly resumes and tries to get the mutex. */ - if (pthread_mutex_unlock (&mut) != 0) - { - puts ("mutex_unlock failed"); - return 1; - } - - /* Cancel the thread. */ - puts ("going to cancel"); - if (pthread_cancel (th) != 0) - { - puts ("cancel failed"); - return 1; - } - - void *result; - pthread_join (th, &result); - if (result != PTHREAD_CANCELED) - { - puts ("join didn't return PTHREAD_CANCELED"); - return 1; - } - - if (cl_called != 1) - { - puts ("cleanup handler not called"); - return 1; - } - - pthread_once (&once, once_handler2); - - if (global != 1) - { - puts ("global still 0"); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#define TIMEOUT 4 -#include "../test-skeleton.c" diff --git a/test/nptl/tst-once4.c b/test/nptl/tst-once4.c deleted file mode 100644 index a80b83099..000000000 --- a/test/nptl/tst-once4.c +++ /dev/null @@ -1,201 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static pthread_once_t once = PTHREAD_ONCE_INIT; - -static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER; - -static pthread_barrier_t bar; - -static int global; -static int cl_called; - -static void -once_handler1 (void) -{ - if (pthread_mutex_lock (&mut) != 0) - { - puts ("once_handler1: mutex_lock failed"); - exit (1); - } - - int r = pthread_barrier_wait (&bar); - if (r != 0 && r!= PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("once_handler1: barrier_wait failed"); - exit (1); - } - - pthread_cond_wait (&cond, &mut); - - /* We should never get here. */ -} - - -static void -once_handler2 (void) -{ - global = 1; -} - - -static void -cl (void *arg) -{ - ++cl_called; -} - - -static void * -tf1 (void *arg) -{ - pthread_cleanup_push (cl, NULL); - - pthread_once (&once, once_handler1); - - pthread_cleanup_pop (0); - - /* We should never get here. */ - puts ("pthread_once in tf returned"); - exit (1); -} - - -static void * -tf2 (void *arg) -{ - pthread_cleanup_push (cl, NULL); - - int r = pthread_barrier_wait (&bar); - if (r != 0 && r!= PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("once_handler2: barrier_wait failed"); - exit (1); - } - - pthread_cleanup_pop (0); - - pthread_once (&once, once_handler2); - - return NULL; -} - - -static int -do_test (void) -{ - pthread_t th[2]; - - if (pthread_barrier_init (&bar, NULL, 2) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - if (pthread_create (&th[0], NULL, tf1, NULL) != 0) - { - puts ("first create failed"); - return 1; - } - - int r = pthread_barrier_wait (&bar); - if (r != 0 && r!= PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("first barrier_wait failed"); - return 1; - } - - if (pthread_mutex_lock (&mut) != 0) - { - puts ("mutex_lock failed"); - return 1; - } - /* We unlock the mutex so that we catch the case where the pthread_cond_wait - call incorrectly resumes and tries to get the mutex. */ - if (pthread_mutex_unlock (&mut) != 0) - { - puts ("mutex_unlock failed"); - return 1; - } - - if (pthread_create (&th[1], NULL, tf2, NULL) != 0) - { - puts ("second create failed"); - return 1; - } - - r = pthread_barrier_wait (&bar); - if (r != 0 && r!= PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("second barrier_wait failed"); - return 1; - } - - /* Give the second thread a chance to reach the pthread_once call. */ - sleep (2); - - /* Cancel the thread. */ - if (pthread_cancel (th[0]) != 0) - { - puts ("cancel failed"); - return 1; - } - - void *result; - pthread_join (th[0], &result); - if (result != PTHREAD_CANCELED) - { - puts ("first join didn't return PTHREAD_CANCELED"); - return 1; - } - - puts ("joined first thread"); - - pthread_join (th[1], &result); - if (result != NULL) - { - puts ("second join didn't return PTHREAD_CANCELED"); - return 1; - } - - if (global != 1) - { - puts ("global still 0"); - return 1; - } - - if (cl_called != 1) - { - printf ("cl_called = %d\n", cl_called); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#define TIMEOUT 4 -#include "../test-skeleton.c" diff --git a/test/nptl/tst-oncex3.c b/test/nptl/tst-oncex3.c deleted file mode 100644 index 08225b88d..000000000 --- a/test/nptl/tst-oncex3.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-once3.c" diff --git a/test/nptl/tst-oncex4.c b/test/nptl/tst-oncex4.c deleted file mode 100644 index 9b4d98f3f..000000000 --- a/test/nptl/tst-oncex4.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-once4.c" diff --git a/test/nptl/tst-popen1.c b/test/nptl/tst-popen1.c deleted file mode 100644 index 0c779fc99..000000000 --- a/test/nptl/tst-popen1.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - -static void * -dummy (void *x) -{ - return NULL; -} - -static char buf[sizeof "something\n"]; - -static int -do_test (void) -{ - FILE *f; - pthread_t p; - int err; - - f = popen ("echo something", "r"); - if (f == NULL) - error (EXIT_FAILURE, errno, "popen failed"); - if (fgets (buf, sizeof (buf), f) == NULL) - error (EXIT_FAILURE, 0, "fgets failed"); - if (strcmp (buf, "something\n")) - error (EXIT_FAILURE, 0, "read wrong data"); - if (pclose (f)) - error (EXIT_FAILURE, errno, "pclose returned non-zero"); - if ((err = pthread_create (&p, NULL, dummy, NULL))) - error (EXIT_FAILURE, err, "pthread_create failed"); - if ((err = pthread_join (p, NULL))) - error (EXIT_FAILURE, err, "pthread_join failed"); - exit (0); -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-raise1.c b/test/nptl/tst-raise1.c deleted file mode 100644 index 45c62e19e..000000000 --- a/test/nptl/tst-raise1.c +++ /dev/null @@ -1,61 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - -volatile int count; - -void -sh (int sig) -{ - ++count; -} - -int -main (void) -{ - struct sigaction sa; - sa.sa_handler = sh; - sigemptyset (&sa.sa_mask); - sa.sa_flags = 0; - if (sigaction (SIGUSR1, &sa, NULL) < 0) - { - printf ("sigaction failed: %m\n"); - exit (1); - } - if (raise (SIGUSR1) < 0) - { - printf ("first raise failed: %m\n"); - exit (1); - } - if (raise (SIGUSR1) < 0) - { - printf ("second raise failed: %m\n"); - exit (1); - } - if (count != 2) - { - printf ("signal handler not called 2 times\n"); - exit (1); - } - exit (0); -} diff --git a/test/nptl/tst-rwlock1.c b/test/nptl/tst-rwlock1.c deleted file mode 100644 index a5e8d6326..000000000 --- a/test/nptl/tst-rwlock1.c +++ /dev/null @@ -1,116 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - - -static int -do_test (void) -{ - pthread_rwlock_t r; - - if (pthread_rwlock_init (&r, NULL) != 0) - { - puts ("rwlock_init failed"); - return 1; - } - puts ("rwlock_init succeeded"); - - if (pthread_rwlock_rdlock (&r) != 0) - { - puts ("1st rwlock_rdlock failed"); - return 1; - } - puts ("1st rwlock_rdlock succeeded"); - - if (pthread_rwlock_rdlock (&r) != 0) - { - puts ("2nd rwlock_rdlock failed"); - return 1; - } - puts ("2nd rwlock_rdlock succeeded"); - - if (pthread_rwlock_unlock (&r) != 0) - { - puts ("1st rwlock_unlock failed"); - return 1; - } - puts ("1st rwlock_unlock succeeded"); - - if (pthread_rwlock_unlock (&r) != 0) - { - puts ("2nd rwlock_unlock failed"); - return 1; - } - puts ("2nd rwlock_unlock succeeded"); - - if (pthread_rwlock_wrlock (&r) != 0) - { - puts ("1st rwlock_wrlock failed"); - return 1; - } - puts ("1st rwlock_wrlock succeeded"); - - if (pthread_rwlock_unlock (&r) != 0) - { - puts ("3rd rwlock_unlock failed"); - return 1; - } - puts ("3rd rwlock_unlock succeeded"); - - if (pthread_rwlock_wrlock (&r) != 0) - { - puts ("2nd rwlock_wrlock failed"); - return 1; - } - puts ("2nd rwlock_wrlock succeeded"); - - if (pthread_rwlock_unlock (&r) != 0) - { - puts ("4th rwlock_unlock failed"); - return 1; - } - puts ("4th rwlock_unlock succeeded"); - - if (pthread_rwlock_rdlock (&r) != 0) - { - puts ("3rd rwlock_rdlock failed"); - return 1; - } - puts ("3rd rwlock_rdlock succeeded"); - - if (pthread_rwlock_unlock (&r) != 0) - { - puts ("5th rwlock_unlock failed"); - return 1; - } - puts ("5th rwlock_unlock succeeded"); - - if (pthread_rwlock_destroy (&r) != 0) - { - puts ("rwlock_destroy failed"); - return 1; - } - puts ("rwlock_destroy succeeded"); - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-rwlock10.c b/test/nptl/tst-rwlock10.c deleted file mode 100644 index e22b1e07f..000000000 --- a/test/nptl/tst-rwlock10.c +++ /dev/null @@ -1,20 +0,0 @@ -/* Test program for timedout read/write lock functions. - Copyright (C) 2003 Free Software Foundation, Inc. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; see the file COPYING.LIB. If - not, see . */ - -#define INIT PTHREAD_RWLOCK_INITIALIZER -#include "tst-rwlock8.c" diff --git a/test/nptl/tst-rwlock11.c b/test/nptl/tst-rwlock11.c deleted file mode 100644 index 93a1b0cce..000000000 --- a/test/nptl/tst-rwlock11.c +++ /dev/null @@ -1,20 +0,0 @@ -/* Test program for timedout read/write lock functions. - Copyright (C) 2003 Free Software Foundation, Inc. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; see the file COPYING.LIB. If - not, see . */ - -#define INIT PTHREAD_RWLOCK_INITIALIZER -#include "tst-rwlock9.c" diff --git a/test/nptl/tst-rwlock12.c b/test/nptl/tst-rwlock12.c deleted file mode 100644 index c0e5cee92..000000000 --- a/test/nptl/tst-rwlock12.c +++ /dev/null @@ -1,207 +0,0 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -static int -do_test (void) -{ - size_t ps = sysconf (_SC_PAGESIZE); - char tmpfname[] = "/tmp/tst-rwlock12.XXXXXX"; - char data[ps]; - void *mem; - int fd; - pthread_mutex_t *m; - pthread_mutexattr_t ma; - pthread_rwlock_t *r; - pthread_rwlockattr_t ra; - pid_t pid; - int status = 0; - - fd = mkstemp (tmpfname); - if (fd == -1) - { - printf ("cannot open temporary file: %m\n"); - return 1; - } - - /* Make sure it is always removed. */ - unlink (tmpfname); - - /* Create one page of data. */ - memset (data, '\0', ps); - - /* Write the data to the file. */ - if (write (fd, data, ps) != (ssize_t) ps) - { - puts ("short write"); - return 1; - } - - mem = mmap (NULL, ps, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (mem == MAP_FAILED) - { - printf ("mmap failed: %m\n"); - return 1; - } - - r = (pthread_rwlock_t *) (((uintptr_t) mem + __alignof (pthread_rwlock_t)) - & ~(__alignof (pthread_rwlock_t) - 1)); - /* The following assumes alignment for a mutex is at least as high - as that for a rwlock. Which is true in our case. */ - m = (pthread_mutex_t *) (r + 1); - - if (pthread_rwlockattr_init (&ra) != 0) - { - puts ("rwlockattr_init failed"); - return 1; - } - - if (pthread_rwlockattr_setpshared (&ra, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("rwlockattr_setpshared failed"); - return 1; - } - - if (pthread_rwlock_init (r, &ra) != 0) - { - puts ("rwlock_init failed"); - return 1; - } - - if (pthread_mutexattr_init (&ma) != 0) - { - puts ("rwlockattr_init failed"); - return 1; - } - - if (pthread_mutexattr_setpshared (&ma, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("mutexattr_setpshared failed"); - return 1; - } - - if (pthread_mutex_init (m, &ma) != 0) - { - puts ("mutex_init failed"); - return 1; - } - - /* Lock the mutex. */ - if (pthread_mutex_lock (m) != 0) - { - puts ("mutex_lock failed"); - return 1; - } - - puts ("going to fork now"); - pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - return 1; - } - else if (pid == 0) - { - /* Lock the mutex. */ - if (pthread_mutex_lock (m) != 0) - { - puts ("child: mutex_lock failed"); - return 1; - } - - /* Try to get the rwlock. */ - if (pthread_rwlock_trywrlock (r) == 0) - { - puts ("rwlock_trywrlock succeeded"); - return 1; - } - - /* Try again. */ - struct timespec ts = { .tv_sec = 0, .tv_nsec = 500000000 }; - int e = pthread_rwlock_timedwrlock (r, &ts); - if (e == 0) - { - puts ("rwlock_timedwrlock succeeded"); - return 1; - } - if (e != ETIMEDOUT) - { - puts ("rwlock_timedwrlock didn't return ETIMEDOUT"); - status = 1; - } - - if (pthread_rwlock_tryrdlock (r) == 0) - { - puts ("rwlock_tryrdlock succeeded"); - return 1; - } - - e = pthread_rwlock_timedrdlock (r, &ts); - if (e == 0) - { - puts ("rwlock_timedrdlock succeeded"); - return 1; - } - if (e != ETIMEDOUT) - { - puts ("rwlock_timedrdlock didn't return ETIMEDOUT"); - status = 1; - } - } - else - { - /* Lock the rwlock for writing. */ - if (pthread_rwlock_wrlock (r) != 0) - { - puts ("rwlock_wrlock failed"); - kill (pid, SIGTERM); - return 1; - } - - /* Allow the child to run. */ - if (pthread_mutex_unlock (m) != 0) - { - puts ("mutex_unlock failed"); - kill (pid, SIGTERM); - return 1; - } - - /* Just wait for the child. */ - if (TEMP_FAILURE_RETRY (waitpid (pid, &status, 0)) != pid) - { - puts ("waitpid failed"); - kill (pid, SIGTERM); - return 1; - } - } - - return status; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-rwlock13.c b/test/nptl/tst-rwlock13.c deleted file mode 100644 index 8fb2a7d2b..000000000 --- a/test/nptl/tst-rwlock13.c +++ /dev/null @@ -1,70 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - - -static int -do_test (void) -{ - pthread_rwlock_t r; - int ret; - - memset (&r, 0xaa, sizeof (r)); - if ((ret = pthread_rwlock_init (&r, NULL)) != 0) - { - printf ("rwlock_init failed: %d\n", ret); - return 1; - } - - if ((ret = pthread_rwlock_rdlock (&r)) != 0) - { - printf ("rwlock_rdlock failed: %d\n", ret); - return 1; - } - - if ((ret = pthread_rwlock_unlock (&r)) != 0) - { - printf ("rwlock_unlock failed: %d\n", ret); - return 1; - } - - if ((ret = pthread_rwlock_wrlock (&r)) != 0) - { - printf ("rwlock_wrlock failed: %d\n", ret); - return 1; - } - - if ((ret = pthread_rwlock_unlock (&r)) != 0) - { - printf ("second rwlock_unlock failed: %d\n", ret); - return 1; - } - - if ((ret = pthread_rwlock_destroy (&r)) != 0) - { - printf ("second rwlock_destroy failed: %d\n", ret); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-rwlock14.c b/test/nptl/tst-rwlock14.c deleted file mode 100644 index 953d80282..000000000 --- a/test/nptl/tst-rwlock14.c +++ /dev/null @@ -1,168 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static pthread_barrier_t b; -static pthread_rwlock_t r = PTHREAD_RWLOCK_INITIALIZER; - - -static void * -tf (void *arg) -{ - /* Lock the read-write lock. */ - if (pthread_rwlock_wrlock (&r) != 0) - { - puts ("tf: cannot lock rwlock"); - exit (EXIT_FAILURE); - } - - pthread_t mt = *(pthread_t *) arg; - - pthread_barrier_wait (&b); - - /* This call will never return. */ - pthread_join (mt, NULL); - - return NULL; -} - - -static int -do_test (void) -{ - int result = 0; - struct timespec ts; - - if (clock_gettime (CLOCK_REALTIME, &ts) != 0) - { - puts ("clock_gettime failed"); - return 1; - } - - if (pthread_barrier_init (&b, NULL, 2) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - pthread_t me = pthread_self (); - pthread_t th; - if (pthread_create (&th, NULL, tf, &me) != 0) - { - puts ("create failed"); - return 1; - } - - /* Wait until the rwlock is locked. */ - pthread_barrier_wait (&b); - - ts.tv_nsec = -1; - - int e = pthread_rwlock_timedrdlock (&r, &ts); - if (e == 0) - { - puts ("first rwlock_timedrdlock did not fail"); - result = 1; - } - else if (e != EINVAL) - { - puts ("first rwlock_timedrdlock did not return EINVAL"); - result = 1; - } - - e = pthread_rwlock_timedwrlock (&r, &ts); - if (e == 0) - { - puts ("first rwlock_timedwrlock did not fail"); - result = 1; - } - else if (e != EINVAL) - { - puts ("first rwlock_timedwrlock did not return EINVAL"); - result = 1; - } - - ts.tv_nsec = 1000000000; - - e = pthread_rwlock_timedrdlock (&r, &ts); - if (e == 0) - { - puts ("second rwlock_timedrdlock did not fail"); - result = 1; - } - else if (e != EINVAL) - { - puts ("second rwlock_timedrdlock did not return EINVAL"); - result = 1; - } - - e = pthread_rwlock_timedrdlock (&r, &ts); - if (e == 0) - { - puts ("second rwlock_timedrdlock did not fail"); - result = 1; - } - else if (e != EINVAL) - { - puts ("second rwlock_timedrdlock did not return EINVAL"); - result = 1; - } - - ts.tv_nsec = 0x100001000LL; - if (ts.tv_nsec != 0x100001000LL) - ts.tv_nsec = 2000000000; - - e = pthread_rwlock_timedrdlock (&r, &ts); - if (e == 0) - { - puts ("third rwlock_timedrdlock did not fail"); - result = 1; - } - else if (e != EINVAL) - { - puts ("third rwlock_timedrdlock did not return EINVAL"); - result = 1; - } - - e = pthread_rwlock_timedrdlock (&r, &ts); - if (e == 0) - { - puts ("third rwlock_timedrdlock did not fail"); - result = 1; - } - else if (e != EINVAL) - { - puts ("third rwlock_timedrdlock did not return EINVAL"); - result = 1; - } - - if (result == 0) - puts ("no bugs"); - - return result; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-rwlock2.c b/test/nptl/tst-rwlock2.c deleted file mode 100644 index a74ce864c..000000000 --- a/test/nptl/tst-rwlock2.c +++ /dev/null @@ -1,142 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - - -static int -do_test (void) -{ - pthread_rwlock_t r; - int e; - - if (pthread_rwlock_init (&r, NULL) != 0) - { - puts ("rwlock_init failed"); - return 1; - } - puts ("rwlock_init succeeded"); - - if (pthread_rwlock_wrlock (&r) != 0) - { - puts ("1st rwlock_wrlock failed"); - return 1; - } - puts ("1st rwlock_wrlock succeeded"); - - e = pthread_rwlock_tryrdlock (&r); - if (e == 0) - { - puts ("rwlock_tryrdlock on rwlock with writer succeeded"); - return 1; - } - if (e != EBUSY) - { - puts ("rwlock_tryrdlock on rwlock with writer return value != EBUSY"); - return 1; - } - puts ("rwlock_tryrdlock on rwlock with writer failed with EBUSY"); - - e = pthread_rwlock_trywrlock (&r); - if (e == 0) - { - puts ("rwlock_trywrlock on rwlock with writer succeeded"); - return 1; - } - if (e != EBUSY) - { - puts ("rwlock_trywrlock on rwlock with writer return value != EBUSY"); - return 1; - } - puts ("rwlock_trywrlock on rwlock with writer failed with EBUSY"); - - if (pthread_rwlock_unlock (&r) != 0) - { - puts ("1st rwlock_unlock failed"); - return 1; - } - puts ("1st rwlock_unlock succeeded"); - - if (pthread_rwlock_tryrdlock (&r) != 0) - { - puts ("rwlock_tryrdlock on unlocked rwlock failed"); - return 1; - } - puts ("rwlock_tryrdlock on unlocked rwlock succeeded"); - - e = pthread_rwlock_trywrlock (&r); - if (e == 0) - { - puts ("rwlock_trywrlock on rwlock with reader succeeded"); - return 1; - } - if (e != EBUSY) - { - puts ("rwlock_trywrlock on rwlock with reader return value != EBUSY"); - return 1; - } - puts ("rwlock_trywrlock on rwlock with reader failed with EBUSY"); - - if (pthread_rwlock_unlock (&r) != 0) - { - puts ("2nd rwlock_unlock failed"); - return 1; - } - puts ("2nd rwlock_unlock succeeded"); - - if (pthread_rwlock_trywrlock (&r) != 0) - { - puts ("rwlock_trywrlock on unlocked rwlock failed"); - return 1; - } - puts ("rwlock_trywrlock on unlocked rwlock succeeded"); - - e = pthread_rwlock_tryrdlock (&r); - if (e == 0) - { - puts ("rwlock_tryrdlock on rwlock with writer succeeded"); - return 1; - } - if (e != EBUSY) - { - puts ("rwlock_tryrdlock on rwlock with writer return value != EBUSY"); - return 1; - } - puts ("rwlock_tryrdlock on rwlock with writer failed with EBUSY"); - - if (pthread_rwlock_unlock (&r) != 0) - { - puts ("3rd rwlock_unlock failed"); - return 1; - } - puts ("3rd rwlock_unlock succeeded"); - - if (pthread_rwlock_destroy (&r) != 0) - { - puts ("rwlock_destroy failed"); - return 1; - } - puts ("rwlock_destroy succeeded"); - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-rwlock2a.c b/test/nptl/tst-rwlock2a.c deleted file mode 100644 index 615de5c01..000000000 --- a/test/nptl/tst-rwlock2a.c +++ /dev/null @@ -1,2 +0,0 @@ -#define TYPE PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP -#include "tst-rwlock2.c" diff --git a/test/nptl/tst-rwlock3.c b/test/nptl/tst-rwlock3.c deleted file mode 100644 index 1cb533896..000000000 --- a/test/nptl/tst-rwlock3.c +++ /dev/null @@ -1,92 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -/* This test case checks more than standard compliance. An - implementation may provide this service but it is not required to - do so. */ - -#include -#include -#include - - -static int -do_test (void) -{ - pthread_rwlock_t r; - int e; - - if (pthread_rwlock_init (&r, NULL) != 0) - { - puts ("rwlock_init failed"); - return 1; - } - puts ("rwlock_init succeeded"); - - if (pthread_rwlock_trywrlock (&r) != 0) - { - puts ("rwlock_trywrlock on unlocked rwlock failed"); - return 1; - } - puts ("rwlock_trywrlock on unlocked rwlock succeeded"); - - e = pthread_rwlock_rdlock (&r); - if (e == 0) - { - puts ("rwlock_rdlock on rwlock with writer succeeded"); - return 1; - } - if (e != EDEADLK) - { - puts ("rwlock_rdlock on rwlock with writer failed != EDEADLK"); - return 1; - } - puts ("rwlock_rdlock on rwlock with writer failed with EDEADLK"); - - e = pthread_rwlock_wrlock (&r); - if (e == 0) - { - puts ("rwlock_wrlock on rwlock with writer succeeded"); - return 1; - } - if (e != EDEADLK) - { - puts ("rwlock_wrlock on rwlock with writer failed != EDEADLK"); - return 1; - } - puts ("rwlock_wrlock on rwlock with writer failed with EDEADLK"); - - if (pthread_rwlock_unlock (&r) != 0) - { - puts ("rwlock_unlock failed"); - return 1; - } - puts ("rwlock_unlock succeeded"); - - if (pthread_rwlock_destroy (&r) != 0) - { - puts ("rwlock_destroy failed"); - return 1; - } - puts ("rwlock_destroy succeeded"); - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-rwlock4.c b/test/nptl/tst-rwlock4.c deleted file mode 100644 index 0bbf083e7..000000000 --- a/test/nptl/tst-rwlock4.c +++ /dev/null @@ -1,189 +0,0 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -static int -do_test (void) -{ - size_t ps = sysconf (_SC_PAGESIZE); - char tmpfname[] = "/tmp/tst-rwlock4.XXXXXX"; - char data[ps]; - void *mem; - int fd; - pthread_rwlock_t *r; - pthread_rwlockattr_t a; - pid_t pid; - char *p; - int err; - int s; - - fd = mkstemp (tmpfname); - if (fd == -1) - { - printf ("cannot open temporary file: %m\n"); - return 1; - } - - /* Make sure it is always removed. */ - unlink (tmpfname); - - /* Create one page of data. */ - memset (data, '\0', ps); - - /* Write the data to the file. */ - if (write (fd, data, ps) != (ssize_t) ps) - { - puts ("short write"); - return 1; - } - - mem = mmap (NULL, ps, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (mem == MAP_FAILED) - { - printf ("mmap failed: %m\n"); - return 1; - } - - r = (pthread_rwlock_t *) (((uintptr_t) mem + __alignof (pthread_rwlock_t)) - & ~(__alignof (pthread_rwlock_t) - 1)); - p = (char *) (r + 1); - - if (pthread_rwlockattr_init (&a) != 0) - { - puts ("rwlockattr_init failed"); - return 1; - } - - if (pthread_rwlockattr_getpshared (&a, &s) != 0) - { - puts ("1st rwlockattr_getpshared failed"); - return 1; - } - - if (s != PTHREAD_PROCESS_PRIVATE) - { - puts ("default pshared value wrong"); - return 1; - } - - if (pthread_rwlockattr_setpshared (&a, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("rwlockattr_setpshared failed"); - return 1; - } - - if (pthread_rwlockattr_getpshared (&a, &s) != 0) - { - puts ("2nd rwlockattr_getpshared failed"); - return 1; - } - - if (s != PTHREAD_PROCESS_SHARED) - { - puts ("pshared value after setpshared call wrong"); - return 1; - } - - if (pthread_rwlock_init (r, &a) != 0) - { - puts ("rwlock_init failed"); - return 1; - } - - if (pthread_rwlock_rdlock (r) != 0) - { - puts ("rwlock_rdlock failed"); - return 1; - } - - if (pthread_rwlockattr_destroy (&a) != 0) - { - puts ("rwlockattr_destroy failed"); - return 1; - } - - err = pthread_rwlock_trywrlock (r); - if (err == 0) - { - puts ("rwlock_trywrlock succeeded"); - return 1; - } - else if (err != EBUSY) - { - puts ("rwlock_trywrlock didn't return EBUSY"); - return 1; - } - - *p = 0; - - puts ("going to fork now"); - pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - return 1; - } - else if (pid == 0) - { - /* Play some lock ping-pong. It's our turn to unlock first. */ - if ((*p)++ != 0) - { - puts ("child: *p != 0"); - return 1; - } - - if (pthread_rwlock_unlock (r) != 0) - { - puts ("child: 1st rwlock_unlock failed"); - return 1; - } - - puts ("child done"); - } - else - { - if (pthread_rwlock_wrlock (r) != 0) - { - puts ("parent: rwlock_wrlock failed"); - return 1; - } - - if (*p != 1) - { - puts ("*p != 1"); - return 1; - } - - puts ("parent done"); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-rwlock5.c b/test/nptl/tst-rwlock5.c deleted file mode 100644 index 4914afdca..000000000 --- a/test/nptl/tst-rwlock5.c +++ /dev/null @@ -1,86 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; -static pthread_rwlock_t r; - - -static void * -tf (void *arg) -{ - if (pthread_rwlock_wrlock (&r) == 0) - { - puts ("child: rwlock_wrlock succeeded"); - exit (1); - } - - puts ("child: rwlock_wrlock returned"); - - exit (1); -} - - -static int -do_test (void) -{ - pthread_t th; - - if (pthread_rwlock_init (&r, NULL) != 0) - { - puts ("rwlock_init failed"); - return 1; - } - - if (pthread_rwlock_wrlock (&r) != 0) - { - puts ("rwlock_wrlock failed"); - return 1; - } - - if (pthread_mutex_lock (&m) != 0) - { - puts ("mutex_lock failed"); - return 1; - } - - /* Set an alarm for 1 second. The wrapper will expect this. */ - alarm (1); - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - return 1; - } - - /* This call should never return. */ - pthread_mutex_lock (&m); - - puts ("2nd mutex_lock returned"); - return 1; -} - -#define EXPECTED_SIGNAL SIGALRM -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-rwlock6.c b/test/nptl/tst-rwlock6.c deleted file mode 100644 index 78d07167a..000000000 --- a/test/nptl/tst-rwlock6.c +++ /dev/null @@ -1,225 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static int kind[] = - { - PTHREAD_RWLOCK_PREFER_READER_NP, - PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, - PTHREAD_RWLOCK_PREFER_WRITER_NP, - }; - - -static void * -tf (void *arg) -{ - pthread_rwlock_t *r = arg; - - /* Timeout: 0.3 secs. */ - struct timeval tv; - (void) gettimeofday (&tv, NULL); - - struct timespec ts; - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ts.tv_nsec += 300000000; - if (ts.tv_nsec >= 1000000000) - { - ts.tv_nsec -= 1000000000; - ++ts.tv_sec; - } - - puts ("child calling timedrdlock"); - - int err = pthread_rwlock_timedrdlock (r, &ts); - if (err == 0) - { - puts ("rwlock_timedrdlock returned"); - pthread_exit ((void *) 1l); - } - - if (err != ETIMEDOUT) - { - printf ("err = %s (%d), expected %s (%d)\n", - strerror (err), err, strerror (ETIMEDOUT), ETIMEDOUT); - pthread_exit ((void *) 1l); - } - - puts ("1st child timedrdlock done"); - - struct timeval tv2; - (void) gettimeofday (&tv2, NULL); - - timersub (&tv2, &tv, &tv); - - if (tv.tv_usec < 200000) - { - puts ("timeout too short"); - pthread_exit ((void *) 1l); - } - - (void) gettimeofday (&tv, NULL); - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ts.tv_sec += 10; - /* Note that the following operation makes ts invalid. */ - ts.tv_nsec += 1000000000; - - err = pthread_rwlock_timedrdlock (r, &ts); - if (err == 0) - { - puts ("2nd timedrdlock succeeded"); - pthread_exit ((void *) 1l); - } - if (err != EINVAL) - { - puts ("2nd timedrdlock did not return EINVAL"); - pthread_exit ((void *) 1l); - } - - puts ("2nd child timedrdlock done"); - - return NULL; -} - - -static int -do_test (void) -{ - size_t cnt; - for (cnt = 0; cnt < sizeof (kind) / sizeof (kind[0]); ++cnt) - { - pthread_rwlock_t r; - pthread_rwlockattr_t a; - - if (pthread_rwlockattr_init (&a) != 0) - { - printf ("round %Zu: rwlockattr_t failed\n", cnt); - exit (1); - } - - if (pthread_rwlockattr_setkind_np (&a, kind[cnt]) != 0) - { - printf ("round %Zu: rwlockattr_setkind failed\n", cnt); - exit (1); - } - - if (pthread_rwlock_init (&r, &a) != 0) - { - printf ("round %Zu: rwlock_init failed\n", cnt); - exit (1); - } - - if (pthread_rwlockattr_destroy (&a) != 0) - { - printf ("round %Zu: rwlockattr_destroy failed\n", cnt); - exit (1); - } - - struct timeval tv; - (void) gettimeofday (&tv, NULL); - - struct timespec ts; - TIMEVAL_TO_TIMESPEC (&tv, &ts); - - ++ts.tv_sec; - - /* Get a write lock. */ - int e = pthread_rwlock_timedwrlock (&r, &ts); - if (e != 0) - { - printf ("round %Zu: rwlock_timedwrlock failed (%d)\n", cnt, e); - exit (1); - } - - puts ("1st timedwrlock done"); - - (void) gettimeofday (&tv, NULL); - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ++ts.tv_sec; - e = pthread_rwlock_timedrdlock (&r, &ts); - if (e == 0) - { - puts ("timedrdlock succeeded"); - exit (1); - } - if (e != EDEADLK) - { - puts ("timedrdlock did not return EDEADLK"); - exit (1); - } - - puts ("1st timedrdlock done"); - - (void) gettimeofday (&tv, NULL); - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ++ts.tv_sec; - e = pthread_rwlock_timedwrlock (&r, &ts); - if (e == 0) - { - puts ("2nd timedwrlock succeeded"); - exit (1); - } - if (e != EDEADLK) - { - puts ("2nd timedwrlock did not return EDEADLK"); - exit (1); - } - - puts ("2nd timedwrlock done"); - - pthread_t th; - if (pthread_create (&th, NULL, tf, &r) != 0) - { - printf ("round %Zu: create failed\n", cnt); - exit (1); - } - - puts ("started thread"); - - void *status; - if (pthread_join (th, &status) != 0) - { - printf ("round %Zu: join failed\n", cnt); - exit (1); - } - if (status != NULL) - { - printf ("failure in round %Zu\n", cnt); - exit (1); - } - - puts ("joined thread"); - - if (pthread_rwlock_destroy (&r) != 0) - { - printf ("round %Zu: rwlock_destroy failed\n", cnt); - exit (1); - } - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-rwlock7.c b/test/nptl/tst-rwlock7.c deleted file mode 100644 index 5189a4781..000000000 --- a/test/nptl/tst-rwlock7.c +++ /dev/null @@ -1,178 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static int kind[] = - { - PTHREAD_RWLOCK_PREFER_READER_NP, - PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, - PTHREAD_RWLOCK_PREFER_WRITER_NP, - }; - - -static void * -tf (void *arg) -{ - pthread_rwlock_t *r = arg; - - /* Timeout: 0.3 secs. */ - struct timeval tv; - (void) gettimeofday (&tv, NULL); - - struct timespec ts; - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ts.tv_nsec += 300000000; - if (ts.tv_nsec >= 1000000000) - { - ts.tv_nsec -= 1000000000; - ++ts.tv_sec; - } - - int err = pthread_rwlock_timedwrlock (r, &ts); - if (err == 0) - { - puts ("rwlock_timedwrlock returned"); - pthread_exit ((void *) 1l); - } - - if (err != ETIMEDOUT) - { - printf ("err = %s (%d), expected %s (%d)\n", - strerror (err), err, strerror (ETIMEDOUT), ETIMEDOUT); - pthread_exit ((void *) 1l); - } - - struct timeval tv2; - (void) gettimeofday (&tv2, NULL); - - timersub (&tv2, &tv, &tv); - - if (tv.tv_usec < 200000) - { - puts ("timeout too short"); - pthread_exit ((void *) 1l); - } - - (void) gettimeofday (&tv, NULL); - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ts.tv_sec += 10; - /* Note that the following operation makes ts invalid. */ - ts.tv_nsec += 1000000000; - - err = pthread_rwlock_timedwrlock (r, &ts); - if (err == 0) - { - puts ("2nd timedwrlock succeeded"); - pthread_exit ((void *) 1l); - } - if (err != EINVAL) - { - puts ("2nd timedwrlock did not return EINVAL"); - pthread_exit ((void *) 1l); - } - - return NULL; -} - - -static int -do_test (void) -{ - size_t cnt; - for (cnt = 0; cnt < sizeof (kind) / sizeof (kind[0]); ++cnt) - { - pthread_rwlock_t r; - pthread_rwlockattr_t a; - - if (pthread_rwlockattr_init (&a) != 0) - { - printf ("round %Zu: rwlockattr_t failed\n", cnt); - exit (1); - } - - if (pthread_rwlockattr_setkind_np (&a, kind[cnt]) != 0) - { - printf ("round %Zu: rwlockattr_setkind failed\n", cnt); - exit (1); - } - - if (pthread_rwlock_init (&r, &a) != 0) - { - printf ("round %Zu: rwlock_init failed\n", cnt); - exit (1); - } - - if (pthread_rwlockattr_destroy (&a) != 0) - { - printf ("round %Zu: rwlockattr_destroy failed\n", cnt); - exit (1); - } - - struct timeval tv; - (void) gettimeofday (&tv, NULL); - - struct timespec ts; - TIMEVAL_TO_TIMESPEC (&tv, &ts); - - ++ts.tv_sec; - - /* Get a read lock. */ - if (pthread_rwlock_timedrdlock (&r, &ts) != 0) - { - printf ("round %Zu: rwlock_timedrdlock failed\n", cnt); - exit (1); - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, &r) != 0) - { - printf ("round %Zu: create failed\n", cnt); - exit (1); - } - - void *status; - if (pthread_join (th, &status) != 0) - { - printf ("round %Zu: join failed\n", cnt); - exit (1); - } - if (status != NULL) - { - printf ("failure in round %Zu\n", cnt); - exit (1); - } - - if (pthread_rwlock_destroy (&r) != 0) - { - printf ("round %Zu: rwlock_destroy failed\n", cnt); - exit (1); - } - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-rwlock8.c b/test/nptl/tst-rwlock8.c deleted file mode 100644 index b67e55a17..000000000 --- a/test/nptl/tst-rwlock8.c +++ /dev/null @@ -1,163 +0,0 @@ -/* Test program for timedout read/write lock functions. - Copyright (C) 2000, 2003 Free Software Foundation, Inc. - Contributed by Ulrich Drepper , 2000. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; see the file COPYING.LIB. If - not, see . */ - -#include -#include -#include -#include -#include -#include -#include - - -#define NWRITERS 15 -#define WRITETRIES 10 -#define NREADERS 15 -#define READTRIES 15 - -#define DELAY 1000000 - -#ifndef INIT -# define INIT PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP -#endif - -static pthread_rwlock_t lock = INIT; - - -static void * -writer_thread (void *nr) -{ - struct timespec delay; - int n; - - delay.tv_sec = 0; - delay.tv_nsec = DELAY; - - for (n = 0; n < WRITETRIES; ++n) - { - printf ("writer thread %ld tries again\n", (long int) nr); - - if (pthread_rwlock_wrlock (&lock) != 0) - { - puts ("wrlock failed"); - exit (1); - } - - printf ("writer thread %ld succeeded\n", (long int) nr); - - nanosleep (&delay, NULL); - - if (pthread_rwlock_unlock (&lock) != 0) - { - puts ("unlock for writer failed"); - exit (1); - } - - printf ("writer thread %ld released\n", (long int) nr); - } - - return NULL; -} - - -static void * -reader_thread (void *nr) -{ - struct timespec delay; - int n; - - delay.tv_sec = 0; - delay.tv_nsec = DELAY; - - for (n = 0; n < READTRIES; ++n) - { - printf ("reader thread %ld tries again\n", (long int) nr); - - if (pthread_rwlock_rdlock (&lock) != 0) - { - puts ("rdlock failed"); - exit (1); - } - - printf ("reader thread %ld succeeded\n", (long int) nr); - - nanosleep (&delay, NULL); - - if (pthread_rwlock_unlock (&lock) != 0) - { - puts ("unlock for reader failed"); - exit (1); - } - - printf ("reader thread %ld released\n", (long int) nr); - } - - return NULL; -} - - -static int -do_test (void) -{ - pthread_t thwr[NWRITERS]; - pthread_t thrd[NREADERS]; - int n; - void *res; - - /* Make standard error the same as standard output. */ - dup2 (1, 2); - - /* Make sure we see all message, even those on stdout. */ - setvbuf (stdout, NULL, _IONBF, 0); - - for (n = 0; n < NWRITERS; ++n) - if (pthread_create (&thwr[n], NULL, writer_thread, - (void *) (long int) n) != 0) - { - puts ("writer create failed"); - exit (1); - } - - for (n = 0; n < NREADERS; ++n) - if (pthread_create (&thrd[n], NULL, reader_thread, - (void *) (long int) n) != 0) - { - puts ("reader create failed"); - exit (1); - } - - /* Wait for all the threads. */ - for (n = 0; n < NWRITERS; ++n) - if (pthread_join (thwr[n], &res) != 0) - { - puts ("writer join failed"); - exit (1); - } - for (n = 0; n < NREADERS; ++n) - if (pthread_join (thrd[n], &res) != 0) - { - puts ("reader join failed"); - exit (1); - } - - return 0; -} - -#define TIMEOUT 30 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-rwlock9.c b/test/nptl/tst-rwlock9.c deleted file mode 100644 index e9f015120..000000000 --- a/test/nptl/tst-rwlock9.c +++ /dev/null @@ -1,202 +0,0 @@ -/* Test program for timedout read/write lock functions. - Copyright (C) 2000, 2003 Free Software Foundation, Inc. - Contributed by Ulrich Drepper , 2000. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; see the file COPYING.LIB. If - not, see . */ - -#include -#include -#include -#include -#include -#include -#include -#include - - -#define NWRITERS 15 -#define WRITETRIES 10 -#define NREADERS 15 -#define READTRIES 15 - -#define TIMEOUT 1000000 -#define DELAY 1000000 - -#ifndef INIT -# define INIT PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP -#endif - -static pthread_rwlock_t lock = INIT; - - -static void * -writer_thread (void *nr) -{ - struct timespec ts; - struct timespec delay; - int n; - - delay.tv_sec = 0; - delay.tv_nsec = DELAY; - - for (n = 0; n < WRITETRIES; ++n) - { - int e; - do - { - struct timeval tv; - (void) gettimeofday (&tv, NULL); - TIMEVAL_TO_TIMESPEC (&tv, &ts); - - ts.tv_nsec += 2 * TIMEOUT; - if (ts.tv_nsec >= 1000000000) - { - ts.tv_nsec -= 1000000000; - ++ts.tv_sec; - } - - printf ("writer thread %ld tries again\n", (long int) nr); - - e = pthread_rwlock_timedwrlock (&lock, &ts); - if (e != 0 && e != ETIMEDOUT) - { - puts ("timedwrlock failed"); - exit (1); - } - } - while (e == ETIMEDOUT); - - printf ("writer thread %ld succeeded\n", (long int) nr); - - nanosleep (&delay, NULL); - - if (pthread_rwlock_unlock (&lock) != 0) - { - puts ("unlock for writer failed"); - exit (1); - } - - printf ("writer thread %ld released\n", (long int) nr); - } - - return NULL; -} - - -static void * -reader_thread (void *nr) -{ - struct timespec ts; - struct timespec delay; - int n; - - delay.tv_sec = 0; - delay.tv_nsec = DELAY; - - for (n = 0; n < READTRIES; ++n) - { - int e; - do - { - struct timeval tv; - (void) gettimeofday (&tv, NULL); - TIMEVAL_TO_TIMESPEC (&tv, &ts); - - ts.tv_nsec += TIMEOUT; - if (ts.tv_nsec >= 1000000000) - { - ts.tv_nsec -= 1000000000; - ++ts.tv_sec; - } - - printf ("reader thread %ld tries again\n", (long int) nr); - - e = pthread_rwlock_timedrdlock (&lock, &ts); - if (e != 0 && e != ETIMEDOUT) - { - puts ("timedrdlock failed"); - exit (1); - } - } - while (e == ETIMEDOUT); - - printf ("reader thread %ld succeeded\n", (long int) nr); - - nanosleep (&delay, NULL); - - if (pthread_rwlock_unlock (&lock) != 0) - { - puts ("unlock for reader failed"); - exit (1); - } - - printf ("reader thread %ld released\n", (long int) nr); - } - - return NULL; -} - - -static int -do_test (void) -{ - pthread_t thwr[NWRITERS]; - pthread_t thrd[NREADERS]; - int n; - void *res; - - /* Make standard error the same as standard output. */ - dup2 (1, 2); - - /* Make sure we see all message, even those on stdout. */ - setvbuf (stdout, NULL, _IONBF, 0); - - for (n = 0; n < NWRITERS; ++n) - if (pthread_create (&thwr[n], NULL, writer_thread, - (void *) (long int) n) != 0) - { - puts ("writer create failed"); - exit (1); - } - - for (n = 0; n < NREADERS; ++n) - if (pthread_create (&thrd[n], NULL, reader_thread, - (void *) (long int) n) != 0) - { - puts ("reader create failed"); - exit (1); - } - - /* Wait for all the threads. */ - for (n = 0; n < NWRITERS; ++n) - if (pthread_join (thwr[n], &res) != 0) - { - puts ("writer join failed"); - exit (1); - } - for (n = 0; n < NREADERS; ++n) - if (pthread_join (thrd[n], &res) != 0) - { - puts ("reader join failed"); - exit (1); - } - - return 0; -} - -#undef TIMEOUT -#define TIMEOUT 30 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-sched1.c b/test/nptl/tst-sched1.c deleted file mode 100644 index be3f1b84e..000000000 --- a/test/nptl/tst-sched1.c +++ /dev/null @@ -1,97 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static int global; - -static void * -tf (void *a) -{ - global = 1; - - return 0; -} - - -int -do_test (void) -{ - pthread_t th; - pthread_attr_t at; - - if (pthread_attr_init (&at) != 0) - { - puts ("attr_init failed"); - return 1; - } - - if (pthread_attr_setschedpolicy (&at, SCHED_OTHER) != 0) - { - puts ("attr_setschedpolicy failed"); - return 1; - } - - struct sched_param pa; - if (sched_getparam (getpid (), &pa) != 0) - { - puts ("sched_getschedparam failed"); - return 1; - } - - if (pthread_attr_setschedparam (&at, &pa) != 0) - { - puts ("attr_setschedparam failed"); - return 1; - } - - if (pthread_attr_setinheritsched (&at, PTHREAD_EXPLICIT_SCHED) != 0) - { - puts ("attr_setinheritsched failed"); - return 1; - } - - if (pthread_create (&th, &at, tf, NULL) != 0) - { - puts ("create failed"); - return 1; - } - - int e = pthread_join (th, NULL); - if (e != 0) - { - printf ("join failed: %d\n", e); - return 1; - } - - if (global == 0) - { - puts ("thread didn't run"); - return 1; - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-sem1.c b/test/nptl/tst-sem1.c deleted file mode 100644 index 5e55dd38d..000000000 --- a/test/nptl/tst-sem1.c +++ /dev/null @@ -1,88 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static int -do_test (void) -{ - sem_t s; - - if (sem_init (&s, 0, 1) == -1) - { - puts ("init failed"); - return 1; - } - - if (TEMP_FAILURE_RETRY (sem_wait (&s)) == -1) - { - puts ("1st wait failed"); - return 1; - } - - if (sem_post (&s) == -1) - { - puts ("1st post failed"); - return 1; - } - - if (TEMP_FAILURE_RETRY (sem_trywait (&s)) == -1) - { - puts ("1st trywait failed"); - return 1; - } - - errno = 0; - if (TEMP_FAILURE_RETRY (sem_trywait (&s)) != -1) - { - puts ("2nd trywait succeeded"); - return 1; - } - else if (errno != EAGAIN) - { - puts ("2nd trywait did not set errno to EAGAIN"); - return 1; - } - - if (sem_post (&s) == -1) - { - puts ("2nd post failed"); - return 1; - } - - if (TEMP_FAILURE_RETRY (sem_wait (&s)) == -1) - { - puts ("2nd wait failed"); - return 1; - } - - if (sem_destroy (&s) == -1) - { - puts ("destroy failed"); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-sem10.c b/test/nptl/tst-sem10.c deleted file mode 100644 index ae6218a60..000000000 --- a/test/nptl/tst-sem10.c +++ /dev/null @@ -1,87 +0,0 @@ -/* Copyright (C) 2007 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2007. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - - -static int -do_test (void) -{ - sem_t s; - if (sem_init (&s, 0, 0) == -1) - { - puts ("sem_init failed"); - return 1; - } - - struct timeval tv; - if (gettimeofday (&tv, NULL) != 0) - { - puts ("gettimeofday failed"); - return 1; - } - - struct timespec ts; - TIMEVAL_TO_TIMESPEC (&tv, &ts); - - /* Set ts to yesterday. */ - ts.tv_sec -= 86400; - - int type_before; - if (pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, &type_before) != 0) - { - puts ("first pthread_setcanceltype failed"); - return 1; - } - - errno = 0; - if (TEMP_FAILURE_RETRY (sem_timedwait (&s, &ts)) != -1) - { - puts ("sem_timedwait succeeded"); - return 1; - } - if (errno != ETIMEDOUT) - { - printf ("sem_timedwait return errno = %d instead of ETIMEDOUT\n", - errno); - return 1; - } - - int type_after; - if (pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, &type_after) != 0) - { - puts ("second pthread_setcanceltype failed"); - return 1; - } - if (type_after != PTHREAD_CANCEL_DEFERRED) - { - puts ("sem_timedwait changed cancellation type"); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-sem11.c b/test/nptl/tst-sem11.c deleted file mode 100644 index 6633ddd1f..000000000 --- a/test/nptl/tst-sem11.c +++ /dev/null @@ -1,76 +0,0 @@ -#include -#include -#include -#include -#include - -#ifndef SEM_WAIT -# define SEM_WAIT(s) sem_wait (s) -#endif - -static void * -tf (void *arg) -{ -#ifdef PREPARE - PREPARE -#endif - SEM_WAIT (arg); - return NULL; -} - -int -main (void) -{ - int tries = 5; - pthread_t th; - sem_t s; - again: - if (sem_init (&s, 0, 0) != 0) - { - puts ("sem_init failed"); - return 1; - } - - struct new_sem *is = (struct new_sem *) &s; - - if (is->nwaiters != 0) - { - puts ("nwaiters not initialized"); - return 1; - } - - if (pthread_create (&th, NULL, tf, &s) != 0) - { - puts ("pthread_create failed"); - return 1; - } - - sleep (1); - - if (pthread_cancel (th) != 0) - { - puts ("pthread_cancel failed"); - return 1; - } - - void *r; - if (pthread_join (th, &r) != 0) - { - puts ("pthread_join failed"); - return 1; - } - if (r != PTHREAD_CANCELED && --tries > 0) - { - /* Maybe we get the scheduling right the next time. */ - sem_destroy (&s); - goto again; - } - - if (is->nwaiters != 0) - { - puts ("nwaiters not reset"); - return 1; - } - - return 0; -} diff --git a/test/nptl/tst-sem12.c b/test/nptl/tst-sem12.c deleted file mode 100644 index 71d02b70e..000000000 --- a/test/nptl/tst-sem12.c +++ /dev/null @@ -1,14 +0,0 @@ -#include -#include - - -#define PREPARE \ - struct timespec ts; \ - struct timeval tv; \ - gettimeofday (&tv, NULL); \ - TIMEVAL_TO_TIMESPEC (&tv, &ts); \ - ts.tv_sec += 60; - -#define SEM_WAIT(s) sem_timedwait (s, &ts) - -#include "tst-sem11.c" diff --git a/test/nptl/tst-sem2.c b/test/nptl/tst-sem2.c deleted file mode 100644 index edc553c7b..000000000 --- a/test/nptl/tst-sem2.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static int -do_test (void) -{ - sem_t s; - - if (sem_init (&s, 0, 0) == -1) - { - puts ("init failed"); - return 1; - } - - /* Set an alarm for 1 second. The wrapper will expect this. */ - alarm (1); - - if (TEMP_FAILURE_RETRY (sem_wait (&s)) == -1) - { - puts ("wait failed"); - return 1; - } - - /* We should never get here. */ - puts ("wait succeeded"); - return 1; -} - -#define EXPECTED_SIGNAL SIGALRM -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-sem3.c b/test/nptl/tst-sem3.c deleted file mode 100644 index 7b75e29e2..000000000 --- a/test/nptl/tst-sem3.c +++ /dev/null @@ -1,144 +0,0 @@ -/* Copyright (C) 2002-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -int -do_test (void) -{ - size_t ps = sysconf (_SC_PAGESIZE); - char tmpfname[] = "/tmp/tst-sem3.XXXXXX"; - char data[ps]; - void *mem; - int fd; - sem_t *s; - pid_t pid; - char *p; - - fd = mkstemp (tmpfname); - if (fd == -1) - { - printf ("cannot open temporary file: %m\n"); - return 1; - } - - /* Make sure it is always removed. */ - unlink (tmpfname); - - /* Create one page of data. */ - memset (data, '\0', ps); - - /* Write the data to the file. */ - if (write (fd, data, ps) != (ssize_t) ps) - { - puts ("short write"); - return 1; - } - - mem = mmap (NULL, ps, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (mem == MAP_FAILED) - { - printf ("mmap failed: %m\n"); - return 1; - } - - s = (sem_t *) (((uintptr_t) mem + __alignof (sem_t)) - & ~(__alignof (sem_t) - 1)); - p = (char *) (s + 1); - - if (sem_init (s, 1, 1) == -1) - { - puts ("init failed"); - return 1; - } - - if (TEMP_FAILURE_RETRY (sem_wait (s)) == -1) - { - puts ("1st wait failed"); - return 1; - } - - errno = 0; - if (TEMP_FAILURE_RETRY (sem_trywait (s)) != -1) - { - puts ("trywait succeeded"); - return 1; - } - else if (errno != EAGAIN) - { - puts ("trywait didn't return EAGAIN"); - return 1; - } - - *p = 0; - - puts ("going to fork now"); - pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - return 1; - } - else if (pid == 0) - { - /* Play some lock ping-pong. It's our turn to unlock first. */ - if ((*p)++ != 0) - { - puts ("child: *p != 0"); - return 1; - } - - if (sem_post (s) == -1) - { - puts ("child: 1st post failed"); - return 1; - } - - puts ("child done"); - } - else - { - if (TEMP_FAILURE_RETRY (sem_wait (s)) == -1) - { - printf ("parent: 2nd wait failed: %m\n"); - return 1; - } - - if (*p != 1) - { - puts ("*p != 1"); - return 1; - } - - puts ("parent done"); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-sem4.c b/test/nptl/tst-sem4.c deleted file mode 100644 index 72ed97d37..000000000 --- a/test/nptl/tst-sem4.c +++ /dev/null @@ -1,149 +0,0 @@ -/* Copyright (C) 2002-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static void -remove_sem (int status, void *arg) -{ - sem_unlink (arg); -} - - -int -do_test (void) -{ - sem_t *s; - sem_t *s2; - pid_t pid; - int val; - - s = sem_open ("/glibc-tst-sem4", O_CREAT, 0600, 1); - if (s == SEM_FAILED) - { - if (errno == ENOSYS) - { - puts ("sem_open not supported. Oh well."); - return 0; - } - - /* Maybe the shm filesystem has strict permissions. */ - if (errno == EACCES) - { - puts ("sem_open not allowed. Oh well."); - return 0; - } - - printf ("sem_open: %m\n"); - return 1; - } - - on_exit (remove_sem, (void *) "/glibc-tst-sem4"); - - /* We have the semaphore object. Now try again with O_EXCL, this - should fail. */ - s2 = sem_open ("/glibc-tst-sem4", O_CREAT | O_EXCL, 0600, 1); - if (s2 != SEM_FAILED) - { - puts ("2nd sem_open didn't fail"); - return 1; - } - if (errno != EEXIST) - { - puts ("2nd sem_open returned wrong error"); - return 1; - } - - /* Check the value. */ - if (sem_getvalue (s, &val) == -1) - { - puts ("getvalue failed"); - return 1; - } - if (val != 1) - { - printf ("initial value wrong: got %d, expected 1\n", val); - return 1; - } - - if (TEMP_FAILURE_RETRY (sem_wait (s)) == -1) - { - puts ("1st sem_wait failed"); - return 1; - } - - pid = fork (); - if (pid == -1) - { - printf ("fork failed: %m\n"); - return 1; - } - - if (pid == 0) - { - /* Child. */ - - /* Check the value. */ - if (sem_getvalue (s, &val) == -1) - { - puts ("child: getvalue failed"); - return 1; - } - if (val != 0) - { - printf ("child: value wrong: got %d, expect 0\n", val); - return 1; - } - - if (sem_post (s) == -1) - { - puts ("child: post failed"); - return 1; - } - } - else - { - if (TEMP_FAILURE_RETRY (sem_wait (s)) == -1) - { - puts ("2nd sem_wait failed"); - return 1; - } - - if (sem_getvalue (s, &val) == -1) - { - puts ("parent: 2nd getvalue failed"); - return 1; - } - if (val != 0) - { - printf ("parent: value wrong: got %d, expected 0\n", val); - return 1; - } - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-sem5.c b/test/nptl/tst-sem5.c deleted file mode 100644 index f0b905c33..000000000 --- a/test/nptl/tst-sem5.c +++ /dev/null @@ -1,79 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static int -do_test (void) -{ - sem_t s; - struct timespec ts; - struct timeval tv; - - if (sem_init (&s, 0, 1) == -1) - { - puts ("sem_init failed"); - return 1; - } - - if (TEMP_FAILURE_RETRY (sem_wait (&s)) == -1) - { - puts ("sem_wait failed"); - return 1; - } - - if (gettimeofday (&tv, NULL) != 0) - { - puts ("gettimeofday failed"); - return 1; - } - - TIMEVAL_TO_TIMESPEC (&tv, &ts); - - /* We wait for half a second. */ - ts.tv_nsec += 500000000; - if (ts.tv_nsec >= 1000000000) - { - ++ts.tv_sec; - ts.tv_nsec -= 1000000000; - } - - errno = 0; - if (TEMP_FAILURE_RETRY (sem_timedwait (&s, &ts)) != -1) - { - puts ("sem_timedwait succeeded"); - return 1; - } - if (errno != ETIMEDOUT) - { - printf ("sem_timedwait return errno = %d instead of ETIMEDOUT\n", - errno); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-sem6.c b/test/nptl/tst-sem6.c deleted file mode 100644 index 16adb95ef..000000000 --- a/test/nptl/tst-sem6.c +++ /dev/null @@ -1,80 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static void -handler (int sig) -{ - struct sigaction sa; - - sa.sa_handler = SIG_DFL; - sa.sa_flags = 0; - sigemptyset (&sa.sa_mask); - - sigaction (SIGALRM, &sa, NULL); - - /* Rearm the timer. */ - alarm (1); -} - - -static int -do_test (void) -{ - sem_t s; - struct sigaction sa; - - sa.sa_handler = handler; - sa.sa_flags = 0; - sigemptyset (&sa.sa_mask); - - sigaction (SIGALRM, &sa, NULL); - - if (sem_init (&s, 0, 0) == -1) - { - puts ("init failed"); - return 1; - } - - /* Set an alarm for 1 second. The wrapper will expect this. */ - alarm (1); - - int res = sem_wait (&s); - if (res == 0) - { - puts ("wait succeeded"); - return 1; - } - if (res != -1 || errno != EINTR) - { - puts ("wait didn't fail with EINTR"); - return 1; - } - - return 0; -} - -#define TIMEOUT 3 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-sem7.c b/test/nptl/tst-sem7.c deleted file mode 100644 index 34ddb4058..000000000 --- a/test/nptl/tst-sem7.c +++ /dev/null @@ -1,108 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static void -remove_sem (int status, void *arg) -{ - sem_unlink (arg); -} - - -int -main (void) -{ - sem_t *s; - sem_t *s2; - sem_t *s3; - - s = sem_open ("/glibc-tst-sem7", O_CREAT, 0600, 1); - if (s == SEM_FAILED) - { - if (errno == ENOSYS) - { - puts ("sem_open not supported. Oh well."); - return 0; - } - - /* Maybe the shm filesystem has strict permissions. */ - if (errno == EACCES) - { - puts ("sem_open not allowed. Oh well."); - return 0; - } - - printf ("sem_open: %m\n"); - return 1; - } - - on_exit (remove_sem, (void *) "/glibc-tst-sem7"); - - /* We have the semaphore object. Now try again. We should get the - same address. */ - s2 = sem_open ("/glibc-tst-sem7", O_CREAT, 0600, 1); - if (s2 == SEM_FAILED) - { - puts ("2nd sem_open failed"); - return 1; - } - if (s != s2) - { - puts ("2nd sem_open didn't return the same address"); - return 1; - } - - /* And again, this time without O_CREAT. */ - s3 = sem_open ("/glibc-tst-sem7", 0); - if (s3 == SEM_FAILED) - { - puts ("3rd sem_open failed"); - return 1; - } - if (s != s3) - { - puts ("3rd sem_open didn't return the same address"); - return 1; - } - - /* Now close the handle. Three times. */ - if (sem_close (s2) != 0) - { - puts ("1st sem_close failed"); - return 1; - } - if (sem_close (s) != 0) - { - puts ("2nd sem_close failed"); - return 1; - } - if (sem_close (s3) != 0) - { - puts ("3rd sem_close failed"); - return 1; - } - - return 0; -} diff --git a/test/nptl/tst-sem8.c b/test/nptl/tst-sem8.c deleted file mode 100644 index 286590fd6..000000000 --- a/test/nptl/tst-sem8.c +++ /dev/null @@ -1,73 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static void -remove_sem (int status, void *arg) -{ - sem_unlink (arg); -} - - -int -main (void) -{ - sem_t *s; - int i; - - on_exit (remove_sem, (void *) "/glibc-tst-sem8"); - - for (i = 0; i < 3; ++i) - { - s = sem_open ("/glibc-tst-sem8", O_CREAT, 0600, 1); - if (s == SEM_FAILED) - { - if (errno == ENOSYS) - { - puts ("sem_open not supported. Oh well."); - return 0; - } - - /* Maybe the shm filesystem has strict permissions. */ - if (errno == EACCES) - { - puts ("sem_open not allowed. Oh well."); - return 0; - } - - printf ("sem_open: %m\n"); - return 1; - } - - /* Now close the handle. */ - if (sem_close (s) != 0) - { - puts ("sem_close failed"); - return 1; - } - } - - return 0; -} diff --git a/test/nptl/tst-sem9.c b/test/nptl/tst-sem9.c deleted file mode 100644 index bdb594b09..000000000 --- a/test/nptl/tst-sem9.c +++ /dev/null @@ -1,80 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static void -remove_sem (int status, void *arg) -{ - sem_unlink (arg); -} - - -int -main (void) -{ - sem_t *s; - int i; - - on_exit (remove_sem, (void *) "/glibc-tst-sem9"); - - for (i = 0; i < 3; ++i) - { - s = sem_open ("/glibc-tst-sem9", O_CREAT, 0600, 1); - if (s == SEM_FAILED) - { - if (errno == ENOSYS) - { - puts ("sem_open not supported. Oh well."); - return 0; - } - - /* Maybe the shm filesystem has strict permissions. */ - if (errno == EACCES) - { - puts ("sem_open not allowed. Oh well."); - return 0; - } - - printf ("sem_open: %m\n"); - return 1; - } - - /* Now close the handle. */ - if (sem_close (s) != 0) - { - puts ("sem_close failed"); - return 1; - } - - /* And remove it. */ - if (sem_unlink ("/glibc-tst-sem9") != 0) - { - puts ("sem_unlink failed"); - return 1; - } - } - - return 0; -} diff --git a/test/nptl/tst-signal1.c b/test/nptl/tst-signal1.c deleted file mode 100644 index 0f952fd24..000000000 --- a/test/nptl/tst-signal1.c +++ /dev/null @@ -1,188 +0,0 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -static sigset_t ss; -static pthread_barrier_t *b; - - -static void * -tf (void *arg) -{ - sigdelset (&ss, SIGINT); - - if (pthread_sigmask (SIG_SETMASK, &ss, NULL) != 0) - { - puts ("2nd pthread_sigmask failed"); - exit (1); - } - - pthread_barrier_wait (b); - - int sig; - int res = sigwait (&ss, &sig); - if (res == 0) - { - printf ("sigwait returned successfully with signal %d\n", sig); - exit (1); - } - - printf ("sigwait returned with %s (%d)\n", strerror (res), res); - - return NULL; -} - - -static void -receiver (void) -{ - pthread_t th; - - /* Make sure the process doesn't run forever. */ - alarm (10); - - sigfillset (&ss); - - if (pthread_sigmask (SIG_SETMASK, &ss, NULL) != 0) - { - puts ("1st pthread_sigmask failed"); - exit (1); - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("pthread_create failed"); - exit (1); - } - - if (pthread_join (th, NULL) == 0) - { - puts ("thread joined?!"); - exit (1); - } - - _exit (0); -} - - -static int -do_test (void) -{ - char tmp[] = "/tmp/tst-signal1-XXXXXX"; - - int fd = mkstemp (tmp); - if (fd == -1) - { - puts ("mkstemp failed"); - exit (1); - } - - unlink (tmp); - - int i; - for (i = 0; i < 20; ++i) - write (fd, "foobar xyzzy", 12); - - b = mmap (NULL, sizeof (pthread_barrier_t), PROT_READ | PROT_WRITE, - MAP_SHARED, fd, 0); - if (b == MAP_FAILED) - { - puts ("mmap failed"); - exit (1); - } - - pthread_barrierattr_t ba; - if (pthread_barrierattr_init (&ba) != 0) - { - puts ("barrierattr_init failed"); - exit (1); - } - - if (pthread_barrierattr_setpshared (&ba, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("barrierattr_setpshared failed"); - exit (1); - } - - if (pthread_barrier_init (b, &ba, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - if (pthread_barrierattr_destroy (&ba) != 0) - { - puts ("barrierattr_destroy failed"); - exit (1); - } - - pid_t pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - exit (1); - } - - if (pid == 0) - receiver (); - - pthread_barrier_wait (b); - - /* Wait a bit more. */ - struct timespec ts = { .tv_sec = 0, .tv_nsec = 10000000 }; - nanosleep (&ts, NULL); - - /* Send the signal. */ - puts ("sending the signal now"); - kill (pid, SIGINT); - - /* Wait for the process to terminate. */ - int status; - if (TEMP_FAILURE_RETRY (waitpid (pid, &status, 0)) != pid) - { - puts ("wrong child reported terminated"); - exit (1); - } - - if (!WIFSIGNALED (status)) - { - puts ("child wasn't signalled"); - exit (1); - } - - if (WTERMSIG (status) != SIGINT) - { - puts ("child not terminated with SIGINT"); - exit (1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-signal2.c b/test/nptl/tst-signal2.c deleted file mode 100644 index 37d5611e4..000000000 --- a/test/nptl/tst-signal2.c +++ /dev/null @@ -1,197 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -static sigset_t ss; -static pthread_barrier_t *b; - - -static void * -tf (void *arg) -{ - pthread_barrier_wait (b); - - puts ("child: calling sigwait now"); - - int sig; - int err; - err = sigwait (&ss, &sig); - if (err != 0) - { - printf ("sigwait returned unsuccessfully: %s (%d)\n", - strerror (err), err); - _exit (1); - } - - puts ("sigwait returned"); - - if (sig != SIGINT) - { - printf ("caught signal %d, expected %d (SIGINT)\n", sig, SIGINT); - _exit (1); - } - - puts ("child thread terminating now"); - - return NULL; -} - - -static void -receiver (void) -{ - pthread_t th; - - /* Make sure the process doesn't run forever. */ - alarm (10); - - sigfillset (&ss); - - if (pthread_sigmask (SIG_SETMASK, &ss, NULL) != 0) - { - puts ("1st pthread_sigmask failed"); - _exit (1); - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("pthread_create failed"); - _exit (1); - } - - if (pthread_join (th, NULL) != 0) - { - puts ("thread didn't join"); - _exit (1); - } - - puts ("join succeeded"); - - _exit (0); -} - - -static int -do_test (void) -{ - char tmp[] = "/tmp/tst-signal1-XXXXXX"; - - int fd = mkstemp (tmp); - if (fd == -1) - { - puts ("mkstemp failed"); - exit (1); - } - - unlink (tmp); - - int i; - for (i = 0; i < 20; ++i) - write (fd, "foobar xyzzy", 12); - - b = mmap (NULL, sizeof (pthread_barrier_t), PROT_READ | PROT_WRITE, - MAP_SHARED, fd, 0); - if (b == MAP_FAILED) - { - puts ("mmap failed"); - exit (1); - } - - pthread_barrierattr_t ba; - if (pthread_barrierattr_init (&ba) != 0) - { - puts ("barrierattr_init failed"); - exit (1); - } - - if (pthread_barrierattr_setpshared (&ba, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("barrierattr_setpshared failed"); - exit (1); - } - - if (pthread_barrier_init (b, &ba, 2) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - if (pthread_barrierattr_destroy (&ba) != 0) - { - puts ("barrierattr_destroy failed"); - exit (1); - } - - pid_t pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - exit (1); - } - - if (pid == 0) - receiver (); - - pthread_barrier_wait (b); - - /* Wait a bit more. */ - struct timespec ts = { .tv_sec = 0, .tv_nsec = 10000000 }; - nanosleep (&ts, NULL); - - /* Send the signal. */ - puts ("sending the signal now"); - kill (pid, SIGINT); - - /* Wait for the process to terminate. */ - int status; - if (TEMP_FAILURE_RETRY (waitpid (pid, &status, 0)) != pid) - { - puts ("wrong child reported terminated"); - exit (1); - } - - if (!WIFEXITED (status)) - { - if (WIFSIGNALED (status)) - printf ("child exited with signal %d\n", WTERMSIG (status)); - else - puts ("child didn't exit normally"); - exit (1); - } - - if (WEXITSTATUS (status) != 0) - { - printf ("exit status %d != 0\n", WEXITSTATUS (status)); - exit (1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-signal3.c b/test/nptl/tst-signal3.c deleted file mode 100644 index fbd9ace8e..000000000 --- a/test/nptl/tst-signal3.c +++ /dev/null @@ -1,260 +0,0 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - - -/* Number of different signalss to use. Also is the number of - threads. */ -#define N 10 -/* Maximum number of threads in flight at any one time. */ -#define INFLIGHT 5 -/* Number of signals sent in total. */ -#define ROUNDS 10000 - - -static int received[N][N]; -static int nsig[N]; -static pthread_t th[N]; -static sem_t sem; -static pthread_mutex_t lock[N]; -static pthread_t th_main; -static int sig0; - -static void -handler (int sig) -{ - int i; - for (i = 0; i < N; ++i) - if (pthread_equal (pthread_self (), th[i])) - break; - - if (i == N) - { - if (pthread_equal (pthread_self (), th_main)) - puts ("signal received by main thread"); - else - printf ("signal received by unknown thread (%lx)\n", - (unsigned long int) pthread_self ()); - exit (1); - } - - ++received[i][sig - sig0]; - - sem_post (&sem); -} - - -static void * -tf (void *arg) -{ - int idx = (long int) arg; - - sigset_t ss; - sigemptyset (&ss); - - int i; - for (i = 0; i <= idx; ++i) - sigaddset (&ss, sig0 + i); - - if (pthread_sigmask (SIG_UNBLOCK, &ss, NULL) != 0) - { - printf ("thread %d: pthread_sigmask failed\n", i); - exit (1); - } - - pthread_mutex_lock (&lock[idx]); - - return NULL; -} - - -static int -do_test (void) -{ - /* Block all signals. */ - sigset_t ss; - sigfillset (&ss); - - th_main = pthread_self (); - - sig0 = SIGRTMIN; - - if (pthread_sigmask (SIG_SETMASK, &ss, NULL) != 0) - { - puts ("1st pthread_sigmask failed"); - exit (1); - } - - /* Install the handler. */ - int i; - for (i = 0; i < N; ++i) - { - struct sigaction sa = - { - .sa_handler = handler, - .sa_flags = 0 - }; - sigfillset (&sa.sa_mask); - - if (sigaction (sig0 + i, &sa, NULL) != 0) - { - printf ("sigaction for signal %d failed\n", i); - exit (1); - } - } - - if (sem_init (&sem, 0, INFLIGHT) != 0) - { - puts ("sem_init failed"); - exit (1); - } - - pthread_attr_t a; - - if (pthread_attr_init (&a) != 0) - { - puts ("attr_init failed"); - exit (1); - } - - if (pthread_attr_setstacksize (&a, 1 * 1024 * 1024) != 0) - { - puts ("attr_setstacksize failed"); - return 1; - } - - for (i = 0; i < N; ++i) - { - if (pthread_mutex_init (&lock[i], NULL) != 0) - { - printf ("mutex_init[%d] failed\n", i); - } - - if (pthread_mutex_lock (&lock[i]) != 0) - { - printf ("mutex_lock[%d] failed\n", i); - } - - if (pthread_create (&th[i], &a, tf, (void *) (long int) i) != 0) - { - printf ("create of thread %d failed\n", i); - exit (1); - } - } - - if (pthread_attr_destroy (&a) != 0) - { - puts ("attr_destroy failed"); - exit (1); - } - - int result = 0; - unsigned int r = 42; - pid_t pid = getpid (); - - for (i = 0; i < ROUNDS; ++i) - { - if (TEMP_FAILURE_RETRY (sem_wait (&sem)) != 0) - { - printf ("sem_wait round %d failed: %m\n", i); - exit (1); - } - - int s = rand_r (&r) % N; - - kill (pid, sig0 + s); - } - - void *status; - for (i = 0; i < N; ++i) - { - if (pthread_mutex_unlock (&lock[i]) != 0) - { - printf ("unlock %d failed\n", i); - exit (1); - } - - if (pthread_join (th[i], &status) != 0) - { - printf ("join %d failed\n", i); - result = 1; - } - else if (status != NULL) - { - printf ("%d: result != NULL\n", i); - result = 1; - } - } - - int total = 0; - for (i = 0; i < N; ++i) - { - int j; - - for (j = 0; j <= i; ++j) - total += received[i][j]; - - for (j = i + 1; j < N; ++j) - if (received[i][j] != 0) - { - printf ("thread %d received signal SIGRTMIN+%d\n", i, j); - result = 1; - } - } - - if (total != ROUNDS) - { - printf ("total number of handled signals is %d, expected %d\n", - total, ROUNDS); - result = 1; - } - - printf ("A total of %d signals sent and received\n", total); - for (i = 0; i < N; ++i) - { - printf ("thread %2d:", i); - - int j; - for (j = 0; j <= i; ++j) - { - printf (" %5d", received[i][j]); - nsig[j] += received[i][j]; - } - - putchar ('\n'); - - } - - printf ("\nTotal :"); - for (i = 0; i < N; ++i) - printf (" %5d", nsig[i]); - putchar ('\n'); - - return result; -} - -#define TIMEOUT 10 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-signal4.c b/test/nptl/tst-signal4.c deleted file mode 100644 index f249b7b75..000000000 --- a/test/nptl/tst-signal4.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - -static int -do_test (void) -{ - sigset_t ss; - - sigemptyset (&ss); - - int i; - for (i = 0; i < 10000; ++i) - { - long int r = random (); - - if (r != SIG_BLOCK && r != SIG_SETMASK && r != SIG_UNBLOCK) - { - int e = pthread_sigmask (r, &ss, NULL); - - if (e == 0) - { - printf ("pthread_sigmask succeeded for how = %ld\n", r); - exit (1); - } - - if (e != EINVAL) - { - puts ("pthread_sigmask didn't return EINVAL"); - exit (1); - } - } - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-signal5.c b/test/nptl/tst-signal5.c deleted file mode 100644 index 5c0ac0c17..000000000 --- a/test/nptl/tst-signal5.c +++ /dev/null @@ -1,110 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -static sigset_t ss; - - -static void * -tf (void *arg) -{ - sigset_t ss2; - if (pthread_sigmask (SIG_SETMASK, NULL, &ss2) != 0) - { - puts ("child: sigmask failed"); - exit (1); - } - - int i; - for (i = 1; i < 32; ++i) - if (sigismember (&ss, i) && ! sigismember (&ss2, i)) - { - printf ("signal %d set in parent mask, but not in child\n", i); - exit (1); - } - else if (! sigismember (&ss, i) && sigismember (&ss2, i)) - { - printf ("signal %d set in child mask, but not in parent\n", i); - exit (1); - } - - return NULL; -} - - -static int -do_test (void) -{ - sigemptyset (&ss); - sigaddset (&ss, SIGUSR1); - if (pthread_sigmask (SIG_SETMASK, &ss, NULL) != 0) - { - puts ("1st sigmask failed"); - exit (1); - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("1st create failed"); - exit (1); - } - - void *r; - if (pthread_join (th, &r) != 0) - { - puts ("1st join failed"); - exit (1); - } - - sigemptyset (&ss); - sigaddset (&ss, SIGUSR2); - sigaddset (&ss, SIGFPE); - if (pthread_sigmask (SIG_SETMASK, &ss, NULL) != 0) - { - puts ("2nd sigmask failed"); - exit (1); - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("2nd create failed"); - exit (1); - } - - if (pthread_join (th, &r) != 0) - { - puts ("2nd join failed"); - exit (1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-signal6.c b/test/nptl/tst-signal6.c deleted file mode 100644 index 31827b7c2..000000000 --- a/test/nptl/tst-signal6.c +++ /dev/null @@ -1,191 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -#define N 2 -static pthread_barrier_t bar; -static struct -{ - void *p; - pthread_t s; -} ti[N]; -static int sig1; - - -static void -handler (int sig) -{ - pthread_t self = pthread_self (); - size_t i; - - for (i = 0; i < N; ++i) - if (ti[i].s == self) - { - if ((uintptr_t) ti[i].p <= (uintptr_t) &self - && (uintptr_t) ti[i].p + 2 * MINSIGSTKSZ > (uintptr_t) &self) - { - puts ("alt stack not used"); - exit (1); - } - - printf ("thread %zu used alt stack for signal %d\n", i, sig); - - return; - } - - puts ("handler: thread not found"); - exit (1); -} - - -static void * -tf (void *arg) -{ - size_t nr = (uintptr_t) arg; - if (nr >= N) - { - puts ("wrong nr parameter"); - exit (1); - } - - sigset_t ss; - sigemptyset (&ss); - size_t i; - for (i = 0; i < N; ++i) - if (i != nr) - if (sigaddset (&ss, sig1 + i) != 0) - { - puts ("tf: sigaddset failed"); - exit (1); - } - if (pthread_sigmask (SIG_BLOCK, &ss, NULL) != 0) - { - puts ("tf: sigmask failed"); - exit (1); - } - - void *p = malloc (2 * MINSIGSTKSZ); - if (p == NULL) - { - puts ("tf: malloc failed"); - exit (1); - } - - stack_t s; - s.ss_sp = p; - s.ss_size = 2 * MINSIGSTKSZ; - s.ss_flags = 0; - if (sigaltstack (&s, NULL) != 0) - { - puts ("tf: sigaltstack failed"); - exit (1); - } - - ti[nr].p = p; - ti[nr].s = pthread_self (); - - pthread_barrier_wait (&bar); - - pthread_barrier_wait (&bar); - - return NULL; -} - - -static int -do_test (void) -{ - sig1 = SIGRTMIN; - if (sig1 + N > SIGRTMAX) - { - puts ("too few RT signals"); - return 0; - } - - struct sigaction sa; - sa.sa_handler = handler; - sa.sa_flags = 0; - sigemptyset (&sa.sa_mask); - - if (sigaction (sig1, &sa, NULL) != 0 - || sigaction (sig1 + 1, &sa, NULL) != 0 - || sigaction (sig1 + 2, &sa, NULL) != 0) - { - puts ("sigaction failed"); - return 1; - } - - if (pthread_barrier_init (&bar, NULL, 1 + N) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - pthread_t th[N]; - size_t i; - for (i = 0; i < N; ++i) - if (pthread_create (&th[i], NULL, tf, (void *) (long int) i) != 0) - { - puts ("create failed"); - return 1; - } - - /* Block the three signals. */ - sigset_t ss; - sigemptyset (&ss); - for (i = 0; i <= N; ++i) - sigaddset (&ss, sig1 + i); - if (pthread_sigmask (SIG_BLOCK, &ss, NULL) != 0) - { - puts ("main: sigmask failed"); - return 1; - } - - pthread_barrier_wait (&bar); - - /* Send some signals. */ - pid_t me = getpid (); - kill (me, sig1 + N); - for (i = 0; i < N; ++i) - kill (me, sig1 + i); - kill (me, sig1 + N); - - /* Give the signals a chance to be worked on. */ - sleep (1); - - pthread_barrier_wait (&bar); - - for (i = 0; i < N; ++i) - if (pthread_join (th[i], NULL) != 0) - { - puts ("join failed"); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-signal7.c b/test/nptl/tst-signal7.c deleted file mode 100644 index 629f377ae..000000000 --- a/test/nptl/tst-signal7.c +++ /dev/null @@ -1,58 +0,0 @@ -/* Copyright (C) 2005 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2005. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static int -do_test (void) -{ - int result = 0; - - errno = 0; - if (sigaction (SIGCANCEL, NULL, NULL) == 0) - { - puts ("sigaction(SIGCANCEL) did not fail"); - result = 1; - } - else if (errno != EINVAL) - { - puts ("sigaction(SIGCANCEL) did not set errno to EINVAL"); - result = 1; - } - - errno = 0; - if (sigaction (SIGSETXID, NULL, NULL) == 0) - { - puts ("sigaction(SIGSETXID) did not fail"); - result = 1; - } - else if (errno != EINVAL) - { - puts ("sigaction(SIGSETXID) did not set errno to EINVAL"); - result = 1; - } - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-spin1.c b/test/nptl/tst-spin1.c deleted file mode 100644 index b55c9584a..000000000 --- a/test/nptl/tst-spin1.c +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - - -static int -do_test (void) -{ - pthread_spinlock_t s; - - if (pthread_spin_init (&s, PTHREAD_PROCESS_PRIVATE) != 0) - { - puts ("spin_init failed"); - return 1; - } - - if (pthread_spin_lock (&s) != 0) - { - puts ("spin_lock failed"); - return 1; - } - - if (pthread_spin_unlock (&s) != 0) - { - puts ("spin_unlock failed"); - return 1; - } - - if (pthread_spin_destroy (&s) != 0) - { - puts ("spin_destroy failed"); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-spin2.c b/test/nptl/tst-spin2.c deleted file mode 100644 index 6119a3b23..000000000 --- a/test/nptl/tst-spin2.c +++ /dev/null @@ -1,158 +0,0 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -static int -do_test (void) -{ - size_t ps = sysconf (_SC_PAGESIZE); - char tmpfname[] = "/tmp/tst-spin2.XXXXXX"; - char data[ps]; - void *mem; - int fd; - pthread_spinlock_t *s; - pid_t pid; - char *p; - int err; - - fd = mkstemp (tmpfname); - if (fd == -1) - { - printf ("cannot open temporary file: %m\n"); - return 1; - } - - /* Make sure it is always removed. */ - unlink (tmpfname); - - /* Create one page of data. */ - memset (data, '\0', ps); - - /* Write the data to the file. */ - if (write (fd, data, ps) != (ssize_t) ps) - { - puts ("short write"); - return 1; - } - - mem = mmap (NULL, ps, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (mem == MAP_FAILED) - { - printf ("mmap failed: %m\n"); - return 1; - } - - s = (pthread_spinlock_t *) (((uintptr_t) mem - + __alignof (pthread_spinlock_t)) - & ~(__alignof (pthread_spinlock_t) - 1)); - p = (char *) (s + 1); - - if (pthread_spin_init (s, PTHREAD_PROCESS_SHARED) != 0) - { - puts ("spin_init failed"); - return 1; - } - - if (pthread_spin_lock (s) != 0) - { - puts ("spin_lock failed"); - return 1; - } - - err = pthread_spin_trylock (s); - if (err == 0) - { - puts ("1st spin_trylock succeeded"); - return 1; - } - else if (err != EBUSY) - { - puts ("1st spin_trylock didn't return EBUSY"); - return 1; - } - - err = pthread_spin_unlock (s); - if (err != 0) - { - puts ("parent: spin_unlock failed"); - return 1; - } - - err = pthread_spin_trylock (s); - if (err != 0) - { - puts ("2nd spin_trylock failed"); - return 1; - } - - *p = 0; - - puts ("going to fork now"); - pid = fork (); - if (pid == -1) - { - puts ("fork failed"); - return 1; - } - else if (pid == 0) - { - /* Play some lock ping-pong. It's our turn to unlock first. */ - if ((*p)++ != 0) - { - puts ("child: *p != 0"); - return 1; - } - - if (pthread_spin_unlock (s) != 0) - { - puts ("child: 1st spin_unlock failed"); - return 1; - } - - puts ("child done"); - } - else - { - if (pthread_spin_lock (s) != 0) - { - puts ("parent: 2nd spin_lock failed"); - return 1; - } - - puts ("waiting for child"); - - waitpid (pid, NULL, 0); - - puts ("parent done"); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-spin3.c b/test/nptl/tst-spin3.c deleted file mode 100644 index b54d42c33..000000000 --- a/test/nptl/tst-spin3.c +++ /dev/null @@ -1,54 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static int -do_test (void) -{ - pthread_spinlock_t s; - - if (pthread_spin_init (&s, PTHREAD_PROCESS_PRIVATE) != 0) - { - puts ("spin_init failed"); - return 1; - } - - if (pthread_spin_lock (&s) != 0) - { - puts ("1st spin_lock failed"); - return 1; - } - - /* Set an alarm for 1 second. The wrapper will expect this. */ - alarm (1); - - /* This call should never return. */ - pthread_spin_lock (&s); - - puts ("2nd spin_lock returned"); - return 1; -} - -#define EXPECTED_SIGNAL SIGALRM -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-stack-align.h b/test/nptl/tst-stack-align.h deleted file mode 100644 index 9a59d7137..000000000 --- a/test/nptl/tst-stack-align.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - -#define TEST_STACK_ALIGN() \ - ({ \ - double _d = 12.0; \ - long double _ld = 15.0; \ - int _ret = 0; \ - printf ("double: %g %p %zu\n", _d, &_d, __alignof (double)); \ - if ((((uintptr_t) &_d) & (__alignof (double) - 1)) != 0) \ - _ret = 1; \ - \ - printf ("ldouble: %Lg %p %zu\n", _ld, &_ld, __alignof (long double)); \ - if ((((uintptr_t) &_ld) & (__alignof (long double) - 1)) != 0) \ - _ret = 1; \ - _ret; \ - }) diff --git a/test/nptl/tst-stack1.c b/test/nptl/tst-stack1.c deleted file mode 100644 index 288024a1d..000000000 --- a/test/nptl/tst-stack1.c +++ /dev/null @@ -1,145 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - - -static void *stack; -static size_t size; - - -static void * -tf (void *a) -{ - int result = 0; - - puts ("child start"); - - pthread_attr_t attr; - if (pthread_getattr_np (pthread_self (), &attr) != 0) - { - puts ("getattr_np failed"); - exit (1); - } - - size_t test_size; - void *test_stack; - if (pthread_attr_getstack (&attr, &test_stack, &test_size) != 0) - { - puts ("attr_getstack failed"); - exit (1); - } - - if (test_size != size) - { - printf ("child: reported size differs: is %zu, expected %zu\n", - test_size, size); - result = 1; - } - - if (test_stack != stack) - { - printf ("child: reported stack address differs: is %p, expected %p\n", - test_stack, stack); - result = 1; - } - - puts ("child OK"); - - return result ? (void *) 1l : NULL; -} - - -int -do_test (void) -{ - int result = 0; - - size = MAX (4 * getpagesize (), PTHREAD_STACK_MIN); - if (posix_memalign (&stack, getpagesize (), size) != 0) - { - puts ("out of memory while allocating the stack memory"); - exit (1); - } - - pthread_attr_t attr; - if (pthread_attr_init (&attr) != 0) - { - puts ("attr_init failed"); - exit (1); - } - - puts ("attr_setstack"); - if (pthread_attr_setstack (&attr, stack, size) != 0) - { - puts ("attr_setstack failed"); - exit (1); - } - - size_t test_size; - void *test_stack; - puts ("attr_getstack"); - if (pthread_attr_getstack (&attr, &test_stack, &test_size) != 0) - { - puts ("attr_getstack failed"); - exit (1); - } - - if (test_size != size) - { - printf ("reported size differs: is %zu, expected %zu\n", - test_size, size); - result = 1; - } - - if (test_stack != stack) - { - printf ("reported stack address differs: is %p, expected %p\n", - test_stack, stack); - result = 1; - } - - puts ("create"); - - pthread_t th; - if (pthread_create (&th, &attr, tf, NULL) != 0) - { - puts ("failed to create thread"); - exit (1); - } - - void *status; - if (pthread_join (th, &status) != 0) - { - puts ("join failed"); - exit (1); - } - - result |= status != NULL; - - return result; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-stack2.c b/test/nptl/tst-stack2.c deleted file mode 100644 index 7b1e2f6a6..000000000 --- a/test/nptl/tst-stack2.c +++ /dev/null @@ -1,79 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -/* Test whether it is possible to create a thread with PTHREAD_STACK_MIN - stack size. */ - -#include -#include -#include -#include - -static int seen; - -static void * -tf (void *p) -{ - ++seen; - return NULL; -} - -static int -do_test (void) -{ - pthread_attr_t attr; - pthread_attr_init (&attr); - - int result = 0; - int res = pthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN); - if (res) - { - printf ("pthread_attr_setstacksize failed %d\n", res); - result = 1; - } - - /* Create the thread. */ - pthread_t th; - res = pthread_create (&th, &attr, tf, NULL); - if (res) - { - printf ("pthread_create failed %d\n", res); - result = 1; - } - else - { - res = pthread_join (th, NULL); - if (res) - { - printf ("pthread_join failed %d\n", res); - result = 1; - } - } - - if (seen != 1) - { - printf ("seen %d != 1\n", seen); - result = 1; - } - - return result; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-stdio1.c b/test/nptl/tst-stdio1.c deleted file mode 100644 index 2396e0185..000000000 --- a/test/nptl/tst-stdio1.c +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static void *tf (void *a) -{ - flockfile (stdout); - /* This call should never return. */ - return a; -} - - -int -do_test (void) -{ - pthread_t th; - - flockfile (stdout); - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - write (2, "create failed\n", 14); - _exit (1); - } - - pthread_join (th, NULL); - - puts ("join returned"); - - return 0; -} - - -#define EXPECTED_SIGNAL SIGALRM -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-stdio2.c b/test/nptl/tst-stdio2.c deleted file mode 100644 index 4ac778cc0..000000000 --- a/test/nptl/tst-stdio2.c +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static void *tf (void *a) -{ - puts ("start tf"); - - /* Multiple locking, implicitly or explicitly, must be possible. */ - flockfile (stdout); - - puts ("after first flockfile"); - - flockfile (stdout); - - puts ("foo"); - - funlockfile (stdout); - - puts ("after first funlockfile"); - - funlockfile (stdout); - - puts ("all done"); - - return a; -} - - -int -do_test (void) -{ - pthread_t th; - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - write (2, "create failed\n", 14); - _exit (1); - } - - void *result; - if (pthread_join (th, &result) != 0) - { - puts ("join failed"); - exit (1); - } - else if (result != NULL) - { - printf ("wrong return value: %p, expected %p\n", result, NULL); - exit (1); - } - - puts ("join returned succsefully"); - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-sysconf.c b/test/nptl/tst-sysconf.c deleted file mode 100644 index da493ef43..000000000 --- a/test/nptl/tst-sysconf.c +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - - -static int -do_test (void) -{ - puts ("We expect no limits"); - /* We have no fixed limit on the number of threads. Make sure the - headers tell the right story. */ -#ifdef PTHREAD_THREADS_MAX - printf ("Header report maximum number of threads = %lu\n", - (unsigned long int) PTHREAD_THREADS_MAX); - return 1; -#else - long int r = sysconf (_SC_THREAD_THREADS_MAX); - if (r != -1) - { - printf ("sysconf(_SC_THREAD_THREADS_MAX) return %ld\n", r); - return 1; - } -#endif - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-timer2.c b/test/nptl/tst-timer2.c deleted file mode 100644 index 60026c1ef..000000000 --- a/test/nptl/tst-timer2.c +++ /dev/null @@ -1,65 +0,0 @@ -/* Test for crashing bugs when trying to create too many timers. */ - -#include -#include -#include -#include -#include -#include - -#if _POSIX_THREADS -# include - -void -thread (union sigval arg) -{ - puts ("Timeout"); -} - -int -do_test (void) -{ - int i, res; - timer_t timerId; - struct itimerspec itval; - struct sigevent sigev; - - itval.it_interval.tv_sec = 2; - itval.it_interval.tv_nsec = 0; - itval.it_value.tv_sec = 2; - itval.it_value.tv_nsec = 0; - - sigev.sigev_notify = SIGEV_THREAD; - sigev.sigev_signo = SIGRTMIN; - sigev.sigev_notify_function = thread; - sigev.sigev_notify_attributes = 0; - sigev.sigev_value.sival_ptr = (void *) &timerId; - - for (i = 0; i < 100; i++) - { - printf ("cnt = %d\n", i); - - if (timer_create (CLOCK_REALTIME, &sigev, &timerId) < 0) - { - perror ("timer_create"); - continue; - } - - res = timer_settime (timerId, 0, &itval, NULL); - if (res < 0) - perror ("timer_settime"); - - res = timer_delete (timerId); - if (res < 0) - perror ("timer_delete"); - } - - return 0; -} - -# define TEST_FUNCTION do_test () -#else -# define TEST_FUNCTION 0 -#endif - -#include "../test-skeleton.c" diff --git a/test/nptl/tst-timer3.c b/test/nptl/tst-timer3.c deleted file mode 100644 index 8113f6690..000000000 --- a/test/nptl/tst-timer3.c +++ /dev/null @@ -1,86 +0,0 @@ -/* Test for bogus per-thread deletion of timers. */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if _POSIX_THREADS -# include - - -/* Creating timers in another thread should work too. */ -static void * -do_timer_create (void *arg) -{ - struct sigevent *const sigev = arg; - timer_t *const timerId = sigev->sigev_value.sival_ptr; - if (timer_create (CLOCK_REALTIME, sigev, timerId) < 0) - { - printf ("timer_create: %m\n"); - return NULL; - } - return timerId; -} - - -static int -do_test (void) -{ - int i, res; - timer_t timerId; - struct itimerspec itval; - struct sigevent sigev; - - itval.it_interval.tv_sec = 2; - itval.it_interval.tv_nsec = 0; - itval.it_value.tv_sec = 2; - itval.it_value.tv_nsec = 0; - - sigev.sigev_notify = SIGEV_SIGNAL; - sigev.sigev_signo = SIGALRM; - sigev.sigev_value.sival_ptr = (void *) &timerId; - - for (i = 0; i < 100; i++) - { - printf ("cnt = %d\n", i); - - pthread_t thr; - res = pthread_create (&thr, NULL, &do_timer_create, &sigev); - if (res) - { - printf ("pthread_create: %s\n", strerror (res)); - continue; - } - void *val; - res = pthread_join (thr, &val); - if (res) - { - printf ("pthread_join: %s\n", strerror (res)); - continue; - } - if (val == NULL) - continue; - - res = timer_settime (timerId, 0, &itval, NULL); - if (res < 0) - printf ("timer_settime: %m\n"); - - res = timer_delete (timerId); - if (res < 0) - printf ("timer_delete: %m\n"); - } - - return 0; -} - -# define TEST_FUNCTION do_test () -#else -# define TEST_FUNCTION 0 -#endif - -#include "../test-skeleton.c" diff --git a/test/nptl/tst-timer4.c b/test/nptl/tst-timer4.c deleted file mode 100644 index fafb5651b..000000000 --- a/test/nptl/tst-timer4.c +++ /dev/null @@ -1,647 +0,0 @@ -/* Tests for POSIX timer implementation. - Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2004 - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; see the file COPYING.LIB. If - not, see . */ - -#include -#include -#include -#include -#include -#include -#if _POSIX_THREADS -# include - -# ifndef TEST_CLOCK -# define TEST_CLOCK CLOCK_REALTIME -# endif - -pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; -pthread_cond_t cond = PTHREAD_COND_INITIALIZER; - -timer_t timer_none, timer_sig1, timer_sig2, timer_thr1, timer_thr2; - -int thr1_cnt, thr1_err; -union sigval thr1_sigval; -struct timespec thr1_ts; - -static void -thr1 (union sigval sigval) -{ - pthread_mutex_lock (&lock); - thr1_err = clock_gettime (TEST_CLOCK, &thr1_ts); - if (thr1_cnt >= 5) - { - struct itimerspec it = { }; - thr1_err |= timer_settime (timer_thr1, 0, &it, NULL); - } - thr1_sigval = sigval; - ++thr1_cnt; - pthread_cond_signal (&cond); - pthread_mutex_unlock (&lock); -} - -int thr2_cnt, thr2_err; -union sigval thr2_sigval; -size_t thr2_guardsize; -struct timespec thr2_ts; - -static void -thr2 (union sigval sigval) -{ - pthread_attr_t nattr; - int err = 0; - size_t guardsize = -1; - int ret = pthread_getattr_np (pthread_self (), &nattr); - if (ret) - { - errno = ret; - printf ("*** pthread_getattr_np failed: %m\n"); - err = 1; - } - else - { - ret = pthread_attr_getguardsize (&nattr, &guardsize); - if (ret) - { - errno = ret; - printf ("*** pthread_attr_getguardsize failed: %m\n"); - err = 1; - } - if (pthread_attr_destroy (&nattr) != 0) - { - puts ("*** pthread_attr_destroy failed"); - err = 1; - } - } - pthread_mutex_lock (&lock); - thr2_err = clock_gettime (TEST_CLOCK, &thr2_ts) | err; - if (thr2_cnt >= 5) - { - struct itimerspec it = { }; - thr2_err |= timer_settime (timer_thr2, 0, &it, NULL); - } - thr2_sigval = sigval; - ++thr2_cnt; - thr2_guardsize = guardsize; - pthread_cond_signal (&cond); - pthread_mutex_unlock (&lock); -} - -volatile int sig1_cnt, sig1_err; -volatile union sigval sig1_sigval; -struct timespec sig1_ts; - -static void -sig1_handler (int sig, siginfo_t *info, void *ctx) -{ - int err = 0; - if (sig != SIGRTMIN) err |= 1 << 0; - if (info->si_signo != SIGRTMIN) err |= 1 << 1; - if (info->si_code != SI_TIMER) err |= 1 << 2; - if (clock_gettime (TEST_CLOCK, &sig1_ts) != 0) - err |= 1 << 3; - if (sig1_cnt >= 5) - { - struct itimerspec it = { }; - if (timer_settime (timer_sig1, 0, &it, NULL)) - err |= 1 << 4; - } - sig1_err |= err; - sig1_sigval = info->si_value; - ++sig1_cnt; -} - -volatile int sig2_cnt, sig2_err; -volatile union sigval sig2_sigval; -struct timespec sig2_ts; - -static void -sig2_handler (int sig, siginfo_t *info, void *ctx) -{ - int err = 0; - if (sig != SIGRTMIN + 1) err |= 1 << 0; - if (info->si_signo != SIGRTMIN + 1) err |= 1 << 1; - if (info->si_code != SI_TIMER) err |= 1 << 2; - if (clock_gettime (TEST_CLOCK, &sig2_ts) != 0) - err |= 1 << 3; - if (sig2_cnt >= 5) - { - struct itimerspec it = { }; - if (timer_settime (timer_sig2, 0, &it, NULL)) - err |= 1 << 4; - } - sig2_err |= err; - sig2_sigval = info->si_value; - ++sig2_cnt; -} - -/* Check if end is later or equal to start + nsec. */ -static int -check_ts (const char *name, const struct timespec *start, - const struct timespec *end, long msec) -{ - struct timespec ts = *start; - - ts.tv_sec += msec / 1000000; - ts.tv_nsec += (msec % 1000000) * 1000; - if (ts.tv_nsec >= 1000000000) - { - ++ts.tv_sec; - ts.tv_nsec -= 1000000000; - } - if (end->tv_sec < ts.tv_sec - || (end->tv_sec == ts.tv_sec && end->tv_nsec < ts.tv_nsec)) - { - printf ("\ -*** timer %s invoked too soon: %ld.%09ld instead of expected %ld.%09ld\n", - name, (long) end->tv_sec, end->tv_nsec, - (long) ts.tv_sec, ts.tv_nsec); - return 1; - } - else - return 0; -} - -#define TIMEOUT 15 -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ - int result = 0; - -#ifdef TEST_CLOCK_MISSING - const char *missing = TEST_CLOCK_MISSING (TEST_CLOCK); - if (missing != NULL) - { - printf ("%s missing, skipping test\n", missing); - return 0; - } -#endif - - struct timespec ts; - if (clock_gettime (TEST_CLOCK, &ts) != 0) - { - printf ("*** clock_gettime failed: %m\n"); - result = 1; - } - else - printf ("clock_gettime returned timespec = { %ld, %ld }\n", - (long) ts.tv_sec, ts.tv_nsec); - - if (clock_getres (TEST_CLOCK, &ts) != 0) - { - printf ("*** clock_getres failed: %m\n"); - result = 1; - } - else - printf ("clock_getres returned timespec = { %ld, %ld }\n", - (long) ts.tv_sec, ts.tv_nsec); - - struct sigevent ev; - memset (&ev, 0x11, sizeof (ev)); - ev.sigev_notify = SIGEV_NONE; - if (timer_create (TEST_CLOCK, &ev, &timer_none) != 0) - { - printf ("*** timer_create for timer_none failed: %m\n"); - return 1; - } - - struct sigaction sa = { .sa_sigaction = sig1_handler, - .sa_flags = SA_SIGINFO }; - sigemptyset (&sa.sa_mask); - sigaction (SIGRTMIN, &sa, NULL); - sa.sa_sigaction = sig2_handler; - sigaction (SIGRTMIN + 1, &sa, NULL); - - memset (&ev, 0x22, sizeof (ev)); - ev.sigev_notify = SIGEV_SIGNAL; - ev.sigev_signo = SIGRTMIN; - ev.sigev_value.sival_ptr = &ev; - if (timer_create (TEST_CLOCK, &ev, &timer_sig1) != 0) - { - printf ("*** timer_create for timer_sig1 failed: %m\n"); - return 1; - } - - memset (&ev, 0x33, sizeof (ev)); - ev.sigev_notify = SIGEV_SIGNAL; - ev.sigev_signo = SIGRTMIN + 1; - ev.sigev_value.sival_int = 163; - if (timer_create (TEST_CLOCK, &ev, &timer_sig2) != 0) - { - printf ("*** timer_create for timer_sig2 failed: %m\n"); - return 1; - } - - memset (&ev, 0x44, sizeof (ev)); - ev.sigev_notify = SIGEV_THREAD; - ev.sigev_notify_function = thr1; - ev.sigev_notify_attributes = NULL; - ev.sigev_value.sival_ptr = &ev; - if (timer_create (TEST_CLOCK, &ev, &timer_thr1) != 0) - { - printf ("*** timer_create for timer_thr1 failed: %m\n"); - return 1; - } - - pthread_attr_t nattr; - if (pthread_attr_init (&nattr) - || pthread_attr_setguardsize (&nattr, 0)) - { - puts ("*** pthread_attr_t setup failed"); - result = 1; - } - - memset (&ev, 0x55, sizeof (ev)); - ev.sigev_notify = SIGEV_THREAD; - ev.sigev_notify_function = thr2; - ev.sigev_notify_attributes = &nattr; - ev.sigev_value.sival_int = 111; - if (timer_create (TEST_CLOCK, &ev, &timer_thr2) != 0) - { - printf ("*** timer_create for timer_thr2 failed: %m\n"); - return 1; - } - - int ret = timer_getoverrun (timer_thr1); - if (ret != 0) - { - if (ret == -1) - printf ("*** timer_getoverrun failed: %m\n"); - else - printf ("*** timer_getoverrun returned %d != 0\n", ret); - result = 1; - } - - struct itimerspec it; - it.it_value.tv_sec = 0; - it.it_value.tv_nsec = -26; - it.it_interval.tv_sec = 0; - it.it_interval.tv_nsec = 0; - if (timer_settime (timer_sig1, 0, &it, NULL) == 0) - { - puts ("*** timer_settime with negative tv_nsec unexpectedly succeeded"); - result = 1; - } - else if (errno != EINVAL) - { - printf ("*** timer_settime with negative tv_nsec did not fail with " - "EINVAL: %m\n"); - result = 1; - } - - it.it_value.tv_nsec = 100000; - it.it_interval.tv_nsec = 1000000000; - if (timer_settime (timer_sig2, 0, &it, NULL) == 0) - { - puts ("\ -*** timer_settime with tv_nsec 1000000000 unexpectedly succeeded"); - result = 1; - } - else if (errno != EINVAL) - { - printf ("*** timer_settime with tv_nsec 1000000000 did not fail with " - "EINVAL: %m\n"); - result = 1; - } - -#if 0 - it.it_value.tv_nsec = 0; - it.it_interval.tv_nsec = -26; - if (timer_settime (timer_thr1, 0, &it, NULL) != 0) - { - printf ("\ -!!! timer_settime with it_value 0 it_interval invalid failed: %m\n"); - /* FIXME: is this mandated by POSIX? - result = 1; */ - } - - it.it_interval.tv_nsec = 3000000000; - if (timer_settime (timer_thr2, 0, &it, NULL) != 0) - { - printf ("\ -!!! timer_settime with it_value 0 it_interval invalid failed: %m\n"); - /* FIXME: is this mandated by POSIX? - result = 1; */ - } -#endif - - struct timespec startts; - if (clock_gettime (TEST_CLOCK, &startts) != 0) - { - printf ("*** clock_gettime failed: %m\n"); - result = 1; - } - - it.it_value.tv_nsec = 100000000; - it.it_interval.tv_nsec = 0; - if (timer_settime (timer_none, 0, &it, NULL) != 0) - { - printf ("*** timer_settime timer_none failed: %m\n"); - result = 1; - } - - it.it_value.tv_nsec = 200000000; - if (timer_settime (timer_thr1, 0, &it, NULL) != 0) - { - printf ("*** timer_settime timer_thr1 failed: %m\n"); - result = 1; - } - - it.it_value.tv_nsec = 300000000; - if (timer_settime (timer_thr2, 0, &it, NULL) != 0) - { - printf ("*** timer_settime timer_thr2 failed: %m\n"); - result = 1; - } - - it.it_value.tv_nsec = 400000000; - if (timer_settime (timer_sig1, 0, &it, NULL) != 0) - { - printf ("*** timer_settime timer_sig1 failed: %m\n"); - result = 1; - } - - it.it_value.tv_nsec = 500000000; - if (TEMP_FAILURE_RETRY (timer_settime (timer_sig2, 0, &it, NULL)) != 0) - { - printf ("*** timer_settime timer_sig2 failed: %m\n"); - result = 1; - } - - pthread_mutex_lock (&lock); - while (thr1_cnt == 0 || thr2_cnt == 0) - pthread_cond_wait (&cond, &lock); - pthread_mutex_unlock (&lock); - - while (sig1_cnt == 0 || sig2_cnt == 0) - { - ts.tv_sec = 0; - ts.tv_nsec = 100000000; - nanosleep (&ts, NULL); - } - - pthread_mutex_lock (&lock); - - if (thr1_cnt != 1) - { - printf ("*** thr1 not called exactly once, but %d times\n", thr1_cnt); - result = 1; - } - else if (thr1_err) - { - puts ("*** an error occurred in thr1"); - result = 1; - } - else if (thr1_sigval.sival_ptr != &ev) - { - printf ("*** thr1_sigval.sival_ptr %p != %p\n", - thr1_sigval.sival_ptr, &ev); - result = 1; - } - else if (check_ts ("thr1", &startts, &thr1_ts, 200000)) - result = 1; - - if (thr2_cnt != 1) - { - printf ("*** thr2 not called exactly once, but %d times\n", thr2_cnt); - result = 1; - } - else if (thr2_err) - { - puts ("*** an error occurred in thr2"); - result = 1; - } - else if (thr2_sigval.sival_int != 111) - { - printf ("*** thr2_sigval.sival_ptr %d != 111\n", thr2_sigval.sival_int); - result = 1; - } - else if (check_ts ("thr2", &startts, &thr2_ts, 300000)) - result = 1; - else if (thr2_guardsize != 0) - { - printf ("*** thr2 guardsize %zd != 0\n", thr2_guardsize); - result = 1; - } - - pthread_mutex_unlock (&lock); - - if (sig1_cnt != 1) - { - printf ("*** sig1 not called exactly once, but %d times\n", sig1_cnt); - result = 1; - } - else if (sig1_err) - { - printf ("*** errors occurred in sig1 handler %x\n", sig1_err); - result = 1; - } - else if (sig1_sigval.sival_ptr != &ev) - { - printf ("*** sig1_sigval.sival_ptr %p != %p\n", - sig1_sigval.sival_ptr, &ev); - result = 1; - } - else if (check_ts ("sig1", &startts, &sig1_ts, 400000)) - result = 1; - - if (sig2_cnt != 1) - { - printf ("*** sig2 not called exactly once, but %d times\n", sig2_cnt); - result = 1; - } - else if (sig2_err) - { - printf ("*** errors occurred in sig2 handler %x\n", sig2_err); - result = 1; - } - else if (sig2_sigval.sival_int != 163) - { - printf ("*** sig2_sigval.sival_ptr %d != 163\n", sig2_sigval.sival_int); - result = 1; - } - else if (check_ts ("sig2", &startts, &sig2_ts, 500000)) - result = 1; - - if (timer_gettime (timer_none, &it) != 0) - { - printf ("*** timer_gettime timer_none failed: %m\n"); - result = 1; - } - else if (it.it_value.tv_sec || it.it_value.tv_nsec - || it.it_interval.tv_sec || it.it_interval.tv_nsec) - { - printf ("\ -*** timer_gettime timer_none returned { %ld.%09ld, %ld.%09ld }\n", - (long) it.it_value.tv_sec, it.it_value.tv_nsec, - (long) it.it_interval.tv_sec, it.it_interval.tv_nsec); - result = 1; - } - - if (clock_gettime (TEST_CLOCK, &startts) != 0) - { - printf ("*** clock_gettime failed: %m\n"); - result = 1; - } - - it.it_value.tv_sec = 1; - it.it_value.tv_nsec = 0; - it.it_interval.tv_sec = 0; - it.it_interval.tv_nsec = 100000000; - if (timer_settime (timer_none, 0, &it, NULL) != 0) - { - printf ("*** timer_settime timer_none failed: %m\n"); - result = 1; - } - - it.it_value.tv_nsec = 100000000; - it.it_interval.tv_nsec = 200000000; - if (timer_settime (timer_thr1, 0, &it, NULL) != 0) - { - printf ("*** timer_settime timer_thr1 failed: %m\n"); - result = 1; - } - - it.it_value.tv_nsec = 200000000; - it.it_interval.tv_nsec = 300000000; - if (timer_settime (timer_thr2, 0, &it, NULL) != 0) - { - printf ("*** timer_settime timer_thr2 failed: %m\n"); - result = 1; - } - - it.it_value.tv_nsec = 300000000; - it.it_interval.tv_nsec = 400000000; - if (timer_settime (timer_sig1, 0, &it, NULL) != 0) - { - printf ("*** timer_settime timer_sig1 failed: %m\n"); - result = 1; - } - - it.it_value.tv_nsec = 400000000; - it.it_interval.tv_nsec = 500000000; - if (TEMP_FAILURE_RETRY (timer_settime (timer_sig2, 0, &it, NULL)) != 0) - { - printf ("*** timer_settime timer_sig2 failed: %m\n"); - result = 1; - } - - pthread_mutex_lock (&lock); - while (thr1_cnt < 6 || thr2_cnt < 6) - pthread_cond_wait (&cond, &lock); - pthread_mutex_unlock (&lock); - - while (sig1_cnt < 6 || sig2_cnt < 6) - { - ts.tv_sec = 0; - ts.tv_nsec = 100000000; - nanosleep (&ts, NULL); - } - - pthread_mutex_lock (&lock); - - if (thr1_err) - { - puts ("*** an error occurred in thr1"); - result = 1; - } - else if (check_ts ("thr1", &startts, &thr1_ts, 1100000 + 4 * 200000)) - result = 1; - - if (thr2_err) - { - puts ("*** an error occurred in thr2"); - result = 1; - } - else if (check_ts ("thr2", &startts, &thr2_ts, 1200000 + 4 * 300000)) - result = 1; - else if (thr2_guardsize != 0) - { - printf ("*** thr2 guardsize %zd != 0\n", thr2_guardsize); - result = 1; - } - - pthread_mutex_unlock (&lock); - - if (sig1_err) - { - printf ("*** errors occurred in sig1 handler %x\n", sig1_err); - result = 1; - } - else if (check_ts ("sig1", &startts, &sig1_ts, 1300000 + 4 * 400000)) - result = 1; - - if (sig2_err) - { - printf ("*** errors occurred in sig2 handler %x\n", sig2_err); - result = 1; - } - else if (check_ts ("sig2", &startts, &sig2_ts, 1400000 + 4 * 500000)) - result = 1; - - if (timer_gettime (timer_none, &it) != 0) - { - printf ("*** timer_gettime timer_none failed: %m\n"); - result = 1; - } - else if (it.it_interval.tv_sec || it.it_interval.tv_nsec != 100000000) - { - printf ("\ -!!! second timer_gettime timer_none returned it_interval %ld.%09ld\n", - (long) it.it_interval.tv_sec, it.it_interval.tv_nsec); - /* FIXME: For now disabled. - result = 1; */ - } - - if (timer_delete (timer_none) != 0) - { - printf ("*** timer_delete for timer_none failed: %m\n"); - result = 1; - } - - if (timer_delete (timer_sig1) != 0) - { - printf ("*** timer_delete for timer_sig1 failed: %m\n"); - result = 1; - } - - if (timer_delete (timer_sig2) != 0) - { - printf ("*** timer_delete for timer_sig2 failed: %m\n"); - result = 1; - } - - if (timer_delete (timer_thr1) != 0) - { - printf ("*** timer_delete for timer_thr1 failed: %m\n"); - result = 1; - } - - if (timer_delete (timer_thr2) != 0) - { - printf ("*** timer_delete for timer_thr2 failed: %m\n"); - result = 1; - } - return result; -} -#else -# define TEST_FUNCTION 0 -#endif - -#include "../test-skeleton.c" diff --git a/test/nptl/tst-timer5.c b/test/nptl/tst-timer5.c deleted file mode 100644 index 6466c8efc..000000000 --- a/test/nptl/tst-timer5.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Timer test using the monotonic clock. */ - -#include -#include - -#if defined CLOCK_MONOTONIC && defined _POSIX_MONOTONIC_CLOCK - -# define TEST_CLOCK CLOCK_MONOTONIC -# define TEST_CLOCK_MISSING(clock) \ - (setup_test () ? "CLOCK_MONOTONIC" : NULL) - -# include - -static int -setup_test (void) -{ - if (sysconf (_SC_MONOTONIC_CLOCK) <= 0) - return 1; - - /* The user-level timers implementation doesn't support CLOCK_MONOTONIC, - even though sysconf claims it will. */ - timer_t t; - if (timer_create (TEST_CLOCK, NULL, &t) != 0) - { - printf ("timer_create: %m\n"); - return 1; - } - timer_delete (t); - - return 0; -} - -# include "tst-timer4.c" - -#else -# define TEST_FUNCTION 0 -# include "../test-skeleton.c" -#endif diff --git a/test/nptl/tst-tls1.c b/test/nptl/tst-tls1.c deleted file mode 100644 index a7cf8f408..000000000 --- a/test/nptl/tst-tls1.c +++ /dev/null @@ -1,121 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - -#if HAVE___THREAD -struct test_s -{ - int a; - int b; -}; - -#define INIT_A 1 -#define INIT_B 42 -/* Deliberately not static. */ -__thread struct test_s s __attribute__ ((tls_model ("initial-exec"))) = -{ - .a = INIT_A, - .b = INIT_B -}; - - -static void * -tf (void *arg) -{ - if (s.a != INIT_A || s.b != INIT_B) - { - puts ("initial value of s in child thread wrong"); - exit (1); - } - - ++s.a; - - return NULL; -} -#endif - - -int -do_test (void) -{ -#if !HAVE___THREAD - - puts ("No __thread support in compiler, test skipped."); - - return 0; -#else - - if (s.a != INIT_A || s.b != INIT_B) - { - puts ("initial value of s in main thread wrong"); - exit (1); - } - - pthread_attr_t a; - - if (pthread_attr_init (&a) != 0) - { - puts ("attr_init failed"); - exit (1); - } - - if (pthread_attr_setstacksize (&a, 1 * 1024 * 1024) != 0) - { - puts ("attr_setstacksize failed"); - return 1; - } - -#define N 10 - int i; - for (i = 0; i < N; ++i) - { -#define M 10 - pthread_t th[M]; - int j; - for (j = 0; j < M; ++j, ++s.a) - if (pthread_create (&th[j], &a, tf, NULL) != 0) - { - puts ("pthread_create failed"); - exit (1); - } - - for (j = 0; j < M; ++j) - if (pthread_join (th[j], NULL) != 0) - { - puts ("pthread_join failed"); - exit (1); - } - } - - if (pthread_attr_destroy (&a) != 0) - { - puts ("attr_destroy failed"); - exit (1); - } - - return 0; -#endif -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-tls2.c b/test/nptl/tst-tls2.c deleted file mode 100644 index f60f4a5e3..000000000 --- a/test/nptl/tst-tls2.c +++ /dev/null @@ -1,215 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#if HAVE___THREAD - -#define N 10 -static pthread_t th[N]; - - -#define CB(n) \ -static void \ -cb##n (void) \ -{ \ - if (th[n] != pthread_self ()) \ - { \ - write (STDOUT_FILENO, "wrong callback\n", 15); \ - _exit (1); \ - } \ -} -CB (0) -CB (1) -CB (2) -CB (3) -CB (4) -CB (5) -CB (6) -CB (7) -CB (8) -CB (9) -static void (*cbs[]) (void) = -{ - cb0, cb1, cb2, cb3, cb4, cb5, cb6, cb7, cb8, cb9 -}; - - -static __thread void (*fp) (void) __attribute__ ((tls_model ("local-exec"))); - - -static sem_t s; - - -#define THE_SIG SIGUSR1 -static void -handler (int sig) -{ - if (sig != THE_SIG) - { - write (STDOUT_FILENO, "wrong signal\n", 13); - _exit (1); - } - - fp (); - - if (sem_post (&s) != 0) - { - write (STDOUT_FILENO, "sem_post failed\n", 16); - _exit (1); - } -} - - -static pthread_barrier_t b; - -#define TOTAL_SIGS 1000 -static int nsigs; - - -static void * -tf (void *arg) -{ - fp = arg; - - pthread_barrier_wait (&b); - - pthread_barrier_wait (&b); - - if (nsigs != TOTAL_SIGS) - { - puts ("barrier_wait prematurely returns"); - exit (1); - } - - return NULL; -} -#endif - -int -do_test (void) -{ -#if !HAVE___THREAD - - puts ("No __thread support in compiler, test skipped."); - - return 0; -#else - - if (pthread_barrier_init (&b, NULL, N + 1) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - if (sem_init (&s, 0, 0) != 0) - { - puts ("sem_init failed"); - exit (1); - } - - struct sigaction sa; - sa.sa_handler = handler; - sigemptyset (&sa.sa_mask); - sa.sa_flags = 0; - if (sigaction (THE_SIG, &sa, NULL) != 0) - { - puts ("sigaction failed"); - exit (1); - } - - pthread_attr_t a; - - if (pthread_attr_init (&a) != 0) - { - puts ("attr_init failed"); - exit (1); - } - - if (pthread_attr_setstacksize (&a, 1 * 1024 * 1024) != 0) - { - puts ("attr_setstacksize failed"); - return 1; - } - - int i; - for (i = 0; i < N; ++i) - if (pthread_create (&th[i], &a, tf, cbs[i]) != 0) - { - puts ("pthread_create failed"); - exit (1); - } - - if (pthread_attr_destroy (&a) != 0) - { - puts ("attr_destroy failed"); - exit (1); - } - - pthread_barrier_wait (&b); - - sigset_t ss; - sigemptyset (&ss); - sigaddset (&ss, THE_SIG); - if (pthread_sigmask (SIG_BLOCK, &ss, NULL) != 0) - { - puts ("pthread_sigmask failed"); - exit (1); - } - - /* Start sending signals. */ - for (i = 0; i < TOTAL_SIGS; ++i) - { - if (kill (getpid (), THE_SIG) != 0) - { - puts ("kill failed"); - exit (1); - } - - if (TEMP_FAILURE_RETRY (sem_wait (&s)) != 0) - { - puts ("sem_wait failed"); - exit (1); - } - - ++nsigs; - } - - pthread_barrier_wait (&b); - - for (i = 0; i < N; ++i) - if (pthread_join (th[i], NULL) != 0) - { - puts ("join failed"); - exit (1); - } - - return 0; -#endif -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-tls3.c b/test/nptl/tst-tls3.c deleted file mode 100644 index 0d4e5140c..000000000 --- a/test/nptl/tst-tls3.c +++ /dev/null @@ -1,224 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define THE_SIG SIGUSR1 - - -#define N 10 -static pthread_t th[N]; - - -#define CB(n) \ -static void \ -cb##n (void) \ -{ \ - if (th[n] != pthread_self ()) \ - { \ - write (STDOUT_FILENO, "wrong callback\n", 15); \ - _exit (1); \ - } \ -} -CB (0) -CB (1) -CB (2) -CB (3) -CB (4) -CB (5) -CB (6) -CB (7) -CB (8) -CB (9) -static void (*cbs[]) (void) = -{ - cb0, cb1, cb2, cb3, cb4, cb5, cb6, cb7, cb8, cb9 -}; - - -sem_t s; - - -pthread_barrier_t b; - -#define TOTAL_SIGS 1000 -int nsigs; - - -int -do_test (void) -{ -#if !HAVE___THREAD - - puts ("No __thread support in compiler, test skipped."); - - return 0; -#else - - if ((uintptr_t) pthread_self () & (TCB_ALIGNMENT - 1)) - { - puts ("initial thread's struct pthread not aligned enough"); - exit (1); - } - - if (pthread_barrier_init (&b, NULL, N + 1) != 0) - { - puts ("barrier_init failed"); - exit (1); - } - - if (sem_init (&s, 0, 0) != 0) - { - puts ("sem_init failed"); - exit (1); - } - - void *h = dlopen ("tst-tls3mod.so", RTLD_LAZY); - if (h == NULL) - { - puts ("dlopen failed"); - exit (1); - } - - void *(*tf) (void *) = dlsym (h, "tf"); - if (tf == NULL) - { - puts ("dlsym for tf failed"); - exit (1); - } - - void (*setup_tf) (pthread_barrier_t*, int*, sem_t*) = dlsym(h, "setup_tf"); - if (setup_tf == NULL) - { - puts ("dlsym for setup_tf failed"); - exit(1); - } - - setup_tf (&b, &nsigs, &s); - - struct sigaction sa; - sa.sa_handler = dlsym (h, "handler"); - if (sa.sa_handler == NULL) - { - puts ("dlsym for handler failed"); - exit (1); - } - sigemptyset (&sa.sa_mask); - sa.sa_flags = 0; - if (sigaction (THE_SIG, &sa, NULL) != 0) - { - puts ("sigaction failed"); - exit (1); - } - - pthread_attr_t a; - - if (pthread_attr_init (&a) != 0) - { - puts ("attr_init failed"); - exit (1); - } - - if (pthread_attr_setstacksize (&a, 1 * 1024 * 1024) != 0) - { - puts ("attr_setstacksize failed"); - return 1; - } - - int r; - for (r = 0; r < 10; ++r) - { - int i; - for (i = 0; i < N; ++i) - if (pthread_create (&th[i], &a, tf, cbs[i]) != 0) - { - puts ("pthread_create failed"); - exit (1); - } - - nsigs = 0; - - pthread_barrier_wait (&b); - - sigset_t ss; - sigemptyset (&ss); - sigaddset (&ss, THE_SIG); - if (pthread_sigmask (SIG_BLOCK, &ss, NULL) != 0) - { - puts ("pthread_sigmask failed"); - exit (1); - } - - /* Start sending signals. */ - for (i = 0; i < TOTAL_SIGS; ++i) - { - if (kill (getpid (), THE_SIG) != 0) - { - puts ("kill failed"); - exit (1); - } - - if (TEMP_FAILURE_RETRY (sem_wait (&s)) != 0) - { - puts ("sem_wait failed"); - exit (1); - } - - ++nsigs; - } - - pthread_barrier_wait (&b); - - if (pthread_sigmask (SIG_UNBLOCK, &ss, NULL) != 0) - { - puts ("pthread_sigmask failed"); - exit (1); - } - - for (i = 0; i < N; ++i) - if (pthread_join (th[i], NULL) != 0) - { - puts ("join failed"); - exit (1); - } - } - - if (pthread_attr_destroy (&a) != 0) - { - puts ("attr_destroy failed"); - exit (1); - } - - return 0; -#endif -} - - -#define TIMEOUT 5 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-tls3mod.c b/test/nptl/tst-tls3mod.c deleted file mode 100644 index 0fd326162..000000000 --- a/test/nptl/tst-tls3mod.c +++ /dev/null @@ -1,105 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if HAVE___THREAD - -static pthread_barrier_t* b = NULL; - -#define TOTAL_SIGS 1000 -static int* nsigs = NULL; - -static sem_t* s = NULL; - -static __thread void (*fp) (void); - - -#define THE_SIG SIGUSR1 -void -handler (int sig) -{ - if (sig != THE_SIG) - { - write (STDOUT_FILENO, "wrong signal\n", 13); - _exit (1); - } - - fp (); - - if (sem_post (s) != 0) - { - write (STDOUT_FILENO, "sem_post failed\n", 16); - _exit (1); - } -} - -void -setup_tf (pthread_barrier_t* t_b, int* t_nsigs, sem_t* t_s) -{ - b = t_b; - nsigs = t_nsigs; - s = t_s; -} - -void * -tf (void *arg) -{ - if (!b || !s || !nsigs) - { - puts ("need to call setup_tf first"); - exit (1); - } - - if ((uintptr_t) pthread_self () & (TCB_ALIGNMENT - 1)) - { - puts ("thread's struct pthread not aligned enough"); - exit (1); - } - - if (fp != NULL) - { - printf("fp=%p\n", (void *)&fp); - puts ("fp not initially NULL"); - exit (1); - } - - fp = arg; - - pthread_barrier_wait (b); - - pthread_barrier_wait (b); - - if (*nsigs != TOTAL_SIGS) - { - puts ("barrier_wait prematurely returns"); - exit (1); - } - - return NULL; -} - -#endif diff --git a/test/nptl/tst-tls4.c b/test/nptl/tst-tls4.c deleted file mode 100644 index 378b13aae..000000000 --- a/test/nptl/tst-tls4.c +++ /dev/null @@ -1,190 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - -#if HAVE___THREAD && defined HAVE_TLS_MODEL_ATTRIBUTE - -#define N 3 - -void (*test1) (void), (*test2) (void); - -pthread_barrier_t b2, b3; - -static void * -tf (void *arg) -{ - int i; - - for (i = 0; i <= (uintptr_t) arg; ++i) - { - int r = pthread_barrier_wait (&b3); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("tf: barrier_wait failed"); - exit (1); - } - } - - test1 (); - - for (i = 0; i < 3; ++i) - { - int r = pthread_barrier_wait (&b3); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("tf: barrier_wait failed"); - exit (1); - } - } - - test2 (); - - for (i = 0; i < 3 - (uintptr_t) arg; ++i) - { - int r = pthread_barrier_wait (&b3); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("tf: barrier_wait failed"); - exit (1); - } - } - - return NULL; -} - -static void * -tf2 (void *arg) -{ - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("tf2: barrier_wait failed"); - exit (1); - } - - int i; - for (i = 0; i < N; ++i) - tf (arg); - return NULL; -} - -int -do_test (void) -{ - pthread_t th[2]; - const char *modules[N] - = { "tst-tls4moda.so", "tst-tls4moda.so", "tst-tls4modb.so" }; - - if (pthread_barrier_init (&b2, NULL, 2) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - if (pthread_barrier_init (&b3, NULL, 3) != 0) - { - puts ("barrier_init failed"); - return 1; - } - - if (pthread_create (&th[0], NULL, tf2, (void *) (uintptr_t) 1)) - { - puts ("pthread_create failed"); - return 1; - } - - int r = pthread_barrier_wait (&b2); - if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) - { - puts ("barrier_wait failed"); - return 1; - } - - int i; - for (i = 0; i < N; ++i) - { - void *h = dlopen (modules[i], RTLD_LAZY); - if (h == NULL) - { - printf ("dlopen failed %s\n", dlerror ()); - return 1; - } - - test1 = dlsym (h, "test1"); - if (test1 == NULL) - { - printf ("dlsym for test1 failed %s\n", dlerror ()); - return 1; - } - - test2 = dlsym (h, "test2"); - if (test2 == NULL) - { - printf ("dlsym for test2 failed %s\n", dlerror ()); - return 1; - } - - if (pthread_create (&th[1], NULL, tf, (void *) (uintptr_t) 2)) - { - puts ("pthread_create failed"); - return 1; - } - - tf ((void *) (uintptr_t) 0); - - if (pthread_join (th[1], NULL) != 0) - { - puts ("join failed"); - return 1; - } - - if (dlclose (h)) - { - puts ("dlclose failed"); - return 1; - } - - printf ("test %d with %s succeeded\n", i, modules[i]); - } - - if (pthread_join (th[0], NULL) != 0) - { - puts ("join failed"); - return 1; - } - - return 0; -} - -#define TIMEOUT 5 -#define TEST_FUNCTION do_test () - -#else - -#define TEST_FUNCTION 0 - -#endif - -#include "../test-skeleton.c" diff --git a/test/nptl/tst-tls4moda.c b/test/nptl/tst-tls4moda.c deleted file mode 100644 index 9a59cf7a2..000000000 --- a/test/nptl/tst-tls4moda.c +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - -#if HAVE___THREAD && defined HAVE_TLS_MODEL_ATTRIBUTE - -static __thread unsigned char foo [32] - __attribute__ ((tls_model ("initial-exec"), aligned (sizeof (void *)))); - -void -test1 (void) -{ - size_t s; - - for (s = 0; s < sizeof (foo); ++s) - { - if (foo [s]) - abort (); - foo [s] = s; - } -} - -void -test2 (void) -{ - size_t s; - - for (s = 0; s < sizeof (foo); ++s) - { - if (foo [s] != s) - abort (); - foo [s] = sizeof (foo) - s; - } -} - -#endif diff --git a/test/nptl/tst-tls4modb.c b/test/nptl/tst-tls4modb.c deleted file mode 100644 index 66044b2ed..000000000 --- a/test/nptl/tst-tls4modb.c +++ /dev/null @@ -1,64 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - -#if HAVE___THREAD && defined HAVE_TLS_MODEL_ATTRIBUTE - -static int i; -int bar; - -static __thread void *foo [32 / sizeof (void *)] - __attribute__ ((tls_model ("initial-exec"), aligned (sizeof (void *)))) - = { &i, &bar }; - -void -test1 (void) -{ - size_t s; - - if (foo [0] != &i || foo [1] != &bar) - abort (); - - foo [0] = NULL; - foo [1] = NULL; - for (s = 0; s < sizeof (foo) / sizeof (void *); ++s) - { - if (foo [s]) - abort (); - foo [s] = &foo[s]; - } -} - -void -test2 (void) -{ - size_t s; - - for (s = 0; s < sizeof (foo) / sizeof (void *); ++s) - { - if (foo [s] != &foo [s]) - abort (); - foo [s] = &foo [s ^ 1]; - } -} - -#endif diff --git a/test/nptl/tst-tls5.c b/test/nptl/tst-tls5.c deleted file mode 100644 index c8afe6a87..000000000 --- a/test/nptl/tst-tls5.c +++ /dev/null @@ -1,118 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -/* Check alignment, overlapping and layout of TLS variables. */ -#include -#include -#include -#include -#include - -#include "tst-tls5.h" - -#ifdef TLS_REGISTER - -struct tls_obj tls_registry[64]; - -static int -tls_addr_cmp (const void *a, const void *b) -{ - if (((struct tls_obj *)a)->addr < ((struct tls_obj *)b)->addr) - return -1; - if (((struct tls_obj *)a)->addr > ((struct tls_obj *)b)->addr) - return 1; - return 0; -} - -static int -do_test (void) -{ - size_t cnt, i; - int res = 0; - uintptr_t min_addr = ~(uintptr_t) 0, max_addr = 0; - - for (cnt = 0; tls_registry[cnt].name; ++cnt); - tls_registry[cnt].name = NULL; - tls_registry[cnt].addr = (uintptr_t) pthread_self (); - tls_registry[cnt].size = sizeof (struct pthread); - tls_registry[cnt++].align = __alignof__ (struct pthread); - - qsort (tls_registry, cnt, sizeof (struct tls_obj), tls_addr_cmp); - - for (i = 0; i < cnt; ++i) - { - printf ("%s%s = %p, size %zd, align %zd", - tls_registry[i].name ? "&" : "", - tls_registry[i].name ?: "pthread_self ()", - (void *) tls_registry[i].addr, - tls_registry[i].size, tls_registry[i].align); - if (tls_registry[i].addr & (tls_registry[i].align - 1)) - { - fputs (", WRONG ALIGNMENT", stdout); - res = 1; - } - if (i > 0 - && (tls_registry[i - 1].addr + tls_registry[i - 1].size - > tls_registry[i].addr)) - { - fputs (", ADDRESS OVERLAP", stdout); - res = 1; - } - puts (""); - if (tls_registry[i].name) - { - min_addr = MIN (tls_registry[i].addr, min_addr); - max_addr = MAX (tls_registry[i].addr + tls_registry[i].size, - max_addr); - } - } - - if (cnt > 1) - { -#if defined(TLS_TCB_AT_TP) - if (tls_registry[cnt - 1].name) - { - puts ("pthread_self () not larger than all TLS addresses"); - res = 1; - } - else - max_addr = MAX (tls_registry[cnt - 1].addr, max_addr); -#elif defined(TLS_DTV_AT_TP) - if (tls_registry[0].name) - { - puts ("pthread_self () not smaller than all TLS addresses"); - res = 1; - } -#else - abort (); -#endif - printf ("Initial TLS used block size %zd\n", - (size_t) (max_addr - min_addr)); - } - return res; -} - -#define TEST_FUNCTION do_test () - -#else - -#define TEST_FUNCTION 0 - -#endif - -#include "../test-skeleton.c" diff --git a/test/nptl/tst-tls5.h b/test/nptl/tst-tls5.h deleted file mode 100644 index b7c14eb82..000000000 --- a/test/nptl/tst-tls5.h +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include -#include - -#if USE_TLS && HAVE___THREAD - -struct tls_obj -{ - const char *name; - uintptr_t addr; - size_t size; - size_t align; -}; -extern struct tls_obj tls_registry[]; - -#define TLS_REGISTER(x) \ -static void __attribute__((constructor)) \ -tls_register_##x (void) \ -{ \ - size_t i; \ - for (i = 0; tls_registry[i].name; ++i); \ - tls_registry[i].name = #x; \ - tls_registry[i].addr = (uintptr_t) &x; \ - tls_registry[i].size = sizeof (x); \ - tls_registry[i].align = __alignof__ (x); \ -} - -#endif diff --git a/test/nptl/tst-tls5mod.c b/test/nptl/tst-tls5mod.c deleted file mode 100644 index 4616a20e9..000000000 --- a/test/nptl/tst-tls5mod.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "tst-tls5.h" - -#ifdef TLS_REGISTER -/* Ensure tls_registry is exported from the binary. */ -void *tst_tls5mod attribute_hidden = tls_registry; -#endif diff --git a/test/nptl/tst-tls5moda.c b/test/nptl/tst-tls5moda.c deleted file mode 100644 index 4644d763a..000000000 --- a/test/nptl/tst-tls5moda.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "tst-tls5.h" - -#ifdef TLS_REGISTER -static __thread char a [32] __attribute__ ((aligned (64))); -TLS_REGISTER (a) -#endif diff --git a/test/nptl/tst-tls5modb.c b/test/nptl/tst-tls5modb.c deleted file mode 100644 index 09b439670..000000000 --- a/test/nptl/tst-tls5modb.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "tst-tls5.h" - -#ifdef TLS_REGISTER -static __thread int b; -TLS_REGISTER (b) -#endif diff --git a/test/nptl/tst-tls5modc.c b/test/nptl/tst-tls5modc.c deleted file mode 100644 index bbd89633d..000000000 --- a/test/nptl/tst-tls5modc.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "tst-tls5.h" - -#ifdef TLS_REGISTER -static __thread int c; -TLS_REGISTER (c) -#endif diff --git a/test/nptl/tst-tls5modd.c b/test/nptl/tst-tls5modd.c deleted file mode 100644 index 8b54d168c..000000000 --- a/test/nptl/tst-tls5modd.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "tst-tls5.h" - -#ifdef TLS_REGISTER -static __thread int d; -TLS_REGISTER (d) -#endif diff --git a/test/nptl/tst-tls5mode.c b/test/nptl/tst-tls5mode.c deleted file mode 100644 index d30b06752..000000000 --- a/test/nptl/tst-tls5mode.c +++ /dev/null @@ -1,8 +0,0 @@ -#include "tst-tls5.h" - -#ifdef TLS_REGISTER -static __thread int e1 = 24; -static __thread char e2 [32] __attribute__ ((aligned (64))); -TLS_REGISTER (e1) -TLS_REGISTER (e2) -#endif diff --git a/test/nptl/tst-tls5modf.c b/test/nptl/tst-tls5modf.c deleted file mode 100644 index 52dcb9495..000000000 --- a/test/nptl/tst-tls5modf.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "tst-tls5.h" - -#ifdef TLS_REGISTER -char tst_tls5modf[60] attribute_hidden = { 26 }; -static __thread int f1 = 24; -static __thread char f2 [32] __attribute__ ((aligned (64))); -TLS_REGISTER (f1) -TLS_REGISTER (f2) -#endif diff --git a/test/nptl/tst-tsd1.c b/test/nptl/tst-tsd1.c deleted file mode 100644 index af46d685b..000000000 --- a/test/nptl/tst-tsd1.c +++ /dev/null @@ -1,117 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - - -static int -do_test (void) -{ - pthread_key_t key1; - pthread_key_t key2; - void *value; - int result = 0; - int err; - - err = pthread_key_create (&key1, NULL); - if (err != 0) - { - printf ("1st key_create failed: %s\n", strerror (err)); - return 1; - } - - /* Initial value must be NULL. */ - value = pthread_getspecific (key1); - if (value != NULL) - { - puts ("1st getspecific != NULL"); - result = 1; - } - - err = pthread_setspecific (key1, (void *) -2l); - if (err != 0) - { - printf ("1st setspecific failed: %s\n", strerror (err)); - return 1; - } - - value = pthread_getspecific (key1); - if (value == NULL) - { - puts ("2nd getspecific == NULL\n"); - result = 1; - } - else if (value != (void *) -2l) - { - puts ("2nd getspecific != -2l\n"); - result = 1; - } - - err = pthread_setspecific (key1, (void *) -3l); - if (err != 0) - { - printf ("2nd setspecific failed: %s\n", strerror (err)); - return 1; - } - - value = pthread_getspecific (key1); - if (value == NULL) - { - puts ("3rd getspecific == NULL\n"); - result = 1; - } - else if (value != (void *) -3l) - { - puts ("3rd getspecific != -2l\n"); - result = 1; - } - - err = pthread_key_delete (key1); - if (err != 0) - { - printf ("key_delete failed: %s\n", strerror (err)); - result = 1; - } - - - err = pthread_key_create (&key2, NULL); - if (err != 0) - { - printf ("2nd key_create failed: %s\n", strerror (err)); - return 1; - } - - if (key1 != key2) - puts ("key1 != key2; no more tests performed"); - else - { - value = pthread_getspecific (key2); - if (value != NULL) - { - puts ("4th getspecific != NULL"); - result = 1; - } - } - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-tsd2.c b/test/nptl/tst-tsd2.c deleted file mode 100644 index 71e793fd4..000000000 --- a/test/nptl/tst-tsd2.c +++ /dev/null @@ -1,96 +0,0 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - - -static int result; - - -static void -destr (void *arg) -{ - if (arg != (void *) -2l) - result = 2; - else - result = 0; -} - - -static void * -tf (void *arg) -{ - pthread_key_t key = (pthread_key_t) (long int) arg; - int err; - - err = pthread_setspecific (key, (void *) -2l); - if (err != 0) - result = 3; - - return NULL; -} - - -static int -do_test (void) -{ - pthread_key_t key; - pthread_t th; - int err; - - err = pthread_key_create (&key, destr); - if (err != 0) - { - printf ("key_create failed: %s\n", strerror (err)); - return 1; - } - - result = 1; - - err = pthread_create (&th, NULL, tf, (void *) (long int) key); - if (err != 0) - { - printf ("create failed: %s\n", strerror (err)); - return 1; - } - - /* Wait for the thread to terminate. */ - err = pthread_join (th, NULL); - if (err != 0) - { - printf ("join failed: %s\n", strerror (err)); - return 1; - } - - if (result == 1) - puts ("destructor not called"); - else if (result == 2) - puts ("destructor got passed a wrong value"); - else if (result == 3) - puts ("setspecific in child failed"); - else if (result != 0) - puts ("result != 0"); - - return result; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-tsd3.c b/test/nptl/tst-tsd3.c deleted file mode 100644 index 4dc46f2a8..000000000 --- a/test/nptl/tst-tsd3.c +++ /dev/null @@ -1,128 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static pthread_key_t key1; -static pthread_key_t key2; - - -static int left; - - -static void -destr1 (void *arg) -{ - if (--left > 0) - { - puts ("set key2"); - - if (pthread_setspecific (key2, (void *) 1l) != 0) - { - puts ("destr1: setspecific failed"); - exit (1); - } - } -} - - -static void -destr2 (void *arg) -{ - if (--left > 0) - { - puts ("set key1"); - - if (pthread_setspecific (key1, (void *) 1l) != 0) - { - puts ("destr2: setspecific failed"); - exit (1); - } - } -} - - -static void * -tf (void *arg) -{ - /* Let the destructors work. */ - left = 7; - - if (pthread_setspecific (key1, (void *) 1l) != 0 - || pthread_setspecific (key2, (void *) 1l) != 0) - { - puts ("tf: setspecific failed"); - exit (1); - } - - return NULL; -} - - -static int -do_test (void) -{ - /* Allocate two keys, both with destructors. */ - if (pthread_key_create (&key1, destr1) != 0 - || pthread_key_create (&key2, destr2) != 0) - { - puts ("key_create failed"); - return 1; - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - return 1; - } - - if (pthread_join (th, NULL) != 0) - { - puts ("join failed"); - return 1; - } - - if (left != 0) - { - printf ("left == %d\n", left); - return 1; - } - - if (pthread_getspecific (key1) != NULL) - { - puts ("key1 data != NULL"); - return 1; - } - if (pthread_getspecific (key2) != NULL) - { - puts ("key2 data != NULL"); - return 1; - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-tsd4.c b/test/nptl/tst-tsd4.c deleted file mode 100644 index cf58d8581..000000000 --- a/test/nptl/tst-tsd4.c +++ /dev/null @@ -1,102 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static pthread_key_t key; - - -static int rounds; - - -static void -destr (void *arg) -{ - ++rounds; - - if (pthread_setspecific (key, (void *) 1l) != 0) - { - puts ("destr: setspecific failed"); - exit (1); - } -} - - -static void * -tf (void *arg) -{ - if (pthread_setspecific (key, (void *) 1l) != 0) - { - puts ("tf: setspecific failed"); - exit (1); - } - - return NULL; -} - - -/* This test check non-standard behavior. The standard does not - require that the implementation has to stop calling TSD destructors - when they are set over and over again. But NPTL does. */ -static int -do_test (void) -{ - /* Allocate two keys, both with destructors. */ - if (pthread_key_create (&key, destr) != 0) - { - puts ("key_create failed"); - return 1; - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - return 1; - } - - if (pthread_join (th, NULL) != 0) - { - puts ("join failed"); - return 1; - } - - if (rounds < PTHREAD_DESTRUCTOR_ITERATIONS) - { - printf ("rounds == %d, PTHREAD_DESTRUCTOR_ITERATIONS = %d\n", - rounds, PTHREAD_DESTRUCTOR_ITERATIONS); - return 1; - } - - if (pthread_getspecific (key) != NULL) - { - puts ("key data != NULL"); - return 1; - } - - return 0; -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-tsd5.c b/test/nptl/tst-tsd5.c deleted file mode 100644 index 8fc7b35ef..000000000 --- a/test/nptl/tst-tsd5.c +++ /dev/null @@ -1,80 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - - -static pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; - - -static void -cl (void *p) -{ - pthread_mutex_unlock (&m); -} - - -static void * -tf (void *arg) -{ - if (pthread_mutex_lock (&m) != 0) - { - puts ("2nd mutex_lock failed"); - exit (1); - } - - exit (0); -} - - -static int -do_test (void) -{ - pthread_key_t k; - if (pthread_key_create (&k, cl) != 0) - { - puts ("key_create failed"); - return 1; - } - if (pthread_setspecific (k, (void *) 1) != 0) - { - puts ("setspecific failed"); - return 1; - } - - if (pthread_mutex_lock (&m) != 0) - { - puts ("1st mutex_lock failed"); - return 1; - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("create failed"); - return 1; - } - - pthread_exit (NULL); -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-tsd6.c b/test/nptl/tst-tsd6.c deleted file mode 100644 index debb1dd36..000000000 --- a/test/nptl/tst-tsd6.c +++ /dev/null @@ -1,89 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#define NKEYS 100 -static pthread_key_t keys[NKEYS]; -static pthread_barrier_t b; - - -static void * -tf (void *arg) -{ - void *res = NULL; - for (int i = 0; i < NKEYS; ++i) - { - void *p = pthread_getspecific (keys[i]); - pthread_setspecific (keys[i], (void *) 7); - if (p != NULL) - res = p; - } - if (arg != NULL) - { - pthread_barrier_wait (arg); - pthread_barrier_wait (arg); - } - return res; -} - - -static int -do_test (void) -{ - pthread_barrier_init (&b, NULL, 2); - - for (int i = 0; i < NKEYS; ++i) - if (pthread_key_create (&keys[i], NULL) != 0) - { - puts ("cannot create keys"); - return 1; - } - - pthread_t th; - if (pthread_create (&th, NULL, tf, &b) != 0) - { - puts ("cannot create thread in parent"); - return 1; - } - - pthread_barrier_wait (&b); - - pid_t pid = fork (); - if (pid == 0) - { - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("cannot create thread in child"); - exit (1); - } - - void *res; - pthread_join (th, &res); - - exit (res != NULL); - } - else if (pid == -1) - { - puts ("cannot create child process"); - return 1; - } - - int s; - if (TEMP_FAILURE_RETRY (waitpid (pid, &s, 0)) != pid) - { - puts ("failing to wait for child process"); - return 1; - } - - pthread_barrier_wait (&b); - pthread_join (th, NULL); - - return !WIFEXITED (s) ? 2 : WEXITSTATUS (s); -} - - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-typesizes.c b/test/nptl/tst-typesizes.c deleted file mode 100644 index 59e948527..000000000 --- a/test/nptl/tst-typesizes.c +++ /dev/null @@ -1,95 +0,0 @@ -/* Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2005. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - -static const struct -{ - const char *name; - size_t expected; - size_t is; -} types[] = - { -#define T(t, c) \ - { #t, c, sizeof (t) } - T (pthread_attr_t, __SIZEOF_PTHREAD_ATTR_T), - T (pthread_mutex_t, __SIZEOF_PTHREAD_MUTEX_T), - T (pthread_mutexattr_t, __SIZEOF_PTHREAD_MUTEXATTR_T), - T (pthread_cond_t, __SIZEOF_PTHREAD_COND_T), - T (pthread_condattr_t, __SIZEOF_PTHREAD_CONDATTR_T), - T (pthread_rwlock_t, __SIZEOF_PTHREAD_RWLOCK_T), - T (pthread_rwlockattr_t, __SIZEOF_PTHREAD_RWLOCKATTR_T), - T (pthread_barrier_t, __SIZEOF_PTHREAD_BARRIER_T), - T (pthread_barrierattr_t, __SIZEOF_PTHREAD_BARRIERATTR_T) - }; - -static int -do_test (void) -{ - int result = 0; - -#define TEST_TYPE(name) \ - printf ("%s: ", #name); \ - if (sizeof (name) != sizeof (((name *) 0)->__size)) \ - { \ - printf ("expected %zu, is %zu\n", \ - sizeof (((name *) 0)->__size), sizeof (name)); \ - result = 1; \ - } \ - else \ - puts ("OK") - - TEST_TYPE (pthread_mutex_t); - TEST_TYPE (pthread_cond_t); - TEST_TYPE (pthread_rwlock_t); - -#define TEST_TYPE2(name, internal) \ - printf ("%s: ", #name); \ - if (sizeof (((name *) 0)->__size) < sizeof (internal)) \ - { \ - printf ("expected %zu, is %zu\n", \ - sizeof (((name *) 0)->__size), sizeof (internal)); \ - result = 1; \ - } \ - else \ - puts ("OK") - - TEST_TYPE2 (pthread_attr_t, struct pthread_attr); - TEST_TYPE2 (pthread_mutexattr_t, struct pthread_mutexattr); - TEST_TYPE2 (pthread_condattr_t, struct pthread_condattr); - TEST_TYPE2 (pthread_rwlockattr_t, struct pthread_rwlockattr); - TEST_TYPE2 (pthread_barrier_t, struct pthread_barrier); - TEST_TYPE2 (pthread_barrierattr_t, struct pthread_barrierattr); - TEST_TYPE2 (sem_t, struct new_sem); - TEST_TYPE2 (sem_t, struct old_sem); - - for (size_t i = 0; i < sizeof (types) / sizeof (types[0]); ++i) - if (types[i].expected != types[i].is) - { - printf ("%s: expected %zu, is %zu\n", - types[i].name, types[i].expected, types[i].is); - result = 1; - } - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-umask1.c b/test/nptl/tst-umask1.c deleted file mode 100644 index 65b4df35b..000000000 --- a/test/nptl/tst-umask1.c +++ /dev/null @@ -1,136 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - - -static struct -{ - int (*fp) (const char *, mode_t); - const char *name; - bool is_fd; -} fcts[] = -{ - { creat, "creat", true }, - { mkdir, "mkdir", false }, - { mkfifo, "mkfifo", false }, -}; -#define nfcts (sizeof (fcts) / sizeof (fcts[0])) - - -static int -work (const char *fname, int mask) -{ - int result = 0; - size_t i; - for (i = 0; i < nfcts; ++i) - { - remove (fname); - int fd = fcts[i].fp (fname, 0777); - if (fd == -1) - { - printf ("cannot %s %s: %m\n", fcts[i].name, fname); - exit (1); - } - if (fcts[i].is_fd) - close (fd); - struct stat st; - if (stat (fname, &st) == -1) - { - printf ("cannot stat %s after %s: %m\n", fname, fcts[i].name); - exit (1); - } - - if ((st.st_mode & mask) != 0) - { - printf ("mask not successful after %s: %x still set\n", - fcts[i].name, (unsigned int) (st.st_mode & mask)); - result = 1; - } - } - - return result; -} - - -static pthread_barrier_t bar; - - -static void * -tf (void *arg) -{ - pthread_barrier_wait (&bar); - - int result = work (arg, 022); - - pthread_barrier_wait (&bar); - - pthread_barrier_wait (&bar); - - return (work (arg, 0) | result) ? (void *) -1l : NULL; -} - - -static int -do_test (const char *fname) -{ - int result = 0; - - umask (0); - result |= work (fname, 0); - - pthread_barrier_init (&bar, NULL, 2); - - pthread_t th; - if (pthread_create (&th, NULL, tf, (void *) fname) != 0) - { - puts ("cannot create thread"); - exit (1); - } - - umask (022); - result |= work (fname, 022); - - pthread_barrier_wait (&bar); - - pthread_barrier_wait (&bar); - - umask (0); - - pthread_barrier_wait (&bar); - - void *res; - if (pthread_join (th, &res) != 0) - { - puts ("join failed"); - exit (1); - } - - remove (fname); - - return result || res != NULL; -} - -#define TEST_FUNCTION do_test (argc < 2 ? "/tmp/tst-umask.tmp" : argv[1]) -#include "../test-skeleton.c" diff --git a/test/nptl/tst-unload.c b/test/nptl/tst-unload.c deleted file mode 100644 index 74a714ecb..000000000 --- a/test/nptl/tst-unload.c +++ /dev/null @@ -1,46 +0,0 @@ -/* Tests for non-unloading of libpthread. - Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation, Inc. - Contributed by Ulrich Drepper , 2000. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; see the file COPYING.LIB. If - not, see . */ - -#include -#include -#include - -static int -do_test (void) -{ - void *p = dlopen ("libpthread.so.1", RTLD_LAZY); - - if (p == NULL) - { - puts ("failed to load libpthread.so.1"); - return 1; - } - - if (dlclose (p) != 0) - { - puts ("dlclose (libpthread.so.1) failed"); - return 1; - } - - puts ("seems to work"); - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-vfork1.c b/test/nptl/tst-vfork1.c deleted file mode 100644 index b3c9d207d..000000000 --- a/test/nptl/tst-vfork1.c +++ /dev/null @@ -1,149 +0,0 @@ -/* Test for vfork functions. - Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - -/* This test relies on non-POSIX functionality since the child - processes call write and getpid. */ -static int -do_test (void) -{ - int result = 0; - int fd[2]; - - if (pipe (fd) == -1) - { - puts ("pipe failed"); - return 1; - } - - /* First vfork() without previous getpid(). */ - pid_t p1; - if ((p1 = vfork ()) == 0) - { - pid_t p = getpid (); - _exit (TEMP_FAILURE_RETRY (write (fd[1], &p, sizeof (p))) != sizeof (p)); - } - else if (p1 == -1) - { - puts ("1st vfork failed"); - result = 1; - } - - pid_t p2 = 0; - if (TEMP_FAILURE_RETRY (read (fd[0], &p2, sizeof (pid_t))) != sizeof (pid_t)) - { - puts ("1st read failed"); - result = 1; - } - int r; - if (TEMP_FAILURE_RETRY (waitpid (p1, &r, 0)) != p1) - { - puts ("1st waitpid failed"); - result = 1; - } - else if (r != 0) - { - puts ("write in 1st child failed"); - result = 1; - } - - /* Main process' ID. */ - pid_t p0 = getpid (); - - /* vfork() again, but after a getpid() in the main process. */ - pid_t p3; - if ((p3 = vfork ()) == 0) - { - pid_t p = getpid (); - _exit (TEMP_FAILURE_RETRY (write (fd[1], &p, sizeof (p))) != sizeof (p)); - } - else if (p1 == -1) - { - puts ("2nd vfork failed"); - result = 1; - } - - pid_t p4; - if (TEMP_FAILURE_RETRY (read (fd[0], &p4, sizeof (pid_t))) != sizeof (pid_t)) - { - puts ("2nd read failed"); - result = 1; - } - if (TEMP_FAILURE_RETRY (waitpid (p3, &r, 0)) != p3) - { - puts ("2nd waitpid failed"); - result = 1; - } - else if (r != 0) - { - puts ("write in 2nd child failed"); - result = 1; - } - - /* And getpid in the main process again. */ - pid_t p5 = getpid (); - - /* Analysis of the results. */ - if (p0 != p5) - { - printf ("p0(%ld) != p5(%ld)\n", (long int) p0, (long int) p5); - result = 1; - } - - if (p0 == p1) - { - printf ("p0(%ld) == p1(%ld)\n", (long int) p0, (long int) p1); - result = 1; - } - - if (p1 != p2) - { - printf ("p1(%ld) != p2(%ld)\n", (long int) p1, (long int) p2); - result = 1; - } - - if (p0 == p3) - { - printf ("p0(%ld) == p3(%ld)\n", (long int) p0, (long int) p3); - result = 1; - } - - if (p3 != p4) - { - printf ("p3(%ld) != p4(%ld)\n", (long int) p3, (long int) p4); - result = 1; - } - - close (fd[0]); - close (fd[1]); - - if (result == 0) - puts ("All OK"); - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-vfork1x.c b/test/nptl/tst-vfork1x.c deleted file mode 100644 index b3c9d207d..000000000 --- a/test/nptl/tst-vfork1x.c +++ /dev/null @@ -1,149 +0,0 @@ -/* Test for vfork functions. - Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - -/* This test relies on non-POSIX functionality since the child - processes call write and getpid. */ -static int -do_test (void) -{ - int result = 0; - int fd[2]; - - if (pipe (fd) == -1) - { - puts ("pipe failed"); - return 1; - } - - /* First vfork() without previous getpid(). */ - pid_t p1; - if ((p1 = vfork ()) == 0) - { - pid_t p = getpid (); - _exit (TEMP_FAILURE_RETRY (write (fd[1], &p, sizeof (p))) != sizeof (p)); - } - else if (p1 == -1) - { - puts ("1st vfork failed"); - result = 1; - } - - pid_t p2 = 0; - if (TEMP_FAILURE_RETRY (read (fd[0], &p2, sizeof (pid_t))) != sizeof (pid_t)) - { - puts ("1st read failed"); - result = 1; - } - int r; - if (TEMP_FAILURE_RETRY (waitpid (p1, &r, 0)) != p1) - { - puts ("1st waitpid failed"); - result = 1; - } - else if (r != 0) - { - puts ("write in 1st child failed"); - result = 1; - } - - /* Main process' ID. */ - pid_t p0 = getpid (); - - /* vfork() again, but after a getpid() in the main process. */ - pid_t p3; - if ((p3 = vfork ()) == 0) - { - pid_t p = getpid (); - _exit (TEMP_FAILURE_RETRY (write (fd[1], &p, sizeof (p))) != sizeof (p)); - } - else if (p1 == -1) - { - puts ("2nd vfork failed"); - result = 1; - } - - pid_t p4; - if (TEMP_FAILURE_RETRY (read (fd[0], &p4, sizeof (pid_t))) != sizeof (pid_t)) - { - puts ("2nd read failed"); - result = 1; - } - if (TEMP_FAILURE_RETRY (waitpid (p3, &r, 0)) != p3) - { - puts ("2nd waitpid failed"); - result = 1; - } - else if (r != 0) - { - puts ("write in 2nd child failed"); - result = 1; - } - - /* And getpid in the main process again. */ - pid_t p5 = getpid (); - - /* Analysis of the results. */ - if (p0 != p5) - { - printf ("p0(%ld) != p5(%ld)\n", (long int) p0, (long int) p5); - result = 1; - } - - if (p0 == p1) - { - printf ("p0(%ld) == p1(%ld)\n", (long int) p0, (long int) p1); - result = 1; - } - - if (p1 != p2) - { - printf ("p1(%ld) != p2(%ld)\n", (long int) p1, (long int) p2); - result = 1; - } - - if (p0 == p3) - { - printf ("p0(%ld) == p3(%ld)\n", (long int) p0, (long int) p3); - result = 1; - } - - if (p3 != p4) - { - printf ("p3(%ld) != p4(%ld)\n", (long int) p3, (long int) p4); - result = 1; - } - - close (fd[0]); - close (fd[1]); - - if (result == 0) - puts ("All OK"); - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-vfork2.c b/test/nptl/tst-vfork2.c deleted file mode 100644 index 6b2d98bac..000000000 --- a/test/nptl/tst-vfork2.c +++ /dev/null @@ -1,198 +0,0 @@ -/* Test for vfork functions. - Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int raise_fail; - -static void -alrm (int sig) -{ - if (raise (SIGUSR1) < 0) - raise_fail = 1; -} - -/* This test relies on non-POSIX functionality since the child - processes call write, nanosleep and getpid. */ -static int -do_test (void) -{ - int result = 0; - int fd[2]; - - signal (SIGUSR1, SIG_IGN); - - struct sigaction sa; - sa.sa_handler = alrm; - sigemptyset (&sa.sa_mask); - sa.sa_flags = 0; - if (sigaction (SIGALRM, &sa, NULL) < 0) - { - puts ("couldn't set up SIGALRM handler"); - return 1; - } - - if (pipe (fd) == -1) - { - puts ("pipe failed"); - return 1; - } - - struct itimerval it; - it.it_value.tv_sec = 0; - it.it_value.tv_usec = 200 * 1000; - it.it_interval = it.it_value; - if (setitimer (ITIMER_REAL, &it, NULL) < 0) - { - puts ("couldn't set up timer"); - return 1; - } - - /* First vfork() without previous getpid(). */ - pid_t p1; - if ((p1 = vfork ()) == 0) - { - pid_t p = getpid (); - - struct timespec ts; - ts.tv_sec = 1; - ts.tv_nsec = 0; - TEMP_FAILURE_RETRY (nanosleep (&ts, &ts)); - _exit (TEMP_FAILURE_RETRY (write (fd[1], &p, sizeof (p))) != sizeof (p)); - } - else if (p1 == -1) - { - puts ("1st vfork failed"); - result = 1; - } - - memset (&it, 0, sizeof (it)); - setitimer (ITIMER_REAL, &it, NULL); - - pid_t p2 = 0; - if (TEMP_FAILURE_RETRY (read (fd[0], &p2, sizeof (pid_t))) != sizeof (pid_t)) - { - puts ("1st read failed"); - result = 1; - } - int r; - if (TEMP_FAILURE_RETRY (waitpid (p1, &r, 0)) != p1) - { - puts ("1st waitpid failed"); - result = 1; - } - else if (r != 0) - { - puts ("write in 1st child failed"); - result = 1; - } - - /* Main process' ID. */ - pid_t p0 = getpid (); - - /* vfork() again, but after a getpid() in the main process. */ - pid_t p3; - if ((p3 = vfork ()) == 0) - { - pid_t p = getpid (); - _exit (TEMP_FAILURE_RETRY (write (fd[1], &p, sizeof (p))) != sizeof (p)); - } - else if (p1 == -1) - { - puts ("2nd vfork failed"); - result = 1; - } - - pid_t p4; - if (TEMP_FAILURE_RETRY (read (fd[0], &p4, sizeof (pid_t))) != sizeof (pid_t)) - { - puts ("2nd read failed"); - result = 1; - } - if (TEMP_FAILURE_RETRY (waitpid (p3, &r, 0)) != p3) - { - puts ("2nd waitpid failed"); - result = 1; - } - else if (r != 0) - { - puts ("write in 2nd child failed"); - result = 1; - } - - /* And getpid in the main process again. */ - pid_t p5 = getpid (); - - /* Analysis of the results. */ - if (p0 != p5) - { - printf ("p0(%ld) != p5(%ld)\n", (long int) p0, (long int) p5); - result = 1; - } - - if (p0 == p1) - { - printf ("p0(%ld) == p1(%ld)\n", (long int) p0, (long int) p1); - result = 1; - } - - if (p1 != p2) - { - printf ("p1(%ld) != p2(%ld)\n", (long int) p1, (long int) p2); - result = 1; - } - - if (p0 == p3) - { - printf ("p0(%ld) == p3(%ld)\n", (long int) p0, (long int) p3); - result = 1; - } - - if (p3 != p4) - { - printf ("p3(%ld) != p4(%ld)\n", (long int) p3, (long int) p4); - result = 1; - } - - close (fd[0]); - close (fd[1]); - - if (raise_fail) - { - puts ("raise failed"); - result = 1; - } - - if (result == 0) - puts ("All OK"); - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/nptl/tst-vfork2x.c b/test/nptl/tst-vfork2x.c deleted file mode 100644 index 6b2d98bac..000000000 --- a/test/nptl/tst-vfork2x.c +++ /dev/null @@ -1,198 +0,0 @@ -/* Test for vfork functions. - Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2004. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int raise_fail; - -static void -alrm (int sig) -{ - if (raise (SIGUSR1) < 0) - raise_fail = 1; -} - -/* This test relies on non-POSIX functionality since the child - processes call write, nanosleep and getpid. */ -static int -do_test (void) -{ - int result = 0; - int fd[2]; - - signal (SIGUSR1, SIG_IGN); - - struct sigaction sa; - sa.sa_handler = alrm; - sigemptyset (&sa.sa_mask); - sa.sa_flags = 0; - if (sigaction (SIGALRM, &sa, NULL) < 0) - { - puts ("couldn't set up SIGALRM handler"); - return 1; - } - - if (pipe (fd) == -1) - { - puts ("pipe failed"); - return 1; - } - - struct itimerval it; - it.it_value.tv_sec = 0; - it.it_value.tv_usec = 200 * 1000; - it.it_interval = it.it_value; - if (setitimer (ITIMER_REAL, &it, NULL) < 0) - { - puts ("couldn't set up timer"); - return 1; - } - - /* First vfork() without previous getpid(). */ - pid_t p1; - if ((p1 = vfork ()) == 0) - { - pid_t p = getpid (); - - struct timespec ts; - ts.tv_sec = 1; - ts.tv_nsec = 0; - TEMP_FAILURE_RETRY (nanosleep (&ts, &ts)); - _exit (TEMP_FAILURE_RETRY (write (fd[1], &p, sizeof (p))) != sizeof (p)); - } - else if (p1 == -1) - { - puts ("1st vfork failed"); - result = 1; - } - - memset (&it, 0, sizeof (it)); - setitimer (ITIMER_REAL, &it, NULL); - - pid_t p2 = 0; - if (TEMP_FAILURE_RETRY (read (fd[0], &p2, sizeof (pid_t))) != sizeof (pid_t)) - { - puts ("1st read failed"); - result = 1; - } - int r; - if (TEMP_FAILURE_RETRY (waitpid (p1, &r, 0)) != p1) - { - puts ("1st waitpid failed"); - result = 1; - } - else if (r != 0) - { - puts ("write in 1st child failed"); - result = 1; - } - - /* Main process' ID. */ - pid_t p0 = getpid (); - - /* vfork() again, but after a getpid() in the main process. */ - pid_t p3; - if ((p3 = vfork ()) == 0) - { - pid_t p = getpid (); - _exit (TEMP_FAILURE_RETRY (write (fd[1], &p, sizeof (p))) != sizeof (p)); - } - else if (p1 == -1) - { - puts ("2nd vfork failed"); - result = 1; - } - - pid_t p4; - if (TEMP_FAILURE_RETRY (read (fd[0], &p4, sizeof (pid_t))) != sizeof (pid_t)) - { - puts ("2nd read failed"); - result = 1; - } - if (TEMP_FAILURE_RETRY (waitpid (p3, &r, 0)) != p3) - { - puts ("2nd waitpid failed"); - result = 1; - } - else if (r != 0) - { - puts ("write in 2nd child failed"); - result = 1; - } - - /* And getpid in the main process again. */ - pid_t p5 = getpid (); - - /* Analysis of the results. */ - if (p0 != p5) - { - printf ("p0(%ld) != p5(%ld)\n", (long int) p0, (long int) p5); - result = 1; - } - - if (p0 == p1) - { - printf ("p0(%ld) == p1(%ld)\n", (long int) p0, (long int) p1); - result = 1; - } - - if (p1 != p2) - { - printf ("p1(%ld) != p2(%ld)\n", (long int) p1, (long int) p2); - result = 1; - } - - if (p0 == p3) - { - printf ("p0(%ld) == p3(%ld)\n", (long int) p0, (long int) p3); - result = 1; - } - - if (p3 != p4) - { - printf ("p3(%ld) != p4(%ld)\n", (long int) p3, (long int) p4); - result = 1; - } - - close (fd[0]); - close (fd[1]); - - if (raise_fail) - { - puts ("raise failed"); - result = 1; - } - - if (result == 0) - puts ("All OK"); - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/plt/check-plt.sh b/test/plt/check-plt.sh deleted file mode 100755 index bedc8fd35..000000000 --- a/test/plt/check-plt.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh -allowed=" -calloc -free -malloc -memalign -realloc -" - -${OBJDUMP:-objdump} -d ${top_builddir:-../..}/lib/libc.so.? | \ -gawk -v allowed="${allowed}" ' -BEGIN { - COUNT = split(" " allowed, ALLOWED); -} - -# Strip away the noise. The name will be like: -# : -# -function symstrip(name) { - return gensub(/.*<([^>@]*).*/, "\\1", "", name); -} - -{ -# Match the start of the symbol disassembly -# 00009720 : -if ($2 ~ />:$/) { - f = symstrip($2); - -} else if ($NF ~ /@plt>/) { - rf = symstrip($NF); - for (a in ALLOWED) { - a = ALLOWED[a]; - if (a == rf) - next; - } - print "Func " f " references " rf; -} -}' | sort -u diff --git a/test/pthread/Makefile b/test/pthread/Makefile deleted file mode 100644 index 97ebee894..000000000 --- a/test/pthread/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc pthread tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/pthread/Makefile.in b/test/pthread/Makefile.in deleted file mode 100644 index bd6b29b0c..000000000 --- a/test/pthread/Makefile.in +++ /dev/null @@ -1,10 +0,0 @@ -# uClibc pthread tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -TESTS_DISABLED += cancellation-points - -EXTRA_LDFLAGS := -lpthread - -LDFLAGS_cancellation-points := -lrt - -CFLAGS_tst-c99 := -std=c99 diff --git a/test/pthread/cancellation-points.c b/test/pthread/cancellation-points.c deleted file mode 100644 index 5453060f7..000000000 --- a/test/pthread/cancellation-points.c +++ /dev/null @@ -1,286 +0,0 @@ -/* - * Make sure functions marked as cancellation points actually are. - * http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_09.html#tag_02_09_05 - */ - -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* take care of optional things ... */ -#define STUB(func, args) static void func args { sleep(0); } -#if defined(__UCLIBC_AIO__) -# include -#else -STUB(aio_suspend, (void *p, int n, const void *p2)) -#endif -#if defined(__UCLIBC_STROPTS__) -# include -#else -STUB(getmsg, (int f, void *p, void *p2, void *p3)) -STUB(getpmsg, (int f, void *p, void *p2, void *p3, void *p4)) -STUB(putmsg, (int f, void *p, void *p2, void *p3)) -STUB(putpmsg, (int f, void *p, void *p2, void *p3, void *p4)) -#endif -#if defined(__UCLIBC__) -STUB(clock_nanosleep, (int i, int f, const void *p, void *p2)) -#endif - -int cnt; -bool ready; - -void cancel_timeout(int sig) -{ - ready = false; -} -void cancel_thread_cleanup(void *arg) -{ - ready = false; -} - -/* some funcs need some help as they wont take NULL args ... */ -const struct timespec zero_sec = { .tv_sec = 0, .tv_nsec = 0 }; - -sem_t sem; -void help_sem_setup(void) -{ - if (sem_init(&sem, 0, 1) == -1) { - perror("sem_init() failed"); - exit(-1); - } -} - -pthread_cond_t cond = PTHREAD_COND_INITIALIZER; -pthread_mutex_t mutex; -void help_pthread_setup(void) -{ - pthread_mutex_init(&mutex, NULL); - pthread_mutex_lock(&mutex); -} - -/* the pthread function that will call the cancellable function over and over */ -#define _MAKE_CANCEL_THREAD_FUNC_EX(func, sysfunc, args, setup) \ -void *cancel_thread_##func(void *arg) \ -{ \ - if (pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL)) { \ - perror("unable to set cancel type to deferred; something is seriously broken"); \ - exit(-1); \ - } \ - pthread_cleanup_push(cancel_thread_cleanup, NULL); \ - setup; \ - ready = true; \ - while (ready) \ - sysfunc args; \ - pthread_cleanup_pop(1); \ - return NULL; \ -} -#define MAKE_CANCEL_THREAD_FUNC_RE(func, sysfunc, args) _MAKE_CANCEL_THREAD_FUNC_EX(func, sysfunc, args, (void)0) -#define MAKE_CANCEL_THREAD_FUNC_EX(func, args, setup) _MAKE_CANCEL_THREAD_FUNC_EX(func, func, args, setup) -#define MAKE_CANCEL_THREAD_FUNC(func, args) _MAKE_CANCEL_THREAD_FUNC_EX(func, func, args, (void)0) - -MAKE_CANCEL_THREAD_FUNC(accept, (-1, NULL, NULL)) -MAKE_CANCEL_THREAD_FUNC(aio_suspend, (NULL, 0, &zero_sec)) -MAKE_CANCEL_THREAD_FUNC(clock_nanosleep, (0, 0, NULL, NULL)) -MAKE_CANCEL_THREAD_FUNC(close, (-1)) -MAKE_CANCEL_THREAD_FUNC(connect, (-1, NULL, 0)) -MAKE_CANCEL_THREAD_FUNC(creat, ("", 0)) -MAKE_CANCEL_THREAD_FUNC(fcntl, (0, F_SETLKW, NULL)) -MAKE_CANCEL_THREAD_FUNC(fdatasync, (-1)) -MAKE_CANCEL_THREAD_FUNC(fsync, (0)) -MAKE_CANCEL_THREAD_FUNC(getmsg, (-1, NULL, NULL, NULL)) -MAKE_CANCEL_THREAD_FUNC(getpmsg, (-1, NULL, NULL, NULL, NULL)) -MAKE_CANCEL_THREAD_FUNC(lockf, (-1, F_TEST, 0)) -MAKE_CANCEL_THREAD_FUNC(mq_receive, (0, NULL, 0, NULL)) -MAKE_CANCEL_THREAD_FUNC(mq_send, (0, NULL, 0, 0)) -MAKE_CANCEL_THREAD_FUNC(mq_timedreceive, (0, NULL, 0, NULL, NULL)) -MAKE_CANCEL_THREAD_FUNC(mq_timedsend, (0, NULL, 0, 0, NULL)) -MAKE_CANCEL_THREAD_FUNC(msgrcv, (-1, NULL, 0, 0, 0)) -MAKE_CANCEL_THREAD_FUNC(msgsnd, (-1, NULL, 0, 0)) -MAKE_CANCEL_THREAD_FUNC(msync, (NULL, 0, 0)) -MAKE_CANCEL_THREAD_FUNC(nanosleep, (NULL, NULL)) -MAKE_CANCEL_THREAD_FUNC(open, ("", 0)) -MAKE_CANCEL_THREAD_FUNC(pause, ()) -MAKE_CANCEL_THREAD_FUNC(poll, (NULL, 0, 0)) -MAKE_CANCEL_THREAD_FUNC(pread, (-1, NULL, 0, 0)) -MAKE_CANCEL_THREAD_FUNC(pselect, (0, NULL, NULL, NULL, NULL, NULL)) -MAKE_CANCEL_THREAD_FUNC_EX(pthread_cond_timedwait, (&cond, &mutex, &zero_sec), help_pthread_setup()) -MAKE_CANCEL_THREAD_FUNC_EX(pthread_cond_wait, (&cond, &mutex), help_pthread_setup()) -/*MAKE_CANCEL_THREAD_FUNC_EX(pthread_join, (0, NULL))*/ -MAKE_CANCEL_THREAD_FUNC(pthread_testcancel, ()) -MAKE_CANCEL_THREAD_FUNC(putmsg, (-1, NULL, NULL, 0)) -MAKE_CANCEL_THREAD_FUNC(putpmsg, (-1, NULL, NULL, 0, 0)) -MAKE_CANCEL_THREAD_FUNC(pwrite, (-1, NULL, 0, 0)) -MAKE_CANCEL_THREAD_FUNC(read, (-1, NULL, 0)) -MAKE_CANCEL_THREAD_FUNC(readv, (-1, NULL, 0)) -MAKE_CANCEL_THREAD_FUNC(recv, (-1, NULL, 0, 0)) -MAKE_CANCEL_THREAD_FUNC(recvfrom, (-1, NULL, 0, 0, NULL, NULL)) -MAKE_CANCEL_THREAD_FUNC(recvmsg, (-1, NULL, 0)) -MAKE_CANCEL_THREAD_FUNC(select, (0, NULL, NULL, NULL, NULL)) -MAKE_CANCEL_THREAD_FUNC_EX(sem_timedwait, (&sem, &zero_sec), help_sem_setup()) -MAKE_CANCEL_THREAD_FUNC_EX(sem_wait, (&sem), help_sem_setup()) -MAKE_CANCEL_THREAD_FUNC(send, (-1, NULL, 0, 0)) -MAKE_CANCEL_THREAD_FUNC(sendmsg, (-1, NULL, 0)) -MAKE_CANCEL_THREAD_FUNC(sendto, (-1, NULL, 0, 0, NULL, 0)) -#ifdef __UCLIBC_SUSV4_LEGACY__ -MAKE_CANCEL_THREAD_FUNC(sigpause, (0)) -#endif -MAKE_CANCEL_THREAD_FUNC(sigsuspend, (NULL)) -MAKE_CANCEL_THREAD_FUNC(sigtimedwait, (NULL, NULL, NULL)) -MAKE_CANCEL_THREAD_FUNC(sigwait, (NULL, NULL)) -MAKE_CANCEL_THREAD_FUNC(sigwaitinfo, (NULL, NULL)) -MAKE_CANCEL_THREAD_FUNC(sleep, (0)) -MAKE_CANCEL_THREAD_FUNC(system, ("")) -MAKE_CANCEL_THREAD_FUNC(tcdrain, (-1)) -#ifdef __UCLIBC_SUSV3_LEGACY__ -MAKE_CANCEL_THREAD_FUNC(usleep, (0)) -#endif -MAKE_CANCEL_THREAD_FUNC(wait, (NULL)) -MAKE_CANCEL_THREAD_FUNC(waitid, (0, 0, NULL, 0)) -MAKE_CANCEL_THREAD_FUNC(waitpid, (-1, NULL, 0)) -MAKE_CANCEL_THREAD_FUNC(write, (-1, NULL, 0)) -MAKE_CANCEL_THREAD_FUNC(writev, (-1, NULL, 0)) - -/* test a few variations that should not cancel ... */ -MAKE_CANCEL_THREAD_FUNC_RE(fcntl_another, fcntl, (0, F_GETFD)) - -/* main test that creates thread, cancels it, etc... */ -int _test_func(const char *func_name, void *(*func)(void*), const int should_cancel) -{ - int ret; - pthread_t cancel_thread_id; - - ++cnt; - - printf("testing %-30s ", func_name); - - printf("."); - if (signal(SIGALRM, cancel_timeout) == SIG_ERR) { - perror("unable to bind SIGALRM"); - exit(-1); - } - - printf("."); - ready = false; - pthread_create(&cancel_thread_id, NULL, func, NULL); - - printf("."); - while (!ready) - sched_yield(); - - printf("."); - if (pthread_cancel(cancel_thread_id)) { - perror("unable to cancel thread"); - exit(-1); - } - - printf("."); - alarm(5); - while (ready) - sched_yield(); - - printf("."); - ret = (!!!alarm(0) == should_cancel); - - if (ret) - printf(" failed ;(\n"); - else - printf(" OK!\n"); - - return ret; -} -#define TEST_FUNC(f) _test_func(#f, cancel_thread_##f, 1) -#define TEST_FUNC_RE(f) _test_func(#f, cancel_thread_##f, 0) - -int main(int argc, char *argv[]) -{ - int ret = 0; - setbuf(stdout, NULL); - cnt = 0; - - ret += TEST_FUNC(accept); - ret += TEST_FUNC(aio_suspend); - ret += TEST_FUNC(clock_nanosleep); - ret += TEST_FUNC(close); - ret += TEST_FUNC(connect); - ret += TEST_FUNC(creat); - ret += TEST_FUNC(fcntl); - ret += TEST_FUNC(fdatasync); - ret += TEST_FUNC(fsync); - ret += TEST_FUNC(getmsg); - ret += TEST_FUNC(getpmsg); - ret += TEST_FUNC(lockf); - ret += TEST_FUNC(mq_receive); - ret += TEST_FUNC(mq_send); - ret += TEST_FUNC(mq_timedreceive); - ret += TEST_FUNC(mq_timedsend); - ret += TEST_FUNC(msgrcv); - ret += TEST_FUNC(msgsnd); - ret += TEST_FUNC(msync); - ret += TEST_FUNC(nanosleep); - ret += TEST_FUNC(open); - ret += TEST_FUNC(pause); - ret += TEST_FUNC(poll); - ret += TEST_FUNC(pread); - ret += TEST_FUNC(pselect); - ret += TEST_FUNC(pthread_cond_timedwait); - ret += TEST_FUNC(pthread_cond_wait); - /*ret += TEST_FUNC(pthread_join);*/ - ret += TEST_FUNC(pthread_testcancel); - ret += TEST_FUNC(putmsg); - ret += TEST_FUNC(putpmsg); - ret += TEST_FUNC(pwrite); - ret += TEST_FUNC(read); - ret += TEST_FUNC(readv); - ret += TEST_FUNC(recv); - ret += TEST_FUNC(recvfrom); - ret += TEST_FUNC(recvmsg); - ret += TEST_FUNC(select); - ret += TEST_FUNC(sem_timedwait); - ret += TEST_FUNC(sem_wait); - ret += TEST_FUNC(send); - ret += TEST_FUNC(sendmsg); - ret += TEST_FUNC(sendto); - ret += TEST_FUNC(sigpause); - ret += TEST_FUNC(sigsuspend); - ret += TEST_FUNC(sigtimedwait); - ret += TEST_FUNC(sigwait); - ret += TEST_FUNC(sigwaitinfo); - ret += TEST_FUNC(sleep); - ret += TEST_FUNC(system); - ret += TEST_FUNC(tcdrain); -#ifdef __UCLIBC_SUSV3_LEGACY__ - ret += TEST_FUNC(usleep); -#endif - ret += TEST_FUNC(wait); - ret += TEST_FUNC(waitid); - ret += TEST_FUNC(waitpid); - ret += TEST_FUNC(write); - ret += TEST_FUNC(writev); - - ret += TEST_FUNC_RE(fcntl_another); - - if (ret) - printf("!!! %i / %i tests failed\n", ret, cnt); - - return ret; -} diff --git a/test/pthread/ex1.c b/test/pthread/ex1.c deleted file mode 100644 index 4d9de03d8..000000000 --- a/test/pthread/ex1.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Creates two threads, one printing 10000 "a"s, the other printing - 10000 "b"s. - Illustrates: thread creation, thread joining. */ - -#include -#include -#include -#include "pthread.h" - -static void *process(void * arg) -{ - int i; - printf("Starting process %s\n", (char *)arg); - for (i = 0; i < 10000; i++) - write(1, (char *) arg, 1); - return NULL; -} - -#define sucfail(r) (r != 0 ? "failed" : "succeeded") -int main(void) -{ - int pret, ret = 0; - pthread_t th_a, th_b; - void *retval; - - ret += (pret = pthread_create(&th_a, NULL, process, (void *)"a")); - printf("create a %s %d\n", sucfail(pret), pret); - ret += (pret = pthread_create(&th_b, NULL, process, (void *)"b")); - printf("create b %s %d\n", sucfail(pret), pret); - ret += (pret = pthread_join(th_a, &retval)); - printf("join a %s %d\n", sucfail(pret), pret); - ret += (pret = pthread_join(th_b, &retval)); - printf("join b %s %d\n", sucfail(pret), pret); - return ret; -} diff --git a/test/pthread/ex2.c b/test/pthread/ex2.c deleted file mode 100644 index 98bd4b347..000000000 --- a/test/pthread/ex2.c +++ /dev/null @@ -1,113 +0,0 @@ -/* The classic producer-consumer example. - Illustrates mutexes and conditions. - All integers between 0 and 9999 should be printed exactly twice, - once to the right of the arrow and once to the left. */ - -#include -#include "pthread.h" - -#define BUFFER_SIZE 16 - -/* Circular buffer of integers. */ - -struct prodcons { - int buffer[BUFFER_SIZE]; /* the actual data */ - pthread_mutex_t lock; /* mutex ensuring exclusive access to buffer */ - int readpos, writepos; /* positions for reading and writing */ - pthread_cond_t notempty; /* signaled when buffer is not empty */ - pthread_cond_t notfull; /* signaled when buffer is not full */ -}; - -/* Initialize a buffer */ - -static void init(struct prodcons * b) -{ - pthread_mutex_init(&b->lock, NULL); - pthread_cond_init(&b->notempty, NULL); - pthread_cond_init(&b->notfull, NULL); - b->readpos = 0; - b->writepos = 0; -} - -/* Store an integer in the buffer */ - -static void put(struct prodcons * b, int data) -{ - pthread_mutex_lock(&b->lock); - /* Wait until buffer is not full */ - while ((b->writepos + 1) % BUFFER_SIZE == b->readpos) { - pthread_cond_wait(&b->notfull, &b->lock); - /* pthread_cond_wait reacquired b->lock before returning */ - } - /* Write the data and advance write pointer */ - b->buffer[b->writepos] = data; - b->writepos++; - if (b->writepos >= BUFFER_SIZE) b->writepos = 0; - /* Signal that the buffer is now not empty */ - pthread_cond_signal(&b->notempty); - pthread_mutex_unlock(&b->lock); -} - -/* Read and remove an integer from the buffer */ - -static int get(struct prodcons * b) -{ - int data; - pthread_mutex_lock(&b->lock); - /* Wait until buffer is not empty */ - while (b->writepos == b->readpos) { - pthread_cond_wait(&b->notempty, &b->lock); - } - /* Read the data and advance read pointer */ - data = b->buffer[b->readpos]; - b->readpos++; - if (b->readpos >= BUFFER_SIZE) b->readpos = 0; - /* Signal that the buffer is now not full */ - pthread_cond_signal(&b->notfull); - pthread_mutex_unlock(&b->lock); - return data; -} - -/* A test program: one thread inserts integers from 1 to 10000, - the other reads them and prints them. */ - -#define OVER (-1) - -struct prodcons buffer; - -static void * producer(void * data) -{ - int n; - for (n = 0; n < 10000; n++) { - printf("%d --->\n", n); - put(&buffer, n); - } - put(&buffer, OVER); - return NULL; -} - -static void * consumer(void * data) -{ - int d; - while (1) { - d = get(&buffer); - if (d == OVER) break; - printf("---> %d\n", d); - } - return NULL; -} - -int main(void) -{ - pthread_t th_a, th_b; - void * retval; - - init(&buffer); - /* Create the threads */ - pthread_create(&th_a, NULL, producer, 0); - pthread_create(&th_b, NULL, consumer, 0); - /* Wait until producer and consumer finish. */ - pthread_join(th_a, &retval); - pthread_join(th_b, &retval); - return 0; -} diff --git a/test/pthread/ex3.c b/test/pthread/ex3.c deleted file mode 100644 index 8ef779789..000000000 --- a/test/pthread/ex3.c +++ /dev/null @@ -1,152 +0,0 @@ -/* Multi-thread searching. - Illustrates: thread cancellation, cleanup handlers. */ - -#include -#include -#include -#include -#include -#include - -/* Defines the number of searching threads */ -#define NUM_THREADS 5 - -/* Function prototypes */ -void *search(void *); -void print_it(void *); - -/* Global variables */ -pthread_t threads[NUM_THREADS]; -pthread_mutex_t lock; -int tries; -volatile int started; - -int main(int argc, char ** argv) -{ - unsigned long i; - unsigned long pid; - - /* create a number to search for */ - pid = getpid(); - printf("Searching for the number = %ld...\n", pid); - - /* Initialize the mutex lock */ - pthread_mutex_init(&lock, NULL); - - /* Create the searching threads */ - for (started=0; started -#include -#include -#include -#include - -/* This is a typical example of a library function that uses - static variables to accumulate results between calls. - Here, it just returns the concatenation of all string arguments - that were given to it. */ - -#if 0 - -static char * str_accumulate(char * s) -{ - static char accu[1024] = { 0 }; - strcat(accu, s); - return accu; -} - -#endif - -/* Of course, this cannot be used in a multi-threaded program - because all threads store "accu" at the same location. - So, we'll use thread-specific data to have a different "accu" - for each thread. */ - -/* Key identifying the thread-specific data */ -static pthread_key_t str_key; -/* "Once" variable ensuring that the key for str_alloc will be allocated - exactly once. */ -static pthread_once_t str_alloc_key_once = PTHREAD_ONCE_INIT; - -/* Forward functions */ -static void str_alloc_key(void); -static void str_alloc_destroy_accu(void * accu); - -/* Thread-safe version of str_accumulate */ - -static char * str_accumulate(const char * s) -{ - char * accu; - - /* Make sure the key is allocated */ - pthread_once(&str_alloc_key_once, str_alloc_key); - /* Get the thread-specific data associated with the key */ - accu = (char *) pthread_getspecific(str_key); - /* It's initially NULL, meaning that we must allocate the buffer first. */ - if (accu == NULL) { - accu = malloc(1024); - if (accu == NULL) return NULL; - accu[0] = 0; - /* Store the buffer pointer in the thread-specific data. */ - pthread_setspecific(str_key, (void *) accu); - printf("Thread %lx: allocating buffer at %p\n", pthread_self(), accu); - } - /* Now we can use accu just as in the non thread-safe code. */ - strcat(accu, s); - return accu; -} - -/* Function to allocate the key for str_alloc thread-specific data. */ - -static void str_alloc_key(void) -{ - pthread_key_create(&str_key, str_alloc_destroy_accu); - printf("Thread %lx: allocated key %d\n", pthread_self(), str_key); -} - -/* Function to free the buffer when the thread exits. */ -/* Called only when the thread-specific data is not NULL. */ - -static void str_alloc_destroy_accu(void * accu) -{ - printf("Thread %lx: freeing buffer at %p\n", pthread_self(), accu); - free(accu); -} - -/* Test program */ - -static void * process(void * arg) -{ - char * res; - res = str_accumulate("Result of "); - res = str_accumulate((char *) arg); - res = str_accumulate(" thread"); - printf("Thread %lx: \"%s\"\n", pthread_self(), res); - return NULL; -} - -int main(int argc, char ** argv) -{ - char * res; - pthread_t th1, th2; - - res = str_accumulate("Result of "); - pthread_create(&th1, NULL, process, (void *) "first"); - pthread_create(&th2, NULL, process, (void *) "second"); - res = str_accumulate("initial thread"); - printf("Thread %lx: \"%s\"\n", pthread_self(), res); - pthread_join(th1, NULL); - pthread_join(th2, NULL); - exit(0); -} diff --git a/test/pthread/ex5.c b/test/pthread/ex5.c deleted file mode 100644 index 7a293eb01..000000000 --- a/test/pthread/ex5.c +++ /dev/null @@ -1,102 +0,0 @@ -/* The classic producer-consumer example, implemented with semaphores. - All integers between 0 and 9999 should be printed exactly twice, - once to the right of the arrow and once to the left. */ - -#include -#include "pthread.h" -#include "semaphore.h" - -#define BUFFER_SIZE 16 - -/* Circular buffer of integers. */ - -struct prodcons { - int buffer[BUFFER_SIZE]; /* the actual data */ - int readpos, writepos; /* positions for reading and writing */ - sem_t sem_read; /* number of elements available for reading */ - sem_t sem_write; /* number of locations available for writing */ -}; - -/* Initialize a buffer */ - -static void init(struct prodcons * b) -{ - sem_init(&b->sem_write, 0, BUFFER_SIZE - 1); - sem_init(&b->sem_read, 0, 0); - b->readpos = 0; - b->writepos = 0; -} - -/* Store an integer in the buffer */ - -static void put(struct prodcons * b, int data) -{ - /* Wait until buffer is not full */ - sem_wait(&b->sem_write); - /* Write the data and advance write pointer */ - b->buffer[b->writepos] = data; - b->writepos++; - if (b->writepos >= BUFFER_SIZE) b->writepos = 0; - /* Signal that the buffer contains one more element for reading */ - sem_post(&b->sem_read); -} - -/* Read and remove an integer from the buffer */ - -static int get(struct prodcons * b) -{ - int data; - /* Wait until buffer is not empty */ - sem_wait(&b->sem_read); - /* Read the data and advance read pointer */ - data = b->buffer[b->readpos]; - b->readpos++; - if (b->readpos >= BUFFER_SIZE) b->readpos = 0; - /* Signal that the buffer has now one more location for writing */ - sem_post(&b->sem_write); - return data; -} - -/* A test program: one thread inserts integers from 1 to 10000, - the other reads them and prints them. */ - -#define OVER (-1) - -struct prodcons buffer; - -static void * producer(void * data) -{ - int n; - for (n = 0; n < 10000; n++) { - printf("%d --->\n", n); - put(&buffer, n); - } - put(&buffer, OVER); - return NULL; -} - -static void * consumer(void * data) -{ - int d; - while (1) { - d = get(&buffer); - if (d == OVER) break; - printf("---> %d\n", d); - } - return NULL; -} - -int main(void) -{ - pthread_t th_a, th_b; - void * retval; - - init(&buffer); - /* Create the threads */ - pthread_create(&th_a, NULL, producer, 0); - pthread_create(&th_b, NULL, consumer, 0); - /* Wait until producer and consumer finish. */ - pthread_join(th_a, &retval); - pthread_join(th_b, &retval); - return 0; -} diff --git a/test/pthread/ex6.c b/test/pthread/ex6.c deleted file mode 100644 index ffb628771..000000000 --- a/test/pthread/ex6.c +++ /dev/null @@ -1,44 +0,0 @@ -#include -#include -#include -#include -#include - -static void * -test_thread (void *v_param) -{ - return NULL; -} - -int -main (void) -{ - unsigned long count; - struct timespec ts; - ts.tv_sec = 0; - ts.tv_nsec = 10 * 1000; - - setvbuf (stdout, NULL, _IONBF, 0); - - for (count = 0; count < 2000; ++count) - { - pthread_t thread; - int status; - - status = pthread_create (&thread, NULL, test_thread, NULL); - if (status != 0) - { - printf ("status = %d, count = %lu: %s\n", status, count, - strerror (errno)); - return 1; - } - else - { - printf ("count = %lu\n", count); - } - /* pthread_detach (thread); */ - pthread_join (thread, NULL); - nanosleep (&ts, NULL); - } - return 0; -} diff --git a/test/pthread/ex7.c b/test/pthread/ex7.c deleted file mode 100644 index 8eeb9a2e5..000000000 --- a/test/pthread/ex7.c +++ /dev/null @@ -1,106 +0,0 @@ -/* ex7 - * - * Test case that illustrates a timed wait on a condition variable. - */ - -#include -#include -#include -#include -#include -#include - -/* Our event variable using a condition variable contruct. */ -typedef struct { - pthread_mutex_t mutex; - pthread_cond_t cond; - int flag; -} event_t; - - -/* Global event to signal main thread the timeout of the child thread. */ -event_t main_event; - - -static void * -test_thread (void *ms_param) -{ - unsigned long status = 0; - event_t foo; - struct timespec timeout; - struct timeval now; - long ms = (long) ms_param; - - /* initialize cond var */ - pthread_cond_init(&foo.cond, NULL); - pthread_mutex_init(&foo.mutex, NULL); - foo.flag = 0; - - /* set the time out value */ - printf("waiting %ld ms ...\n", ms); - gettimeofday(&now, NULL); - timeout.tv_sec = now.tv_sec + ms/1000 + (now.tv_usec + (ms%1000)*1000)/1000000; - timeout.tv_nsec = ((now.tv_usec + (ms%1000)*1000) % 1000000) * 1000; - - /* Just use this to test the time out. The cond var is never signaled. */ - pthread_mutex_lock(&foo.mutex); - while (foo.flag == 0 && status != ETIMEDOUT) { - status = pthread_cond_timedwait(&foo.cond, &foo.mutex, &timeout); - } - pthread_mutex_unlock(&foo.mutex); - - /* post the main event */ - pthread_mutex_lock(&main_event.mutex); - main_event.flag = 1; - pthread_cond_signal(&main_event.cond); - pthread_mutex_unlock(&main_event.mutex); - - /* that's it, bye */ - return (void*) status; -} - -int -main (void) -{ - unsigned long count; - struct timespec ts; - ts.tv_sec = 0; - ts.tv_nsec = 10 * 1000; - - setvbuf (stdout, NULL, _IONBF, 0); - - /* initialize main event cond var */ - pthread_cond_init(&main_event.cond, NULL); - pthread_mutex_init(&main_event.mutex, NULL); - main_event.flag = 0; - - for (count = 0; count < 20; ++count) - { - pthread_t thread; - int status; - - /* pass down the milli-second timeout in the void* param */ - status = pthread_create (&thread, NULL, test_thread, (void*) (count*100)); - if (status != 0) { - printf ("status = %d, count = %lu: %s\n", status, count, - strerror (errno)); - return 1; - } - else { - - /* wait for the event posted by the child thread */ - pthread_mutex_lock(&main_event.mutex); - while (main_event.flag == 0) { - pthread_cond_wait(&main_event.cond, &main_event.mutex); - } - main_event.flag = 0; - pthread_mutex_unlock(&main_event.mutex); - - printf ("count = %lu\n", count); - } - - nanosleep (&ts, NULL); - } - - return 0; -} diff --git a/test/pthread/ex8-mtx-odd.c b/test/pthread/ex8-mtx-odd.c deleted file mode 100644 index 791b2c2ac..000000000 --- a/test/pthread/ex8-mtx-odd.c +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include -#include -#include -#include - - -static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; - -static int -do_test (void) -{ - - if (pthread_mutex_lock (&lock) != 0) - { - puts ("mutex_lock failed"); - exit (1); - } - - if (pthread_mutex_unlock (&lock) != 0) - { - puts ("1st mutex_unlock failed"); - exit (1); - } - - if (pthread_mutex_unlock (&lock) != 0) - { - puts ("2nd mutex_unlock failed"); - exit (1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/pthread/tst-c99.c b/test/pthread/tst-c99.c deleted file mode 100644 index 3cc91b1b7..000000000 --- a/test/pthread/tst-c99.c +++ /dev/null @@ -1,2 +0,0 @@ -#include -int main(void) { return 0; } diff --git a/test/pthread/tst-join2.c b/test/pthread/tst-join2.c deleted file mode 100644 index 6d994f39e..000000000 --- a/test/pthread/tst-join2.c +++ /dev/null @@ -1,103 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; see the file COPYING.LIB. If - not, see .  */ - -#include -#include -#include -#include -#include -#include - - -static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; - - -static void * -tf (void *arg) -{ - if (pthread_mutex_lock (&lock) != 0) - { - puts ("child: mutex_lock failed"); - return NULL; - } - - return (void *) 42l; -} - - -static int -do_test (void) -{ - pthread_t th; - - if (pthread_mutex_lock (&lock) != 0) - { - puts ("mutex_lock failed"); - exit (1); - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("mutex_create failed"); - exit (1); - } - - void *status; - int val = pthread_tryjoin_np (th, &status); - if (val == 0) - { - puts ("1st tryjoin succeeded"); - exit (1); - } - else if (val != EBUSY) - { - puts ("1st tryjoin didn't return EBUSY"); - exit (1); - } - - if (pthread_mutex_unlock (&lock) != 0) - { - puts ("mutex_unlock failed"); - exit (1); - } - - while ((val = pthread_tryjoin_np (th, &status)) != 0) - { - if (val != EBUSY) - { - printf ("tryjoin returned %s (%d), expected only 0 or EBUSY\n", - strerror (val), val); - exit (1); - } - - /* Delay minimally. */ - struct timespec ts = { .tv_sec = 0, .tv_nsec = 10000000 }; - nanosleep (&ts, NULL); - } - - if (status != (void *) 42l) - { - printf ("return value %p, expected %p\n", status, (void *) 42l); - exit (1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/pthread/tst-join3.c b/test/pthread/tst-join3.c deleted file mode 100644 index 7816f4d22..000000000 --- a/test/pthread/tst-join3.c +++ /dev/null @@ -1,122 +0,0 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; see the file COPYING.LIB. If - not, see .  */ - -#include -#include -#include -#include -#include -#include - - -static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; - - -static void * -tf (void *arg) -{ - if (pthread_mutex_lock (&lock) != 0) - { - puts ("child: mutex_lock failed"); - return NULL; - } - - return (void *) 42l; -} - - -static int -do_test (void) -{ - pthread_t th; - - if (pthread_mutex_lock (&lock) != 0) - { - puts ("mutex_lock failed"); - exit (1); - } - - if (pthread_create (&th, NULL, tf, NULL) != 0) - { - puts ("mutex_create failed"); - exit (1); - } - - void *status; - struct timespec ts; - struct timeval tv; - (void) gettimeofday (&tv, NULL); - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ts.tv_nsec += 200000000; - if (ts.tv_nsec >= 1000000000) - { - ts.tv_nsec -= 1000000000; - ++ts.tv_sec; - } - int val = pthread_timedjoin_np (th, &status, &ts); - if (val == 0) - { - puts ("1st timedjoin succeeded"); - exit (1); - } - else if (val != ETIMEDOUT) - { - puts ("1st timedjoin didn't return ETIMEDOUT"); - exit (1); - } - - if (pthread_mutex_unlock (&lock) != 0) - { - puts ("mutex_unlock failed"); - exit (1); - } - - while (1) - { - (void) gettimeofday (&tv, NULL); - TIMEVAL_TO_TIMESPEC (&tv, &ts); - ts.tv_nsec += 200000000; - if (ts.tv_nsec >= 1000000000) - { - ts.tv_nsec -= 1000000000; - ++ts.tv_sec; - } - - val = pthread_timedjoin_np (th, &status, &ts); - if (val == 0) - break; - - if (val != ETIMEDOUT) - { - printf ("timedjoin returned %s (%d), expected only 0 or ETIMEDOUT\n", - strerror (val), val); - exit (1); - } - } - - if (status != (void *) 42l) - { - printf ("return value %p, expected %p\n", status, (void *) 42l); - exit (1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/pthread/tst-too-many-cleanups.c b/test/pthread/tst-too-many-cleanups.c deleted file mode 100644 index 7828c5036..000000000 --- a/test/pthread/tst-too-many-cleanups.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - * This illustrates the bug where the cleanup function - * of a thread may be called too many times. - * - * main thread: - * - grab mutex - * - spawn thread1 - * - go to sleep - * thread1: - * - register cleanup handler via pthread_cleanup_push() - * - try to grab mutex and sleep - * main: - * - kill thread1 - * - go to sleep - * thread1 cleanup handler: - * - try to grab mutex and sleep - * main: - * - kill thread1 - * - go to sleep - * thread1 cleanup handler: - * - wrongly called again - */ - -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif - -#include -#include -#include -#include -#include - -#define warn(fmt, args...) fprintf(stderr, "[%p] " fmt, (void*)pthread_self(), ## args) -#define warnf(fmt, args...) warn("%s:%i: " fmt, __FUNCTION__, __LINE__, ## args) - -int ok_to_kill_thread; - -static void thread_killed(void *arg); - -static void *KillMeThread(void *thread_par) -{ - pthread_t pthread_id; - - warnf("Starting child thread\n"); - - pthread_id = pthread_self(); - pthread_cleanup_push(thread_killed, (void *)pthread_id); - - pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); - pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); - - /* main code */ - warnf("please kill me now\n"); - while (1) { - ok_to_kill_thread = 1; - sleep(1); - } - - pthread_cleanup_pop(0); - - return 0; -} - -static void thread_killed(void *arg) -{ - static int num_times_called = 0; - - warnf("killing %p [cnt=%i]\n", arg, ++num_times_called); - assert(num_times_called == 1); - - /* pick any cancellation endpoint, sleep() will do just fine */ - while (1) { - warnf("sleeping in cancellation endpoint ...\n"); - sleep(1); - } - - warnf("done cleaning up\n"); -} - -int main(int argc, char *argv[]) -{ - int count = 3; - pthread_t app_pthread_id; - - /* need to tweak this test a bit to play nice with signals and LT */ - return 0; - - ok_to_kill_thread = 0; - - pthread_create(&app_pthread_id, NULL, KillMeThread, NULL); - - warnf("waiting for thread to prepare itself\n"); - while (!ok_to_kill_thread) - sleep(1); - - while (count--) { - warnf("killing thread\n"); - pthread_cancel(app_pthread_id); - sleep(3); - } - - return 0; -} diff --git a/test/pwd_grp/.indent.pro b/test/pwd_grp/.indent.pro deleted file mode 100644 index 492ecf1c7..000000000 --- a/test/pwd_grp/.indent.pro +++ /dev/null @@ -1,33 +0,0 @@ ---blank-lines-after-declarations ---blank-lines-after-procedures ---break-before-boolean-operator ---no-blank-lines-after-commas ---braces-on-if-line ---braces-on-struct-decl-line ---comment-indentation25 ---declaration-comment-column25 ---no-comment-delimiters-on-blank-lines ---cuddle-else ---continuation-indentation4 ---case-indentation0 ---else-endif-column33 ---space-after-cast ---line-comments-indentation0 ---declaration-indentation1 ---dont-format-first-column-comments ---dont-format-comments ---honour-newlines ---indent-level4 -/* changed from 0 to 4 */ ---parameter-indentation4 ---line-length78 /* changed from 75 */ ---continue-at-parentheses ---no-space-after-function-call-names ---dont-break-procedure-type ---dont-star-comments ---leave-optional-blank-lines ---dont-space-special-semicolon ---tab-size4 -/* additions by Mark */ ---case-brace-indentation0 ---leave-preprocessor-space diff --git a/test/pwd_grp/Makefile b/test/pwd_grp/Makefile deleted file mode 100644 index fa2aacb8e..000000000 --- a/test/pwd_grp/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc pwd_grp tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/pwd_grp/Makefile.in b/test/pwd_grp/Makefile.in deleted file mode 100644 index d561f3dcc..000000000 --- a/test/pwd_grp/Makefile.in +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc pwd_grp tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -DODIFF_test_pwd := 1 -DODIFF_test_grp := 1 -DODIFF_pwcat := 1 -DODIFF_grcat := 1 -DODIFF_getgroups := 1 diff --git a/test/pwd_grp/getgroups.c b/test/pwd_grp/getgroups.c deleted file mode 100644 index c34355215..000000000 --- a/test/pwd_grp/getgroups.c +++ /dev/null @@ -1,100 +0,0 @@ -/* This test was ripped out of GNU 'id' from coreutils-5.0 - * by Erik Andersen. - * - * - * id is Copyright (C) 1989-2003 Free Software Foundation, Inc. - * and licensed under the GPL v2 or later, and was written by - * Arnold Robbins, with a major rewrite by David MacKenzie, - */ - -#include -#include -#include -#include -#include -#include - -/* The number of errors encountered so far. */ -static int problems = 0; - -/* Print the name or value of group ID GID. */ -static void print_group(gid_t gid) -{ - struct group *grp = NULL; - - grp = getgrgid(gid); - if (grp == NULL) { - fprintf(stderr, "cannot find name for group ID %u\n", gid); - problems++; - } - - if (grp == NULL) - printf("%u", (unsigned)gid); - else - printf("%s", grp->gr_name); -} - -static int xgetgroups(gid_t gid, int *n_groups, gid_t ** groups) -{ - int max_n_groups; - int ng; - gid_t *g; - int fail = 0; - - max_n_groups = getgroups(0, NULL); - - /* Add 1 just in case max_n_groups is zero. */ - g = (gid_t *) malloc(max_n_groups * sizeof(gid_t) + 1); - if (g == NULL) { - fprintf(stderr, "out of memory\n"); - exit(EXIT_FAILURE); - } - ng = getgroups(max_n_groups, g); - - if (ng < 0) { - fprintf(stderr, "cannot get supplemental group list\n"); - ++fail; - free(g); - } - if (!fail) { - *n_groups = ng; - *groups = g; - } - return fail; -} - -/* Print all of the distinct groups the user is in. */ -int main(int argc, char *argv[]) -{ - struct passwd *pwd; - - pwd = getpwuid(getuid()); - if (pwd == NULL) - problems++; - - print_group(getgid()); - if (getegid() != getgid()) { - putchar(' '); - print_group(getegid()); - } - - { - int n_groups = 0; - gid_t *groups; - register int i; - - if (xgetgroups((pwd ? pwd->pw_gid : (gid_t) - 1), - &n_groups, &groups)) { - return ++problems; - } - - for (i = 0; i < n_groups; i++) - if (groups[i] != getgid() && groups[i] != getegid()) { - putchar(' '); - print_group(groups[i]); - } - free(groups); - } - putchar('\n'); - return (problems != 0); -} diff --git a/test/pwd_grp/grcat.c b/test/pwd_grp/grcat.c deleted file mode 100644 index a89614025..000000000 --- a/test/pwd_grp/grcat.c +++ /dev/null @@ -1,32 +0,0 @@ -/* - * grcat.c - * - * Generate a printable version of the group database - */ -/* - * Arnold Robbins, arnold@gnu.org, May 1993 - * Public Domain - */ - -#include -#include -#include - -int main(int argc, char **argv) -{ - struct group *g; - int i; - - while ((g = getgrent()) != NULL) { - printf("%s:%s:%ld:", g->gr_name, g->gr_passwd, - (long) g->gr_gid); - for (i = 0; g->gr_mem[i] != NULL; i++) { - printf("%s", g->gr_mem[i]); - if (g->gr_mem[i+1] != NULL) - putchar(','); - } - putchar('\n'); - } - endgrent(); - return 0; -} diff --git a/test/pwd_grp/pwcat.c b/test/pwd_grp/pwcat.c deleted file mode 100644 index afad8e18b..000000000 --- a/test/pwd_grp/pwcat.c +++ /dev/null @@ -1,26 +0,0 @@ -/* - * pwcat.c - * - * Generate a printable version of the password database - */ -/* - * Arnold Robbins, arnold@gnu.org, May 1993 - * Public Domain - */ - -#include -#include -#include - -int main(int argc, char **argv) -{ - struct passwd *p; - - while ((p = getpwent()) != NULL) - printf("%s:%s:%ld:%ld:%s:%s:%s\n", - p->pw_name, p->pw_passwd, (long) p->pw_uid, - (long) p->pw_gid, p->pw_gecos, p->pw_dir, p->pw_shell); - - endpwent(); - return 0; -} diff --git a/test/pwd_grp/test_grp.c b/test/pwd_grp/test_grp.c deleted file mode 100644 index 573806cd6..000000000 --- a/test/pwd_grp/test_grp.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * test_grp.c - This file is part of the libc-8086/grp package for ELKS, - * Copyright (C) 1995, 1996 Nat Friedman . - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include -#include -#include -#include - -int main(int argc, char **argv) -{ - struct group *group; - char **tmp_mem; - int test_gid; - - fprintf(stdout, "Beginning test of libc/grp...\n"); - - fprintf(stdout, "=> Testing setgrent(), getgrent(), endgrent()...\n"); - fprintf(stdout, "-> setgrent()...\n"); - setgrent(); - fprintf(stdout, "-> getgrent()...\n"); - printf - ("********************************************************************************\n"); - while ((group = getgrent()) != NULL) { - printf("gr_name\t\t: %s\n", group->gr_name); - printf("gr_passwd\t: %s\n", group->gr_passwd); - printf("gr_gid\t\t: %d\n", (int) group->gr_gid); - printf("gr_mem\t\t: "); - fflush(stdout); - tmp_mem = group->gr_mem; - while (*tmp_mem != NULL) { - printf("%s, ", *tmp_mem); - tmp_mem++; - } - printf - ("\n********************************************************************************\n"); - } - fprintf(stdout, "-> endgrent()...\n"); - endgrent(); - fprintf(stdout, - "=> Test of setgrent(), getgrent(), endgrent() complete.\n"); - fprintf(stdout, "=> Testing getgrid(), getgrnam()...\n"); - fprintf(stdout, "-> getgrgid()...\n"); - printf - ("********************************************************************************\n"); - for (test_gid = 0; test_gid < 100; test_gid++) { - fprintf(stdout, "-> getgrgid(%d)...\n", test_gid); - group = getgrgid((gid_t) test_gid); - if (group != NULL) { - printf("gr_name\t: %s\n", group->gr_name); - printf("gr_passwd\t: %s\n", group->gr_passwd); - printf("gr_gid\t: %d\n", (int) group->gr_gid); - printf("gr_mem\t\t: "); - fflush(stdout); - tmp_mem = group->gr_mem; - while (*tmp_mem != NULL) { - printf("%s, ", *tmp_mem); - tmp_mem++; - } - } - printf - ("\n********************************************************************************\n"); - } - fprintf(stdout, "-> getgrnam()...\n"); - group = getgrnam("root"); - if (group == NULL) { - printf(">NULL<\n"); - } else { - printf("gr_name\t: %s\n", group->gr_name); - printf("gr_passwd\t: %s\n", group->gr_passwd); - printf("gr_gid\t: %d\n", (int) group->gr_gid); - printf("gr_mem\t\t: "); - fflush(stdout); - tmp_mem = group->gr_mem; - while (*tmp_mem != NULL) { - printf("%s, ", *tmp_mem); - tmp_mem++; - } - printf("\n"); - } - - - return 0; -} diff --git a/test/pwd_grp/test_pwd.c b/test/pwd_grp/test_pwd.c deleted file mode 100644 index 065864e2e..000000000 --- a/test/pwd_grp/test_pwd.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * test_pwd.c - This file is part of the libc-8086/pwd package for ELKS, - * Copyright (C) 1995, 1996 Nat Friedman . - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include -#include -#include -#include - -int main(int argc, char **argv) -{ - struct passwd *passwd; - int test_uid; - - fprintf(stdout, "Beginning test of libc/pwd...\n"); - - fprintf(stdout, "=> Testing setpwent(), getpwent(), endpwent()...\n"); - fprintf(stdout, "-> setpwent()...\n"); - setpwent(); - fprintf(stdout, "-> getpwent()...\n"); - printf - ("********************************************************************************\n"); - while ((passwd = getpwent()) != NULL) { - printf("pw_name\t\t: %s\n", passwd->pw_name); - printf("pw_passwd\t: %s\n", passwd->pw_passwd); - printf("pw_uid\t\t: %d\n", (int) passwd->pw_uid); - printf("pw_gid\t\t: %d\n", (int) passwd->pw_gid); - printf("pw_gecos\t: %s\n", passwd->pw_gecos); - printf("pw_dir\t\t: %s\n", passwd->pw_dir); - printf("pw_shell\t: %s\n", passwd->pw_shell); - printf - ("********************************************************************************\n"); - } - fprintf(stdout, "-> endpwent()...\n"); - endpwent(); - fprintf(stdout, - "=> Test of setpwent(), getpwent(), endpwent() complete.\n"); - fprintf(stdout, "=> Testing getpwuid(), getpwnam()...\n"); - fprintf(stdout, "-> getpwuid()...\n"); - printf - ("********************************************************************************\n"); - for (test_uid = 0; test_uid < 1000; test_uid++) { - fprintf(stdout, "-> getpwuid(%d)...\n", test_uid); - passwd = getpwuid((uid_t) test_uid); - if (passwd != NULL) { - printf("pw_name\t\t: %s\n", passwd->pw_name); - printf("pw_passwd\t: %s\n", passwd->pw_passwd); - printf("pw_uid\t\t: %d\n", (int) passwd->pw_uid); - printf("pw_gid\t\t: %d\n", (int) passwd->pw_gid); - printf("pw_gecos\t: %s\n", passwd->pw_gecos); - printf("pw_dir\t\t: %s\n", passwd->pw_dir); - printf("pw_shell\t: %s\n", passwd->pw_shell); - printf - ("********************************************************************************\n"); - } - } - fprintf(stdout, "-> getpwnam()...\n"); - passwd = getpwnam("root"); - if (passwd == NULL) { - printf(">NULL<\n"); - } else { - printf("pw_name\t\t: %s\n", passwd->pw_name); - printf("pw_passwd\t: %s\n", passwd->pw_passwd); - printf("pw_uid\t\t: %d\n", (int) passwd->pw_uid); - printf("pw_gid\t\t: %d\n", (int) passwd->pw_gid); - printf("pw_gecos\t: %s\n", passwd->pw_gecos); - printf("pw_dir\t\t: %s\n", passwd->pw_dir); - printf("pw_shell\t: %s\n", passwd->pw_shell); - } - return 0; -} diff --git a/test/regex/LICENSE b/test/regex/LICENSE deleted file mode 100644 index 2e5acb9cd..000000000 --- a/test/regex/LICENSE +++ /dev/null @@ -1,72 +0,0 @@ -From gsf@research.att.com Wed Mar 1 20:30:54 2006 -Return-Path: -X-Original-To: mps@bridge.intra -Delivered-To: mps@bridge.intra -Received: from localhost (localhost [127.0.0.1]) - by localhost (Postfix) with ESMTP id B8C814E4F - for ; Wed, 1 Mar 2006 20:30:53 +0100 (CET) -Received: from mail.bridge.intra ([127.0.0.1]) - by localhost (lnx.bridge.intra [127.0.0.1]) (amavisd-new, port 10024) - with LMTP id 05987-03 for ; - Wed, 1 Mar 2006 20:30:42 +0100 (CET) -Received: from pop.gmx.net (localhost [127.0.0.1]) - by mail.bridge.intra (Postfix) with ESMTP id C8C73794D - for ; Wed, 1 Mar 2006 20:30:38 +0100 (CET) -X-Flags: 0000 -Delivered-To: GMX delivery to ps.m@gmx.net -Received: (qmail invoked by alias); 01 Mar 2006 19:23:46 -0000 -Received: from mail-red.research.att.com (EHLO mail-white.research.att.com) [192.20.225.110] - by mx0.gmx.net (mx085) with SMTP; 01 Mar 2006 20:23:46 +0100 -Received: from raptor.research.att.com (raptor.research.att.com [135.207.23.32]) - by mail-blue.research.att.com (Postfix) with ESMTP id B7929147CBB - for ; Wed, 1 Mar 2006 14:23:45 -0500 (EST) -Received: (from gsf@localhost) - by raptor.research.att.com (SGI-8.9.3p2/8.8.7) id OAA86112 - for ps.m@gmx.net; Wed, 1 Mar 2006 14:23:45 -0500 (EST) -Date: Wed, 1 Mar 2006 14:23:45 -0500 (EST) -From: Glenn Fowler -Message-Id: <200603011923.OAA86112@raptor.research.att.com> -Organization: AT&T Research -X-Mailer: mailx (AT&T/BSD) 9.9 2005-04-21 -Mime-Version: 1.0 -Content-Type: text/plain; charset=us-ascii -Content-Transfer-Encoding: 7bit -References: -To: mps@bridge.intra -Subject: Re: testregex licensing question -X-GMX-Antivirus: -1 (not scanned, may not use virus scanner) -X-GMX-Antispam: 0 (Mail was not recognized as spam) -X-GMX-UID: lJF3ZO9DeSEkJ2TcbHQhaXN1IGRvb0Ca -X-Virus-Scanned: by amavisd-new at localhost -Status: RO -X-Status: -X-Keywords: -X-UID: 44736 - - -you may include it directly -retain the testregex.c header comment -it uses a very free license to maximize distribution -you can copy that .c comment to any test data files you use -using # comment style to be complete - -let me know how it works with your libc -also pass on any new tests you cook up - -On Wed, 1 Mar 2006 20:15:02 +0100 (CET) Peter S. Mazinger wrote: -> Hello Glenn! - -> I would want to add testregex.c and the related *.dat files to the uClibc -> testsuite. uClibc is licensed under LGPL v2.1. I haven't found any -> licensing related info on testregex. - -> Is it allowed to use the code there, or should I accomodate the testsuite -> to download the needed files from the original site each time it is ran? - -> Thanks, Peter - -> -- -> Peter S. Mazinger ID: 0xA5F059F2 -> Key fingerprint = 92A4 31E1 56BC 3D5A 2D08 BB6E C389 975E A5F0 59F2 - - diff --git a/test/regex/Makefile b/test/regex/Makefile deleted file mode 100644 index eea0c491b..000000000 --- a/test/regex/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc regex tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/regex/Makefile.in b/test/regex/Makefile.in deleted file mode 100644 index 59d0c0697..000000000 --- a/test/regex/Makefile.in +++ /dev/null @@ -1,6 +0,0 @@ -# slowsdown embedded test runs extremely and always some -# some tests are failing -# for lm32 triggers gcc ICE with gcc 5.3.0 -# ifeq ($(TARGET_lm32),y) -TESTS_DISABLED := testregex -# endif diff --git a/test/regex/basic.dat b/test/regex/basic.dat deleted file mode 100644 index 5c50f37b4..000000000 --- a/test/regex/basic.dat +++ /dev/null @@ -1,216 +0,0 @@ -NOTE all standard compliant implementations should pass these : 2002-05-31 - -BE abracadabra$ abracadabracadabra (7,18) -BE a...b abababbb (2,7) -BE XXXXXX ..XXXXXX (2,8) -E \) () (1,2) -BE a] a]a (0,2) -B } } (0,1) -E \} } (0,1) -BE \] ] (0,1) -B ] ] (0,1) -E ] ] (0,1) -B { { (0,1) -B } } (0,1) -BE ^a ax (0,1) -BE \^a a^a (1,3) -BE a\^ a^ (0,2) -BE a$ aa (1,2) -BE a\$ a$ (0,2) -BE ^$ NULL (0,0) -E $^ NULL (0,0) -E a($) aa (1,2)(2,2) -E a*(^a) aa (0,1)(0,1) -E (..)*(...)* a (0,0) -E (..)*(...)* abcd (0,4)(2,4) -E (ab|a)(bc|c) abc (0,3)(0,2)(2,3) -E (ab)c|abc abc (0,3)(0,2) -E a{0}b ab (1,2) -E (a*)(b?)(b+)b{3} aaabbbbbbb (0,10)(0,3)(3,4)(4,7) -E (a*)(b{0,1})(b{1,})b{3} aaabbbbbbb (0,10)(0,3)(3,4)(4,7) -E a{9876543210} NULL BADBR -E ((a|a)|a) a (0,1)(0,1)(0,1) -E (a*)(a|aa) aaaa (0,4)(0,3)(3,4) -E a*(a.|aa) aaaa (0,4)(2,4) -E a(b)|c(d)|a(e)f aef (0,3)(?,?)(?,?)(1,2) -E (a|b)?.* b (0,1)(0,1) -E (a|b)c|a(b|c) ac (0,2)(0,1) -E (a|b)c|a(b|c) ab (0,2)(?,?)(1,2) -E (a|b)*c|(a|ab)*c abc (0,3)(1,2) -E (a|b)*c|(a|ab)*c xc (1,2) -E (.a|.b).*|.*(.a|.b) xa (0,2)(0,2) -E a?(ab|ba)ab abab (0,4)(0,2) -E a?(ac{0}b|ba)ab abab (0,4)(0,2) -E ab|abab abbabab (0,2) -E aba|bab|bba baaabbbaba (5,8) -E aba|bab baaabbbaba (6,9) -E (aa|aaa)*|(a|aaaaa) aa (0,2)(0,2) -E (a.|.a.)*|(a|.a...) aa (0,2)(0,2) -E ab|a xabc (1,3) -E ab|a xxabc (2,4) -Ei (Ab|cD)* aBcD (0,4)(2,4) -BE [^-] --a (2,3) -BE [a-]* --a (0,3) -BE [a-m-]* --amoma-- (0,4) -E :::1:::0:|:::1:1:0: :::0:::1:::1:::0: (8,17) -E :::1:::0:|:::1:1:1: :::0:::1:::1:::0: (8,17) -{E [[:upper:]] A (0,1) [[]] not supported -E [[:lower:]]+ `az{ (1,3) -E [[:upper:]]+ @AZ[ (1,3) -BE [[-]] [[-]] (2,4) -BE [[.NIL.]] NULL ECOLLATE -BE [[=aleph=]] NULL ECOLLATE -} -BE$ \n \n (0,1) -BEn$ \n \n (0,1) -BE$ [^a] \n (0,1) -BE$ \na \na (0,2) -E (a)(b)(c) abc (0,3)(0,1)(1,2)(2,3) -BE xxx xxx (0,3) -E1 (^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$) feb 6, (0,6) -E1 (^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$) 2/7 (0,3) -E1 (^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$) feb 1,Feb 6 (5,11) -E3 ((((((((((((((((((((((((((((((x)))))))))))))))))))))))))))))) x (0,1)(0,1)(0,1) -E3 ((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))* xx (0,2)(1,2)(1,2) -E a?(ab|ba)* ababababababababababababababababababababababababababababababababababababababababa (0,81)(79,81) -E abaa|abbaa|abbbaa|abbbbaa ababbabbbabbbabbbbabbbbaa (18,25) -E abaa|abbaa|abbbaa|abbbbaa ababbabbbabbbabbbbabaa (18,22) -E aaac|aabc|abac|abbc|baac|babc|bbac|bbbc baaabbbabac (7,11) -BE$ .* \x01\xff (0,2) -E aaaa|bbbb|cccc|ddddd|eeeeee|fffffff|gggg|hhhh|iiiii|jjjjj|kkkkk|llll XaaaXbbbXcccXdddXeeeXfffXgggXhhhXiiiXjjjXkkkXlllXcbaXaaaa (53,57) -L aaaa\nbbbb\ncccc\nddddd\neeeeee\nfffffff\ngggg\nhhhh\niiiii\njjjjj\nkkkkk\nllll XaaaXbbbXcccXdddXeeeXfffXgggXhhhXiiiXjjjXkkkXlllXcbaXaaaa NOMATCH -E a*a*a*a*a*b aaaaaaaaab (0,10) -BE ^ NULL (0,0) -BE $ NULL (0,0) -BE ^$ NULL (0,0) -BE ^a$ a (0,1) -BE abc abc (0,3) -BE abc xabcy (1,4) -BE abc ababc (2,5) -BE ab*c abc (0,3) -BE ab*bc abc (0,3) -BE ab*bc abbc (0,4) -BE ab*bc abbbbc (0,6) -E ab+bc abbc (0,4) -E ab+bc abbbbc (0,6) -E ab?bc abbc (0,4) -E ab?bc abc (0,3) -E ab?c abc (0,3) -BE ^abc$ abc (0,3) -BE ^abc abcc (0,3) -BE abc$ aabc (1,4) -BE ^ abc (0,0) -BE $ abc (3,3) -BE a.c abc (0,3) -BE a.c axc (0,3) -BE a.*c axyzc (0,5) -BE a[bc]d abd (0,3) -BE a[b-d]e ace (0,3) -BE a[b-d] aac (1,3) -BE a[-b] a- (0,2) -BE a[b-] a- (0,2) -BE a] a] (0,2) -BE a[]]b a]b (0,3) -BE a[^bc]d aed (0,3) -BE a[^-b]c adc (0,3) -BE a[^]b]c adc (0,3) -E ab|cd abc (0,2) -E ab|cd abcd (0,2) -E a\(b a(b (0,3) -E a\(*b ab (0,2) -E a\(*b a((b (0,4) -E ((a)) abc (0,1)(0,1)(0,1) -E (a)b(c) abc (0,3)(0,1)(2,3) -E a+b+c aabbabc (4,7) -E a* aaa (0,3) -E (a*)* - (0,0)(0,0) -E (a*)+ - (0,0)(0,0) -E (a*|b)* - (0,0)(0,0) -E (a+|b)* ab (0,2)(1,2) -E (a+|b)+ ab (0,2)(1,2) -E (a+|b)? ab (0,1)(0,1) -BE [^ab]* cde (0,3) -E (^)* - (0,0)(0,0) -BE a* NULL (0,0) -E ([abc])*d abbbcd (0,6)(4,5) -E ([abc])*bcd abcd (0,4)(0,1) -E a|b|c|d|e e (0,1) -E (a|b|c|d|e)f ef (0,2)(0,1) -E ((a*|b))* - (0,0)(0,0)(0,0) -BE abcd*efg abcdefg (0,7) -BE ab* xabyabbbz (1,3) -BE ab* xayabbbz (1,2) -E (ab|cd)e abcde (2,5)(2,4) -BE [abhgefdc]ij hij (0,3) -E (a|b)c*d abcd (1,4)(1,2) -E (ab|ab*)bc abc (0,3)(0,1) -E a([bc]*)c* abc (0,3)(1,3) -E a([bc]*)(c*d) abcd (0,4)(1,3)(3,4) -E a([bc]+)(c*d) abcd (0,4)(1,3)(3,4) -E a([bc]*)(c+d) abcd (0,4)(1,2)(2,4) -E a[bcd]*dcdcde adcdcde (0,7) -E (ab|a)b*c abc (0,3)(0,2) -E ((a)(b)c)(d) abcd (0,4)(0,3)(0,1)(1,2)(3,4) -BE [A-Za-z_][A-Za-z0-9_]* alpha (0,5) -E ^a(bc+|b[eh])g|.h$ abh (1,3) -E (bc+d$|ef*g.|h?i(j|k)) effgz (0,5)(0,5) -E (bc+d$|ef*g.|h?i(j|k)) ij (0,2)(0,2)(1,2) -E (bc+d$|ef*g.|h?i(j|k)) reffgz (1,6)(1,6) -E (((((((((a))))))))) a (0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1) -BE multiple words multiple words yeah (0,14) -E (.*)c(.*) abcde (0,5)(0,2)(3,5) -BE abcd abcd (0,4) -E a(bc)d abcd (0,4)(1,3) -E a[-]?c ac (0,3) -E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Qaddafi (0,15)(?,?)(10,12) -E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Mo'ammar Gadhafi (0,16)(?,?)(11,13) -E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Kaddafi (0,15)(?,?)(10,12) -E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Qadhafi (0,15)(?,?)(10,12) -E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Gadafi (0,14)(?,?)(10,11) -E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Mu'ammar Qadafi (0,15)(?,?)(11,12) -E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Moamar Gaddafi (0,14)(?,?)(9,11) -E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Mu'ammar Qadhdhafi (0,18)(?,?)(13,15) -E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Khaddafi (0,16)(?,?)(11,13) -E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Ghaddafy (0,16)(?,?)(11,13) -E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Ghadafi (0,15)(?,?)(11,12) -E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Ghaddafi (0,16)(?,?)(11,13) -E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muamar Kaddafi (0,14)(?,?)(9,11) -E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Quathafi (0,16)(?,?)(11,13) -E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Gheddafi (0,16)(?,?)(11,13) -E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Moammar Khadafy (0,15)(?,?)(11,12) -E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Moammar Qudhafi (0,15)(?,?)(10,12) -E a+(b|c)*d+ aabcdd (0,6)(3,4) -E ^.+$ vivi (0,4) -E ^(.+)$ vivi (0,4)(0,4) -E ^([^!.]+).att.com!(.+)$ gryphon.att.com!eby (0,19)(0,7)(16,19) -E ^([^!]+!)?([^!]+)$ bas (0,3)(?,?)(0,3) -E ^([^!]+!)?([^!]+)$ bar!bas (0,7)(0,4)(4,7) -E ^([^!]+!)?([^!]+)$ foo!bas (0,7)(0,4)(4,7) -E ^.+!([^!]+!)([^!]+)$ foo!bar!bas (0,11)(4,8)(8,11) -E ((foo)|(bar))!bas bar!bas (0,7)(0,3)(?,?)(0,3) -E ((foo)|(bar))!bas foo!bar!bas (4,11)(4,7)(?,?)(4,7) -E ((foo)|(bar))!bas foo!bas (0,7)(0,3)(0,3) -E ((foo)|bar)!bas bar!bas (0,7)(0,3) -E ((foo)|bar)!bas foo!bar!bas (4,11)(4,7) -E ((foo)|bar)!bas foo!bas (0,7)(0,3)(0,3) -E (foo|(bar))!bas bar!bas (0,7)(0,3)(0,3) -E (foo|(bar))!bas foo!bar!bas (4,11)(4,7)(4,7) -E (foo|(bar))!bas foo!bas (0,7)(0,3) -E (foo|bar)!bas bar!bas (0,7)(0,3) -E (foo|bar)!bas foo!bar!bas (4,11)(4,7) -E (foo|bar)!bas foo!bas (0,7)(0,3) -E ^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$ foo!bar!bas (0,11)(0,11)(?,?)(?,?)(4,8)(8,11) -E ^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$ bas (0,3)(?,?)(0,3) -E ^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$ bar!bas (0,7)(0,4)(4,7) -E ^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$ foo!bar!bas (0,11)(?,?)(?,?)(4,8)(8,11) -E ^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$ foo!bas (0,7)(0,4)(4,7) -E ^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$ bas (0,3)(0,3)(?,?)(0,3) -E ^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$ bar!bas (0,7)(0,7)(0,4)(4,7) -E ^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$ foo!bar!bas (0,11)(0,11)(?,?)(?,?)(4,8)(8,11) -E ^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$ foo!bas (0,7)(0,7)(0,4)(4,7) -E .*(/XXX).* /XXX (0,4)(0,4) -E .*(\\XXX).* \XXX (0,4)(0,4) -E \\XXX \XXX (0,4) -E .*(/000).* /000 (0,4)(0,4) -E .*(\\000).* \000 (0,4)(0,4) -E \\000 \000 (0,4) diff --git a/test/regex/categorize.dat b/test/regex/categorize.dat deleted file mode 100644 index d34851278..000000000 --- a/test/regex/categorize.dat +++ /dev/null @@ -1,62 +0,0 @@ -NOTE regex implementation categorization 2004-05-31 - -?E aa* xaxaax (1,2) POSITION=leftmost -; POSITION=bug - -?E (a*)(ab)*(b*) abc (0,2)(0,1)(?,?)(1,2) ASSOCIATIVITY=right -|E (a*)(ab)*(b*) abc (0,2)(0,0)(0,2)(2,2) ASSOCIATIVITY=left -; ASSOCIATIVITY=bug - -?E ((a*)(ab)*)((b*)(a*)) aba (0,3)(0,2)(0,0)(0,2)(2,3)(2,2)(2,3) SUBEXPRESSION=precedence -|E ((a*)(ab)*)((b*)(a*)) aba (0,3)(0,1)(0,1)(?,?)(1,3)(1,2)(2,3) SUBEXPRESSION=grouping -; SUBEXPRESSION=bug - -?E (...?.?)* xxxxxx (0,6)(4,6) REPEAT_LONGEST=first -|E (...?.?)* xxxxxx (0,6)(2,6) REPEAT_LONGEST=last -|E (...?.?)* xxxxxx OK REPEAT_LONGEST=unknown -; REPEAT_LONGEST=bug - -?E (a|ab)(bc|c) abcabc (0,3)(0,2)(2,3) EXPECTED -|E (a|ab)(bc|c) abcabc (0,3)(0,1)(1,3) BUG=alternation-order -; BUG=alternation-order-UNKNOWN - -?E (aba|a*b)(aba|a*b) ababa (0,5)(0,2)(2,5) EXPECTED -|E (aba|a*b)(aba|a*b) ababa (0,4)(0,3)(3,4) BUG=first-match -; BUG=unknown-match - -?B a\(b\)*\1 a NOMATCH EXPECTED -|B a\(b\)*\1 a (0,1) BUG=nomatch-match -|B a\(b\)*\1 abab (0,2)(1,2) # BUG=repeat-any -; BUG=nomatch-match-UNKNOWN - -?E (a*){2} xxxxx (0,0)(0,0) EXPECTED -|E (a*){2} xxxxx (5,5)(5,5) BUG=range-null -; BUG=range-null-UNKNOWN - -?B a\(b\)*\1 abab NOMATCH EXPECTED -|B a\(b\)*\1 abab (0,1) # BUG=nomatch-match -|B a\(b\)*\1 abab (0,2)(1,2) BUG=repeat-any -; BUG=repeat-any-UNKNOWN - -?E (a*)* a (0,1)(0,1) EXPECTED -|E (a*)* ax (0,1)(0,1) BUG=repeat-null-unknown -|E (a*)* a (0,1)(1,1) BUG=repeat-null -; BUG=repeat-null-UNKNOWN - -?E (aba|a*b)* ababa (0,5)(2,5) EXPECTED -|E (aba|a*b)* ababa (0,5)(3,4) BUG=repeat-short -|E (aba|a*b)* ababa (0,4)(3,4) # LENGTH=first -; BUG=repeat-short-UNKNOWN - -?E (a(b)?)+ aba (0,3)(2,3) EXPECTED -|E (a(b)?)+ aba (0,3)(2,3)(1,2) BUG=repeat-artifact -; BUG=repeat-artifact-UNKNOWN - -?B \(a\(b\)*\)*\2 abab NOMATCH EXPECTED -|B \(a\(b\)*\)*\2 abab (0,4)(2,3)(1,2) BUG=repeat-artifact-nomatch -; BUG=repeat-artifact-nomatch-UNKNOWN - -?E (a?)((ab)?)(b?)a?(ab)?b? abab (0,4)(0,1)(1,1)(?,?)(1,2)(2,4) BUG=subexpression-first -|E .*(.*) ab (0,2)(2,2) EXPECTED -|E .*(.*) ab (0,2)(0,2) BUG=subexpression-first -; BUG=subexpression-first-UNKNOWN diff --git a/test/regex/forcedassoc.dat b/test/regex/forcedassoc.dat deleted file mode 100644 index 39f3111da..000000000 --- a/test/regex/forcedassoc.dat +++ /dev/null @@ -1,30 +0,0 @@ -NOTE left-assoc:pass-all right-assoc:pass-all : 2002-04-29 - -E (a|ab)(c|bcd) abcd (0,4)(0,1)(1,4) -E (a|ab)(bcd|c) abcd (0,4)(0,1)(1,4) -E (ab|a)(c|bcd) abcd (0,4)(0,1)(1,4) -E (ab|a)(bcd|c) abcd (0,4)(0,1)(1,4) -E ((a|ab)(c|bcd))(d*) abcd (0,4)(0,4)(0,1)(1,4)(4,4) -E ((a|ab)(bcd|c))(d*) abcd (0,4)(0,4)(0,1)(1,4)(4,4) -E ((ab|a)(c|bcd))(d*) abcd (0,4)(0,4)(0,1)(1,4)(4,4) -E ((ab|a)(bcd|c))(d*) abcd (0,4)(0,4)(0,1)(1,4)(4,4) -E (a|ab)((c|bcd)(d*)) abcd (0,4)(0,2)(2,4)(2,3)(3,4) -E (a|ab)((bcd|c)(d*)) abcd (0,4)(0,2)(2,4)(2,3)(3,4) -E (ab|a)((c|bcd)(d*)) abcd (0,4)(0,2)(2,4)(2,3)(3,4) -E (ab|a)((bcd|c)(d*)) abcd (0,4)(0,2)(2,4)(2,3)(3,4) -E (a*)(b|abc) abc (0,3)(0,0)(0,3) -E (a*)(abc|b) abc (0,3)(0,0)(0,3) -E ((a*)(b|abc))(c*) abc (0,3)(0,3)(0,0)(0,3)(3,3) -E ((a*)(abc|b))(c*) abc (0,3)(0,3)(0,0)(0,3)(3,3) -E (a*)((b|abc)(c*)) abc (0,3)(0,1)(1,3)(1,2)(2,3) -E (a*)((abc|b)(c*)) abc (0,3)(0,1)(1,3)(1,2)(2,3) -E (a*)(b|abc) abc (0,3)(0,0)(0,3) -E (a*)(abc|b) abc (0,3)(0,0)(0,3) -E ((a*)(b|abc))(c*) abc (0,3)(0,3)(0,0)(0,3)(3,3) -E ((a*)(abc|b))(c*) abc (0,3)(0,3)(0,0)(0,3)(3,3) -E (a*)((b|abc)(c*)) abc (0,3)(0,1)(1,3)(1,2)(2,3) -E (a*)((abc|b)(c*)) abc (0,3)(0,1)(1,3)(1,2)(2,3) -E (a|ab) ab (0,2)(0,2) -E (ab|a) ab (0,2)(0,2) -E (a|ab)(b*) ab (0,2)(0,2)(2,2) -E (ab|a)(b*) ab (0,2)(0,2)(2,2) diff --git a/test/regex/interpretation.dat b/test/regex/interpretation.dat deleted file mode 100644 index 72e186eb7..000000000 --- a/test/regex/interpretation.dat +++ /dev/null @@ -1,93 +0,0 @@ -:RE#01:E a+ xaax (1,3) -:RE#02:B .\(a*\). xaax (0,4)(1,3) -:RE#03:E (a?)((ab)?) ab (0,2)(0,0)(0,2)(0,2) -:RE#04:E (a?)((ab)?)(b?) ab (0,2)(0,1)(1,1)(?,?)(1,2) -:RE#05:E ((a?)((ab)?))(b?) ab (0,2)(0,2)(0,0)(0,2)(0,2)(2,2) -:RE#06:E (a?)(((ab)?)(b?)) ab (0,2)(0,1)(1,2)(1,1)(?,?)(1,2) -:RE#07:E (.?) x (0,1)(0,1) -:RE#08:E (.?){1} x (0,1)(0,1) -:RE#09:E (.?)(.?) x (0,1)(0,1)(1,1) -:RE#10:E (.?){2} x (0,1)(1,1) -:RE#11:E (.?)* x (0,1)(0,1) -:RE#12:E (.?.?) xxx (0,2)(0,2) -:RE#13:E (.?.?){1} xxx (0,2)(0,2) -:RE#14:E (.?.?)(.?.?) xxx (0,3)(0,2)(2,3) -:RE#15:E (.?.?){2} xxx (0,3)(2,3) -:RE#16:E (.?.?)(.?.?)(.?.?) xxx (0,3)(0,2)(2,3)(3,3) -:RE#17:E (.?.?){3} xxx (0,3)(3,3) -:RE#18:E (.?.?)* xxx (0,3)(2,3) -:RE#19:E a?((ab)?)(b?) ab (0,2)(1,1)(?,?)(1,2) -:RE#20:E (a?)((ab)?)b? ab (0,2)(0,1)(1,1)(?,?) -:RE#21:E a?((ab)?)b? ab (0,2)(1,1)(?,?) -:RE#22:E (a*){2} xxxxx (0,0)(0,0) -:RE#23:E (ab?)(b?a) aba (0,3)(0,2)(2,3) -:RE#24:E (a|ab)(ba|a) aba (0,3)(0,2)(2,3) -:RE#25:E (a|ab|ba) aba (0,2)(0,2) -:RE#26:E (a|ab|ba)(a|ab|ba) aba (0,3)(0,2)(2,3) -:RE#27:E (a|ab|ba)* aba (0,3)(2,3) -:RE#28:E (aba|a*b) ababa (0,3)(0,3) -:RE#29:E (aba|a*b)(aba|a*b) ababa (0,5)(0,2)(2,5) -:RE#30:E (aba|a*b)* ababa (0,5)(2,5) -:RE#31:E (aba|ab|a) ababa (0,3)(0,3) -:RE#32:E (aba|ab|a)(aba|ab|a) ababa (0,5)(0,2)(2,5) -:RE#33:E (aba|ab|a)* ababa (0,5)(2,5) -:RE#34:E (a(b)?) aba (0,2)(0,2)(1,2) -:RE#35:E (a(b)?)(a(b)?) aba (0,3)(0,2)(1,2)(2,3)(?,?) -:RE#36:E (a(b)?)+ aba (0,3)(2,3)(?,?) -:RE#37:E (.*)(.*) xx (0,2)(0,2)(2,2) -:RE#38:E .*(.*) xx (0,2)(2,2) -:RE#39:E (a.*z|b.*y) azbazby (0,5)(0,5) -:RE#40:E (a.*z|b.*y)(a.*z|b.*y) azbazby (0,7)(0,5)(5,7) -:RE#41:E (a.*z|b.*y)* azbazby (0,7)(5,7) -:RE#42:E (.|..)(.*) ab (0,2)(0,2)(2,2) -:RE#43:E ((..)*(...)*) xxx (0,3)(0,3)(?,?)(0,3) -:RE#44:E ((..)*(...)*)((..)*(...)*) xxx (0,3)(0,3)(?,?)(0,3)(3,3)(?,?) -:RE#45:E ((..)*(...)*)* xxx (0,3)(0,3)(?,?)(0,3) -:RE#46:B \(a\{0,1\}\)*b\1 ab (0,2)(1,1) -:RE#47:B \(a*\)*b\1 ab (0,2)(1,1) -:RE#48:B \(a*\)b\1* ab (0,2)(0,1) -:RE#49:B \(a*\)*b\1* ab (0,2)(1,1) -:RE#50:B \(a\{0,1\}\)*b\(\1\) ab (0,2)(1,1)(2,2) -:RE#51:B \(a*\)*b\(\1\) ab (0,2)(1,1)(2,2) -:RE#52:B \(a*\)b\(\1\)* ab (0,2)(0,1)(?,?) -:RE#53:B \(a*\)*b\(\1\)* ab (0,2)(1,1)(2,2) -:RE#54:B \(a\{0,1\}\)*b\1 aba (0,3)(0,1) -:RE#55:B \(a*\)*b\1 aba (0,3)(0,1) -:RE#56:B \(a*\)b\1* aba (0,3)(0,1) -:RE#57:B \(a*\)*b\1* aba (0,3)(0,1) -:RE#58:B \(a*\)*b\(\1\)* aba (0,3)(0,1)(2,3) -:RE#59:B \(a\{0,1\}\)*b\1 abaa (0,3)(0,1) -:RE#60:B \(a*\)*b\1 abaa (0,3)(0,1) -:RE#61:B \(a*\)b\1* abaa (0,4)(0,1) -:RE#62:B \(a*\)*b\1* abaa (0,4)(0,1) -:RE#63:B \(a*\)*b\(\1\)* abaa (0,4)(0,1)(3,4) -:RE#64:B \(a\{0,1\}\)*b\1 aab (0,3)(2,2) -:RE#65:B \(a*\)*b\1 aab (0,3)(2,2) -:RE#66:B \(a*\)b\1* aab (0,3)(0,2) -:RE#67:B \(a*\)*b\1* aab (0,3)(2,2) -:RE#68:B \(a*\)*b\(\1\)* aab (0,3)(2,2)(3,3) -:RE#69:B \(a\{0,1\}\)*b\1 aaba (0,4)(1,2) -:RE#70:B \(a*\)*b\1 aaba (0,4)(1,2) -:RE#71:B \(a*\)b\1* aaba (0,3)(0,2) -:RE#72:B \(a*\)*b\1* aaba (0,4)(1,2) -:RE#73:B \(a*\)*b\(\1\)* aaba (0,4)(1,2)(3,4) -:RE#74:B \(a\{0,1\}\)*b\1 aabaa (0,4)(1,2) -:RE#75:B \(a*\)*b\1 aabaa (0,5)(0,2) -:RE#76:B \(a*\)b\1* aabaa (0,5)(0,2) -:RE#77:B \(a*\)*b\1* aabaa (0,5)(0,2) -:RE#78:B \(a*\)*b\(\1\)* aabaa (0,5)(0,2)(3,5) -:RE#79:B \(x\)*a\1 a NOMATCH -:RE#80:B \(x\)*a\1* a (0,1)(?,?) -:RE#81:B \(x\)*a\(\1\) a NOMATCH -:RE#82:B \(x\)*a\(\1\)* a (0,1)(?,?)(?,?) -:RE#83:E (aa(b(b))?)+ aabbaa (0,6)(4,6)(?,?)(?,?) -:RE#84:E (a(b)?)+ aba (0,3)(2,3)(?,?) -:RE#85:E ([ab]+)([bc]+)([cd]*) abcd (0,4)(0,2)(2,3)(3,4) -:RE#86:B \([ab]*\)\([bc]*\)\([cd]*\)\1 abcdaa (0,5)(0,1)(1,3)(3,4) -:RE#87:B \([ab]*\)\([bc]*\)\([cd]*\)\1 abcdab (0,6)(0,2)(2,3)(3,4) -:RE#88:B \([ab]*\)\([bc]*\)\([cd]*\)\1* abcdaa (0,6)(0,1)(1,3)(3,4) -:RE#89:B \([ab]*\)\([bc]*\)\([cd]*\)\1* abcdab (0,6)(0,2)(2,3)(3,4) -:RE#90:E ^(A([^B]*))?(B(.*))? Aa (0,2)(0,2)(1,2) -:RE#91:E ^(A([^B]*))?(B(.*))? Bb (0,2)(?,?)(?,?)(0,2)(1,2) -:RE#92:B .*\([AB]\).*\1 ABA (0,3)(0,1) -:RE#93:B$ [^A]*A \nA (0,2) diff --git a/test/regex/leftassoc.dat b/test/regex/leftassoc.dat deleted file mode 100644 index 9c068c61b..000000000 --- a/test/regex/leftassoc.dat +++ /dev/null @@ -1,16 +0,0 @@ -NOTE left-assoc:pass-all right-assoc:pass-none : 2002-04-29 - -E (a|ab)(c|bcd)(d*) abcd (0,4)(0,1)(1,4)(4,4) -E (a|ab)(bcd|c)(d*) abcd (0,4)(0,1)(1,4)(4,4) -E (ab|a)(c|bcd)(d*) abcd (0,4)(0,1)(1,4)(4,4) -E (ab|a)(bcd|c)(d*) abcd (0,4)(0,1)(1,4)(4,4) - -E (a*)(b|abc)(c*) abc (0,3)(0,0)(0,3)(3,3) -E (a*)(abc|b)(c*) abc (0,3)(0,0)(0,3)(3,3) -E (a*)(b|abc)(c*) abc (0,3)(0,0)(0,3)(3,3) -E (a*)(abc|b)(c*) abc (0,3)(0,0)(0,3)(3,3) - -E (a|ab)(c|bcd)(d|.*) abcd (0,4)(0,1)(1,4)(4,4) -E (a|ab)(bcd|c)(d|.*) abcd (0,4)(0,1)(1,4)(4,4) -E (ab|a)(c|bcd)(d|.*) abcd (0,4)(0,1)(1,4)(4,4) -E (ab|a)(bcd|c)(d|.*) abcd (0,4)(0,1)(1,4)(4,4) diff --git a/test/regex/nullsubexpr.dat b/test/regex/nullsubexpr.dat deleted file mode 100644 index c73d8f09e..000000000 --- a/test/regex/nullsubexpr.dat +++ /dev/null @@ -1,73 +0,0 @@ -NOTE null subexpression matches : 2002-06-06 - -E (a*)* a (0,1)(0,1) -E SAME x (0,0)(0,0) -E SAME aaaaaa (0,6)(0,6) -E SAME aaaaaax (0,6)(0,6) -E (a*)+ a (0,1)(0,1) -E SAME x (0,0)(0,0) -E SAME aaaaaa (0,6)(0,6) -E SAME aaaaaax (0,6)(0,6) -E (a+)* a (0,1)(0,1) -E SAME x (0,0) -E SAME aaaaaa (0,6)(0,6) -E SAME aaaaaax (0,6)(0,6) -E (a+)+ a (0,1)(0,1) -E SAME x NOMATCH -E SAME aaaaaa (0,6)(0,6) -E SAME aaaaaax (0,6)(0,6) - -E ([a]*)* a (0,1)(0,1) -E SAME x (0,0)(0,0) -E SAME aaaaaa (0,6)(0,6) -E SAME aaaaaax (0,6)(0,6) -E ([a]*)+ a (0,1)(0,1) -E SAME x (0,0)(0,0) -E SAME aaaaaa (0,6)(0,6) -E SAME aaaaaax (0,6)(0,6) -E ([^b]*)* a (0,1)(0,1) -E SAME b (0,0)(0,0) -E SAME aaaaaa (0,6)(0,6) -E SAME aaaaaab (0,6)(0,6) -E ([ab]*)* a (0,1)(0,1) -E SAME aaaaaa (0,6)(0,6) -E SAME ababab (0,6)(0,6) -E SAME bababa (0,6)(0,6) -E SAME b (0,1)(0,1) -E SAME bbbbbb (0,6)(0,6) -E SAME aaaabcde (0,5)(0,5) -E ([^a]*)* b (0,1)(0,1) -E SAME bbbbbb (0,6)(0,6) -E SAME aaaaaa (0,0)(0,0) -E ([^ab]*)* ccccxx (0,6)(0,6) -E SAME ababab (0,0)(0,0) - -E ((z)+|a)* zabcde (0,2)(1,2) - -{E a+? aaaaaa (0,1) no *? +? mimimal match ops -E (a) aaa (0,1)(0,1) -E (a*?) aaa (0,0)(0,0) -E (a)*? aaa (0,0) -E (a*?)*? aaa (0,0) -} - -B \(a*\)*\(x\) x (0,1)(0,0)(0,1) -B \(a*\)*\(x\) ax (0,2)(0,1)(1,2) -B \(a*\)*\(x\) axa (0,2)(0,1)(1,2) -B \(a*\)*\(x\)\(\1\) x (0,1)(0,0)(0,1)(1,1) -B \(a*\)*\(x\)\(\1\) ax (0,2)(1,1)(1,2)(2,2) -B \(a*\)*\(x\)\(\1\) axa (0,3)(0,1)(1,2)(2,3) -B \(a*\)*\(x\)\(\1\)\(x\) axax (0,4)(0,1)(1,2)(2,3)(3,4) -B \(a*\)*\(x\)\(\1\)\(x\) axxa (0,3)(1,1)(1,2)(2,2)(2,3) - -E (a*)*(x) x (0,1)(0,0)(0,1) -E (a*)*(x) ax (0,2)(0,1)(1,2) -E (a*)*(x) axa (0,2)(0,1)(1,2) - -E (a*)+(x) x (0,1)(0,0)(0,1) -E (a*)+(x) ax (0,2)(0,1)(1,2) -E (a*)+(x) axa (0,2)(0,1)(1,2) - -E (a*){2}(x) x (0,1)(0,0)(0,1) -E (a*){2}(x) ax (0,2)(1,1)(1,2) -E (a*){2}(x) axa (0,2)(1,1)(1,2) diff --git a/test/regex/repetition.dat b/test/regex/repetition.dat deleted file mode 100644 index b54a2c6f4..000000000 --- a/test/regex/repetition.dat +++ /dev/null @@ -1,79 +0,0 @@ -NOTE implicit vs. explicit repetitions : 2002-08-01 -# -# Glenn Fowler -# conforming matches (column 4) must match one of the following BREs -# NOMATCH -# (0,.)\((\(.\),\(.\))(?,?)(\2,\3)\)* -# (0,.)\((\(.\),\(.\))(\2,\3)(?,?)\)* -# i.e., each 3-tuple has two identical elements and one (?,?) -# - -E ((..)|(.)) NULL NOMATCH -E ((..)|(.))((..)|(.)) NULL NOMATCH -E ((..)|(.))((..)|(.))((..)|(.)) NULL NOMATCH - -E ((..)|(.)){1} NULL NOMATCH -E ((..)|(.)){2} NULL NOMATCH -E ((..)|(.)){3} NULL NOMATCH - -E ((..)|(.))* NULL (0,0) - -E ((..)|(.)) a (0,1)(0,1)(?,?)(0,1) -E ((..)|(.))((..)|(.)) a NOMATCH -E ((..)|(.))((..)|(.))((..)|(.)) a NOMATCH - -E ((..)|(.)){1} a (0,1)(0,1)(?,?)(0,1) -E ((..)|(.)){2} a NOMATCH -E ((..)|(.)){3} a NOMATCH - -E ((..)|(.))* a (0,1)(0,1)(?,?)(0,1) - -E ((..)|(.)) aa (0,2)(0,2)(0,2)(?,?) -E ((..)|(.))((..)|(.)) aa (0,2)(0,1)(?,?)(0,1)(1,2)(?,?)(1,2) -E ((..)|(.))((..)|(.))((..)|(.)) aa NOMATCH - -E ((..)|(.)){1} aa (0,2)(0,2)(0,2)(?,?) -E ((..)|(.)){2} aa (0,2)(1,2)(?,?)(1,2) -E ((..)|(.)){3} aa NOMATCH - -E ((..)|(.))* aa (0,2)(0,2)(0,2)(?,?) - -E ((..)|(.)) aaa (0,2)(0,2)(0,2)(?,?) -E ((..)|(.))((..)|(.)) aaa (0,3)(0,2)(0,2)(?,?)(2,3)(?,?)(2,3) -E ((..)|(.))((..)|(.))((..)|(.)) aaa (0,3)(0,1)(?,?)(0,1)(1,2)(?,?)(1,2)(2,3)(?,?)(2,3) - -E ((..)|(.)){1} aaa (0,2)(0,2)(0,2)(?,?) -E ((..)|(.)){2} aaa (0,3)(2,3)(?,?)(2,3) -E ((..)|(.)){3} aaa (0,3)(2,3)(?,?)(2,3) - -E ((..)|(.))* aaa (0,3)(2,3)(?,?)(2,3) - -E ((..)|(.)) aaaa (0,2)(0,2)(0,2)(?,?) -E ((..)|(.))((..)|(.)) aaaa (0,4)(0,2)(0,2)(?,?)(2,4)(2,4)(?,?) -E ((..)|(.))((..)|(.))((..)|(.)) aaaa (0,4)(0,2)(0,2)(?,?)(2,3)(?,?)(2,3)(3,4)(?,?)(3,4) - -E ((..)|(.)){1} aaaa (0,2)(0,2)(0,2)(?,?) -E ((..)|(.)){2} aaaa (0,4)(2,4)(2,4)(?,?) -E ((..)|(.)){3} aaaa (0,4)(3,4)(?,?)(3,4) - -E ((..)|(.))* aaaa (0,4)(2,4)(2,4)(?,?) - -E ((..)|(.)) aaaaa (0,2)(0,2)(0,2)(?,?) -E ((..)|(.))((..)|(.)) aaaaa (0,4)(0,2)(0,2)(?,?)(2,4)(2,4)(?,?) -E ((..)|(.))((..)|(.))((..)|(.)) aaaaa (0,5)(0,2)(0,2)(?,?)(2,4)(2,4)(?,?)(4,5)(?,?)(4,5) - -E ((..)|(.)){1} aaaaa (0,2)(0,2)(0,2)(?,?) -E ((..)|(.)){2} aaaaa (0,4)(2,4)(2,4)(?,?) -E ((..)|(.)){3} aaaaa (0,5)(4,5)(?,?)(4,5) - -E ((..)|(.))* aaaaa (0,5)(4,5)(?,?)(4,5) - -E ((..)|(.)) aaaaaa (0,2)(0,2)(0,2)(?,?) -E ((..)|(.))((..)|(.)) aaaaaa (0,4)(0,2)(0,2)(?,?)(2,4)(2,4)(?,?) -E ((..)|(.))((..)|(.))((..)|(.)) aaaaaa (0,6)(0,2)(0,2)(?,?)(2,4)(2,4)(?,?)(4,6)(4,6)(?,?) - -E ((..)|(.)){1} aaaaaa (0,2)(0,2)(0,2)(?,?) -E ((..)|(.)){2} aaaaaa (0,4)(2,4)(2,4)(?,?) -E ((..)|(.)){3} aaaaaa (0,6)(4,6)(4,6)(?,?) - -E ((..)|(.))* aaaaaa (0,6)(4,6)(4,6)(?,?) diff --git a/test/regex/rightassoc.dat b/test/regex/rightassoc.dat deleted file mode 100644 index ed7f28e62..000000000 --- a/test/regex/rightassoc.dat +++ /dev/null @@ -1,16 +0,0 @@ -NOTE left-assoc:pass-none right-assoc:pass-all : 2002-04-29 - -E (a|ab)(c|bcd)(d*) abcd (0,4)(0,2)(2,3)(3,4) -E (a|ab)(bcd|c)(d*) abcd (0,4)(0,2)(2,3)(3,4) -E (ab|a)(c|bcd)(d*) abcd (0,4)(0,2)(2,3)(3,4) -E (ab|a)(bcd|c)(d*) abcd (0,4)(0,2)(2,3)(3,4) - -E (a*)(b|abc)(c*) abc (0,3)(0,1)(1,2)(2,3) -E (a*)(abc|b)(c*) abc (0,3)(0,1)(1,2)(2,3) -E (a*)(b|abc)(c*) abc (0,3)(0,1)(1,2)(2,3) -E (a*)(abc|b)(c*) abc (0,3)(0,1)(1,2)(2,3) - -E (a|ab)(c|bcd)(d|.*) abcd (0,4)(0,2)(2,3)(3,4) -E (a|ab)(bcd|c)(d|.*) abcd (0,4)(0,2)(2,3)(3,4) -E (ab|a)(c|bcd)(d|.*) abcd (0,4)(0,2)(2,3)(3,4) -E (ab|a)(bcd|c)(d|.*) abcd (0,4)(0,2)(2,3)(3,4) diff --git a/test/regex/testregex.c b/test/regex/testregex.c deleted file mode 100644 index d18761dd3..000000000 --- a/test/regex/testregex.c +++ /dev/null @@ -1,2145 +0,0 @@ -/* - * regex(3) test harness - * - * build: cc -o testregex testregex.c - * help: testregex --man - * note: REG_* features are detected by #ifdef; if REG_* are enums - * then supply #define REG_foo REG_foo for each enum REG_foo - * - * Glenn Fowler - * AT&T Labs Research - * - * PLEASE: publish your tests so everyone can benefit - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of THIS SOFTWARE FILE (the "Software"), to deal in the Software - * without restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, and/or sell copies of the - * Software, and to permit persons to whom the Software is furnished to do - * so, subject to the following disclaimer: - * - * THIS SOFTWARE IS PROVIDED BY AT&T ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL AT&T BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -static const char id[] = "\n@(#)$Id: testregex (AT&T Research) 2005-05-20 $\0\n"; - -#if _PACKAGE_ast -#include -#else -#include -#endif - -#include -#include -#include -#include -#include -#include -#include - -#ifdef __STDC__ -#include -#include -#endif - -#if !_PACKAGE_ast -#undef REG_DISCIPLINE -#endif - -#ifndef REG_DELIMITED -#undef _REG_subcomp -#endif - -#define TEST_ARE 0x00000001 -#define TEST_BRE 0x00000002 -#define TEST_ERE 0x00000004 -#define TEST_KRE 0x00000008 -#define TEST_LRE 0x00000010 -#define TEST_SRE 0x00000020 - -#define TEST_EXPAND 0x00000040 -#define TEST_LENIENT 0x00000080 - -#define TEST_QUERY 0x00000100 -#define TEST_SUB 0x00000200 -#define TEST_UNSPECIFIED 0x00000400 -#define TEST_VERIFY 0x00000800 -#define TEST_AND 0x00001000 -#define TEST_OR 0x00002000 - -#define TEST_DELIMIT 0x00010000 -#define TEST_OK 0x00020000 -#define TEST_SAME 0x00040000 - -#define TEST_ACTUAL 0x00100000 -#define TEST_BASELINE 0x00200000 -#define TEST_FAIL 0x00400000 -#define TEST_PASS 0x00800000 -#define TEST_SUMMARY 0x01000000 - -#define TEST_IGNORE_ERROR 0x02000000 -#define TEST_IGNORE_OVER 0x04000000 -#define TEST_IGNORE_POSITION 0x08000000 - -#define TEST_CATCH 0x10000000 -#define TEST_VERBOSE 0x20000000 - -#define TEST_GLOBAL (TEST_ACTUAL|TEST_AND|TEST_BASELINE|TEST_CATCH|TEST_FAIL|TEST_IGNORE_ERROR|TEST_IGNORE_OVER|TEST_IGNORE_POSITION|TEST_OR|TEST_PASS|TEST_SUMMARY|TEST_VERBOSE) - -#ifdef REG_DISCIPLINE - - -#include - -typedef struct Disc_s -{ - regdisc_t disc; - int ordinal; - Sfio_t* sp; -} Disc_t; - -static void* -compf(const regex_t* re, const char* xstr, size_t xlen, regdisc_t* disc) -{ - Disc_t* dp = (Disc_t*)disc; - - return (void*)++dp->ordinal; -} - -static int -execf(const regex_t* re, void* data, const char* xstr, size_t xlen, const char* sstr, size_t slen, char** snxt, regdisc_t* disc) -{ - Disc_t* dp = (Disc_t*)disc; - - sfprintf(dp->sp, "{%-.*s}(%d:%d)", xlen, xstr, (int)data, slen); - return atoi(xstr); -} - -static void* -resizef(void* handle, void* data, size_t size) -{ - if (!size) - return 0; - return stkalloc((Sfio_t*)handle, size); -} - -#endif - -#ifndef NiL -#ifdef __STDC__ -#define NiL 0 -#else -#define NiL (char*)0 -#endif -#endif - -#define H(x) do{if(html)fprintf(stderr,x);}while(0) -#define T(x) fprintf(stderr,x) - -static void -help(int html) -{ -H("\n"); -H("\n"); -H("\n"); -H("testregex man document\n"); -H("\n"); -H("\n"); -H("
\n");
-T("NAME\n");
-T("  testregex - regex(3) test harness\n");
-T("\n");
-T("SYNOPSIS\n");
-T("  testregex [ options ]\n");
-T("\n");
-T("DESCRIPTION\n");
-T("  testregex reads regex(3) test specifications, one per line, from the\n");
-T("  standard input and writes one output line for each failed test. A\n");
-T("  summary line is written after all tests are done. Each successful\n");
-T("  test is run again with REG_NOSUB. Unsupported features are noted\n");
-T("  before the first test, and tests requiring these features are\n");
-T("  silently ignored.\n");
-T("\n");
-T("OPTIONS\n");
-T("  -c	catch signals and non-terminating calls\n");
-T("  -e	ignore error return mismatches\n");
-T("  -h	list help on standard error\n");
-T("  -n	do not repeat successful tests with regnexec()\n");
-T("  -o	ignore match[] overrun errors\n");
-T("  -p	ignore negative position mismatches\n");
-T("  -s	use stack instead of malloc\n");
-T("  -x	do not repeat successful tests with REG_NOSUB\n");
-T("  -v	list each test line\n");
-T("  -A	list failed test lines with actual answers\n");
-T("  -B	list all test lines with actual answers\n");
-T("  -F	list failed test lines\n");
-T("  -P	list passed test lines\n");
-T("  -S	output one summary line\n");
-T("\n");
-T("INPUT FORMAT\n");
-T("  Input lines may be blank, a comment beginning with #, or a test\n");
-T("  specification. A specification is five fields separated by one\n");
-T("  or more tabs. NULL denotes the empty string and NIL denotes the\n");
-T("  0 pointer.\n");
-T("\n");
-T("  Field 1: the regex(3) flags to apply, one character per REG_feature\n");
-T("  flag. The test is skipped if REG_feature is not supported by the\n");
-T("  implementation. If the first character is not [BEASKL] then the\n");
-T("  specification is a global control line. One or more of [BEASKL] may be\n");
-T("  specified; the test will be repeated for each mode.\n");
-T("\n");
-T("    B 	basic			BRE	(grep, ed, sed)\n");
-T("    E 	REG_EXTENDED		ERE	(egrep)\n");
-T("    A	REG_AUGMENTED		ARE	(egrep with negation)\n");
-T("    S	REG_SHELL		SRE	(sh glob)\n");
-T("    K	REG_SHELL|REG_AUGMENTED	KRE	(ksh glob)\n");
-T("    L	REG_LITERAL		LRE	(fgrep)\n");
-T("\n");
-T("    a	REG_LEFT|REG_RIGHT	implicit ^...$\n");
-T("    b	REG_NOTBOL		lhs does not match ^\n");
-T("    c	REG_COMMENT		ignore space and #...\\n\n");
-T("    d	REG_SHELL_DOT		explicit leading . match\n");
-T("    e	REG_NOTEOL		rhs does not match $\n");
-T("    f	REG_MULTIPLE		multiple \\n separated patterns\n");
-T("    g	FNM_LEADING_DIR		testfnmatch only -- match until /\n");
-T("    h	REG_MULTIREF		multiple digit backref\n");
-T("    i	REG_ICASE		ignore case\n");
-T("    j	REG_SPAN		. matches \\n\n");
-T("    k	REG_ESCAPE		\\ to ecape [...] delimiter\n");
-T("    l	REG_LEFT		implicit ^...\n");
-T("    m	REG_MINIMAL		minimal match\n");
-T("    n	REG_NEWLINE		explicit \\n match\n");
-T("    o	REG_ENCLOSED		(|&) magic inside [@|&](...)\n");
-T("    p	REG_SHELL_PATH		explicit / match\n");
-T("    q	REG_DELIMITED		delimited pattern\n");
-T("    r	REG_RIGHT		implicit ...$\n");
-T("    s	REG_SHELL_ESCAPED	\\ not special\n");
-T("    t	REG_MUSTDELIM		all delimiters must be specified\n");
-T("    u	standard unspecified behavior -- errors not counted\n");
-T("    w	REG_NOSUB		no subexpression match array\n");
-T("    x	REG_LENIENT		let some errors slide\n");
-T("    y	REG_LEFT		regexec() implicit ^...\n");
-T("    z	REG_NULL		NULL subexpressions ok\n");
-T("    $	                        expand C \\c escapes in fields 2 and 3\n");
-T("    /	                        field 2 is a regsubcomp() expression\n");
-T("\n");
-T("  Field 1 control lines:\n");
-T("\n");
-T("    C		set LC_COLLATE and LC_CTYPE to locale in field 2\n");
-T("\n");
-T("    ?test ...	output field 5 if passed and != EXPECTED, silent otherwise\n");
-T("    &test ...	output field 5 if current and previous passed\n");
-T("    |test ...	output field 5 if current passed and previous failed\n");
-T("    ; ...	output field 2 if previous failed\n");
-T("    {test ...	skip if failed until }\n");
-T("    }		end of skip\n");
-T("\n");
-T("    : comment		comment copied as output NOTE\n");
-T("    :comment:test	:comment: ignored\n");
-T("    N[OTE] comment	comment copied as output NOTE\n");
-T("    T[EST] comment	comment\n");
-T("\n");
-T("    number		use number for nmatch (20 by default)\n");
-T("\n");
-T("  Field 2: the regular expression pattern; SAME uses the pattern from\n");
-T("    the previous specification.\n");
-T("\n");
-T("  Field 3: the string to match.\n");
-T("\n");
-T("  Field 4: the test outcome. This is either one of the posix error\n");
-T("    codes (with REG_ omitted) or the match array, a list of (m,n)\n");
-T("    entries with m and n being first and last+1 positions in the\n");
-T("    field 3 string, or NULL if REG_NOSUB is in effect and success\n");
-T("    is expected. BADPAT is acceptable in place of any regcomp(3)\n");
-T("    error code. The match[] array is initialized to (-2,-2) before\n");
-T("    each test. All array elements from 0 to nmatch-1 must be specified\n");
-T("    in the outcome. Unspecified endpoints (offset -1) are denoted by ?.\n");
-T("    Unset endpoints (offset -2) are denoted by X. {x}(o:n) denotes a\n");
-T("    matched (?{...}) expression, where x is the text enclosed by {...},\n");
-T("    o is the expression ordinal counting from 1, and n is the length of\n");
-T("    the unmatched portion of the subject string. If x starts with a\n");
-T("    number then that is the return value of re_execf(), otherwise 0 is\n");
-T("    returned.\n");
-T("\n");
-T("  Field 5: optional comment appended to the report.\n");
-T("\n");
-T("CAVEAT\n");
-T("    If a regex implementation misbehaves with memory then all bets are off.\n");
-T("\n");
-T("CONTRIBUTORS\n");
-T("  Glenn Fowler    gsf@research.att.com        (ksh strmatch, regex extensions)\n");
-T("  David Korn      dgk@research.att.com        (ksh glob matcher)\n");
-T("  Doug McIlroy    mcilroy@dartmouth.edu       (ast regex/testre in C++)\n");
-T("  Tom Lord        lord@regexps.com            (rx tests)\n");
-T("  Henry Spencer   henry@zoo.toronto.edu       (original public regex)\n");
-T("  Andrew Hume     andrew@research.att.com     (gre tests)\n");
-T("  John Maddock    John_Maddock@compuserve.com (regex++ tests)\n");
-T("  Philip Hazel    ph10@cam.ac.uk              (pcre tests)\n");
-T("  Ville Laurikari vl@iki.fi                   (libtre tests)\n");
-H("
\n"); -H("\n"); -H("\n"); -} - -#ifndef elementsof -#define elementsof(x) (sizeof(x)/sizeof(x[0])) -#endif - -#ifndef streq -#define streq(a,b) (*(a)==*(b)&&!strcmp(a,b)) -#endif - -#define HUNG 5 -#define NOTEST (~0) - -#ifndef REG_TEST_DEFAULT -#define REG_TEST_DEFAULT 0 -#endif - -#ifndef REG_EXEC_DEFAULT -#define REG_EXEC_DEFAULT 0 -#endif - -static const char* unsupported[] = -{ - "BASIC", -#ifndef REG_EXTENDED - "EXTENDED", -#endif -#ifndef REG_AUGMENTED - "AUGMENTED", -#endif -#ifndef REG_SHELL - "SHELL", -#endif - -#ifndef REG_COMMENT - "COMMENT", -#endif -#ifndef REG_DELIMITED - "DELIMITED", -#endif -#ifndef REG_DISCIPLINE - "DISCIPLINE", -#endif -#ifndef REG_ESCAPE - "ESCAPE", -#endif -#ifndef REG_ICASE - "ICASE", -#endif -#ifndef REG_LEFT - "LEFT", -#endif -#ifndef REG_LENIENT - "LENIENT", -#endif -#ifndef REG_LITERAL - "LITERAL", -#endif -#ifndef REG_MINIMAL - "MINIMAL", -#endif -#ifndef REG_MULTIPLE - "MULTIPLE", -#endif -#ifndef REG_MULTIREF - "MULTIREF", -#endif -#ifndef REG_MUSTDELIM - "MUSTDELIM", -#endif -#ifndef REG_NEWLINE - "NEWLINE", -#endif -#ifndef REG_NOTBOL - "NOTBOL", -#endif -#ifndef REG_NOTEOL - "NOTEOL", -#endif -#ifndef REG_NULL - "NULL", -#endif -#ifndef REG_RIGHT - "RIGHT", -#endif -#ifndef REG_SHELL_DOT - "SHELL_DOT", -#endif -#ifndef REG_SHELL_ESCAPED - "SHELL_ESCAPED", -#endif -#ifndef REG_SHELL_GROUP - "SHELL_GROUP", -#endif -#ifndef REG_SHELL_PATH - "SHELL_PATH", -#endif -#ifndef REG_SPAN - "SPAN", -#endif -#if REG_NOSUB & REG_TEST_DEFAULT - "SUBMATCH", -#endif -#if !_REG_nexec - "regnexec", -#endif -#if !_REG_subcomp - "regsubcomp", -#endif - 0 -}; - -#ifndef REG_COMMENT -#define REG_COMMENT NOTEST -#endif -#ifndef REG_DELIMITED -#define REG_DELIMITED NOTEST -#endif -#ifndef REG_ESCAPE -#define REG_ESCAPE NOTEST -#endif -#ifndef REG_ICASE -#define REG_ICASE NOTEST -#endif -#ifndef REG_LEFT -#define REG_LEFT NOTEST -#endif -#ifndef REG_LENIENT -#define REG_LENIENT 0 -#endif -#ifndef REG_MINIMAL -#define REG_MINIMAL NOTEST -#endif -#ifndef REG_MULTIPLE -#define REG_MULTIPLE NOTEST -#endif -#ifndef REG_MULTIREF -#define REG_MULTIREF NOTEST -#endif -#ifndef REG_MUSTDELIM -#define REG_MUSTDELIM NOTEST -#endif -#ifndef REG_NEWLINE -#define REG_NEWLINE NOTEST -#endif -#ifndef REG_NOTBOL -#define REG_NOTBOL NOTEST -#endif -#ifndef REG_NOTEOL -#define REG_NOTEOL NOTEST -#endif -#ifndef REG_NULL -#define REG_NULL NOTEST -#endif -#ifndef REG_RIGHT -#define REG_RIGHT NOTEST -#endif -#ifndef REG_SHELL_DOT -#define REG_SHELL_DOT NOTEST -#endif -#ifndef REG_SHELL_ESCAPED -#define REG_SHELL_ESCAPED NOTEST -#endif -#ifndef REG_SHELL_GROUP -#define REG_SHELL_GROUP NOTEST -#endif -#ifndef REG_SHELL_PATH -#define REG_SHELL_PATH NOTEST -#endif -#ifndef REG_SPAN -#define REG_SPAN NOTEST -#endif - -#define REG_UNKNOWN (-1) - -#ifndef REG_ENEWLINE -#define REG_ENEWLINE (REG_UNKNOWN-1) -#endif -#ifndef REG_ENULL -#ifndef REG_EMPTY -#define REG_ENULL (REG_UNKNOWN-2) -#else -#define REG_ENULL REG_EMPTY -#endif -#endif -#ifndef REG_ECOUNT -#define REG_ECOUNT (REG_UNKNOWN-3) -#endif -#ifndef REG_BADESC -#define REG_BADESC (REG_UNKNOWN-4) -#endif -#ifndef REG_EMEM -#define REG_EMEM (REG_UNKNOWN-5) -#endif -#ifndef REG_EHUNG -#define REG_EHUNG (REG_UNKNOWN-6) -#endif -#ifndef REG_EBUS -#define REG_EBUS (REG_UNKNOWN-7) -#endif -#ifndef REG_EFAULT -#define REG_EFAULT (REG_UNKNOWN-8) -#endif -#ifndef REG_EFLAGS -#define REG_EFLAGS (REG_UNKNOWN-9) -#endif -#ifndef REG_EDELIM -#define REG_EDELIM (REG_UNKNOWN-9) -#endif - -static const struct { int code; char* name; } codes[] = -{ - {REG_UNKNOWN, "UNKNOWN"}, - {REG_NOMATCH, "NOMATCH"}, - {REG_BADPAT, "BADPAT"}, - {REG_ECOLLATE, "ECOLLATE"}, - {REG_ECTYPE, "ECTYPE"}, - {REG_EESCAPE, "EESCAPE"}, - {REG_ESUBREG, "ESUBREG"}, - {REG_EBRACK, "EBRACK"}, - {REG_EPAREN, "EPAREN"}, - {REG_EBRACE, "EBRACE"}, - {REG_BADBR, "BADBR"}, - {REG_ERANGE, "ERANGE"}, - {REG_ESPACE, "ESPACE"}, - {REG_BADRPT, "BADRPT"}, - {REG_ENEWLINE, "ENEWLINE"}, - {REG_ENULL, "ENULL"}, - {REG_ECOUNT, "ECOUNT"}, - {REG_BADESC, "BADESC"}, - {REG_EMEM, "EMEM"}, - {REG_EHUNG, "EHUNG"}, - {REG_EBUS, "EBUS"}, - {REG_EFAULT, "EFAULT"}, - {REG_EFLAGS, "EFLAGS"}, - {REG_EDELIM, "EDELIM"}, -}; - -static struct -{ - regmatch_t NOMATCH; - int errors; - int extracted; - int ignored; - int lineno; - int passed; - int signals; - int unspecified; - int verify; - int warnings; - char* file; - char* stack; - char* which; - jmp_buf gotcha; -#ifdef REG_DISCIPLINE - Disc_t disc; -#endif -} state; - -static void -quote(char* s, int len, unsigned long test) -{ - unsigned char* u = (unsigned char*)s; - unsigned char* e; - int c; - - if (!u) - printf("NIL"); - else if (!*u && len <= 1) - printf("NULL"); - else if (test & TEST_EXPAND) - { - if (len < 0) - len = strlen((char*)u); - e = u + len; - if (test & TEST_DELIMIT) - printf("\""); - while (u < e) - switch (c = *u++) - { - case '\\': - printf("\\\\"); - break; - case '"': - if (test & TEST_DELIMIT) - printf("\\\""); - else - printf("\""); - break; - case '\a': - printf("\\a"); - break; - case '\b': - printf("\\b"); - break; - case 033: - printf("\\e"); - break; - case '\f': - printf("\\f"); - break; - case '\n': - printf("\\n"); - break; - case '\r': - printf("\\r"); - break; - case '\t': - printf("\\t"); - break; - case '\v': - printf("\\v"); - break; - default: - if (!iscntrl(c) && isprint(c)) - putchar(c); - else - printf("\\x%02x", c); - break; - } - if (test & TEST_DELIMIT) - printf("\""); - } - else - printf("%s", s); -} - -static void -report(char* comment, char* fun, char* re, char* s, int len, char* msg, int flags, unsigned long test) -{ - if (state.file) - printf("%s:", state.file); - printf("%d:", state.lineno); - if (re) - { - printf(" "); - quote(re, -1, test|TEST_DELIMIT); - if (s) - { - printf(" versus "); - quote(s, len, test|TEST_DELIMIT); - } - } - if (test & TEST_UNSPECIFIED) - { - state.unspecified++; - printf(" unspecified behavior"); - } - else - state.errors++; - if (state.which) - printf(" %s", state.which); - if (flags & REG_NOSUB) - printf(" NOSUB"); - if (fun) - printf(" %s", fun); - if (comment[strlen(comment)-1] == '\n') - printf(" %s", comment); - else - { - printf(" %s: ", comment); - if (msg) - printf("%s: ", msg); - } -} - -static void -error(regex_t* preg, int code) -{ - char* msg; - char buf[256]; - - switch (code) - { - case REG_EBUS: - msg = "bus error"; - break; - case REG_EFAULT: - msg = "memory fault"; - break; - case REG_EHUNG: - msg = "did not terminate"; - break; - default: - regerror(code, preg, msg = buf, sizeof buf); - break; - } - printf("%s\n", msg); -} - -static void -bad(char* comment, char* re, char* s, int len, unsigned long test) -{ - printf("bad test case "); - report(comment, NiL, re, s, len, NiL, 0, test); - exit(1); -} - -static int -escape(char* s) -{ - char* b; - char* t; - char* q; - char* e; - int c; - - for (b = t = s; (*t = *s); s++, t++) - if (*s == '\\') - switch (*++s) - { - case '\\': - break; - case 'a': - *t = '\a'; - break; - case 'b': - *t = '\b'; - break; - case 'c': - if ((*t = *++s)) - *t &= 037; - else - s--; - break; - case 'e': - case 'E': - *t = 033; - break; - case 'f': - *t = '\f'; - break; - case 'n': - *t = '\n'; - break; - case 'r': - *t = '\r'; - break; - case 's': - *t = ' '; - break; - case 't': - *t = '\t'; - break; - case 'v': - *t = '\v'; - break; - case 'u': - case 'x': - c = 0; - q = c == 'u' ? (s + 5) : (char*)0; - e = s + 1; - while (!e || !q || s < q) - { - switch (*++s) - { - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - c = (c << 4) + *s - 'a' + 10; - continue; - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - c = (c << 4) + *s - 'A' + 10; - continue; - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - c = (c << 4) + *s - '0'; - continue; - case '{': - case '[': - if (s != e) - { - s--; - break; - } - e = 0; - continue; - case '}': - case ']': - if (e) - s--; - break; - default: - s--; - break; - } - break; - } - *t = c; - break; - case '0': case '1': case '2': case '3': - case '4': case '5': case '6': case '7': - c = *s - '0'; - q = s + 2; - while (s < q) - { - switch (*++s) - { - case '0': case '1': case '2': case '3': - case '4': case '5': case '6': case '7': - c = (c << 3) + *s - '0'; - break; - default: - q = --s; - break; - } - } - *t = c; - break; - default: - *(s + 1) = 0; - bad("invalid C \\ escape\n", s - 1, NiL, 0, 0); - } - return t - b; -} - -static void -matchoffprint(int off) -{ - switch (off) - { - case -2: - printf("X"); - break; - case -1: - printf("?"); - break; - default: - printf("%d", off); - break; - } -} - -static void -matchprint(regmatch_t* match, int nmatch, int nsub, char* ans, unsigned long test) -{ - int i; - - for (; nmatch > nsub + 1; nmatch--) - if ((match[nmatch-1].rm_so != -1 || match[nmatch-1].rm_eo != -1) && (!(test & TEST_IGNORE_POSITION) || (match[nmatch-1].rm_so >= 0 && match[nmatch-1].rm_eo >= 0))) - break; - for (i = 0; i < nmatch; i++) - { - printf("("); - matchoffprint(match[i].rm_so); - printf(","); - matchoffprint(match[i].rm_eo); - printf(")"); - } - if (!(test & (TEST_ACTUAL|TEST_BASELINE))) - { - if (ans) - printf(" expected: %s", ans); - printf("\n"); - } -} - -static int -matchcheck(regmatch_t* match, int nmatch, int nsub, char* ans, char* re, char* s, int len, int flags, unsigned long test) -{ - char* p; - int i; - int m; - int n; - - if (streq(ans, "OK")) - return test & (TEST_BASELINE|TEST_PASS|TEST_VERIFY); - for (i = 0, p = ans; i < nmatch && *p; i++) - { - if (*p == '{') - { -#ifdef REG_DISCIPLINE - char* x; - - x = sfstruse(state.disc.sp); - if (strcmp(p, x)) - { - if (test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_QUERY|TEST_SUMMARY|TEST_VERIFY)) - return 0; - report("callout failed", NiL, re, s, len, NiL, flags, test); - quote(p, -1, test); - printf(" expected, "); - quote(x, -1, test); - printf(" returned\n"); - } -#endif - break; - } - if (*p++ != '(') - bad("improper answer\n", re, s, -1, test); - if (*p == '?') - { - m = -1; - p++; - } - else - m = strtol(p, &p, 10); - if (*p++ != ',') - bad("improper answer\n", re, s, -1, test); - if (*p == '?') - { - n = -1; - p++; - } - else - n = strtol(p, &p, 10); - if (*p++ != ')') - bad("improper answer\n", re, s, -1, test); - if (m!=match[i].rm_so || n!=match[i].rm_eo) - { - if (!(test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_QUERY|TEST_SUMMARY|TEST_VERIFY))) - { - report("failed: match was", NiL, re, s, len, NiL, flags, test); - matchprint(match, nmatch, nsub, ans, test); - } - return 0; - } - } - for (; i < nmatch; i++) - { - if (match[i].rm_so!=-1 || match[i].rm_eo!=-1) - { - if (!(test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_QUERY|TEST_VERIFY))) - { - if ((test & TEST_IGNORE_POSITION) && (match[i].rm_so<0 || match[i].rm_eo<0)) - { - state.ignored++; - return 0; - } - if (!(test & TEST_SUMMARY)) - { - report("failed: match was", NiL, re, s, len, NiL, flags, test); - matchprint(match, nmatch, nsub, ans, test); - } - } - return 0; - } - } - if (!(test & TEST_IGNORE_OVER) && match[nmatch].rm_so != state.NOMATCH.rm_so) - { - if (!(test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_QUERY|TEST_SUMMARY|TEST_VERIFY))) - { - report("failed: overran match array", NiL, re, s, len, NiL, flags, test); - matchprint(match, nmatch + 1, nsub, NiL, test); - } - return 0; - } - return 1; -} - -static void -sigunblock(int s) -{ -#ifdef SIG_SETMASK - int op; - sigset_t mask; - - sigemptyset(&mask); - if (s) - { - sigaddset(&mask, s); - op = SIG_UNBLOCK; - } - else op = SIG_SETMASK; - sigprocmask(op, &mask, NiL); -#else -#ifdef sigmask - sigsetmask(s ? (sigsetmask(0L) & ~sigmask(s)) : 0L); -#endif -#endif -} - -static void -gotcha(int sig) -{ - int ret; - - signal(sig, gotcha); - alarm(0); - state.signals++; - switch (sig) - { - case SIGALRM: - ret = REG_EHUNG; - break; - case SIGBUS: - ret = REG_EBUS; - break; - default: - ret = REG_EFAULT; - break; - } - sigunblock(sig); - longjmp(state.gotcha, ret); -} - -static char* -my_getline(FILE* fp) -{ - static char buf[32 * 1024]; - - register char* s = buf; - register char* e = &buf[sizeof(buf)]; - register char* b; - - for (;;) - { - if (!(b = fgets(s, e - s, fp))) - return 0; - state.lineno++; - s += strlen(s); - if (s == b || *--s != '\n' || s == b || *(s - 1) != '\\') - { - *s = 0; - break; - } - s--; - } - return buf; -} - -static unsigned long -note(unsigned long level, char* msg, unsigned long skip, unsigned long test) -{ - if (!(test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_SUMMARY)) && !skip) - { - printf("NOTE\t"); - if (msg) - printf("%s: ", msg); - printf("skipping lines %d", state.lineno); - } - return skip | level; -} - -#define TABS(n) &ts[7-((n)&7)] - -static char ts[] = "\t\t\t\t\t\t\t"; - -static unsigned long -extract(int* tabs, char* spec, char* re, char* s, char* ans, char* msg, char* accept, regmatch_t* match, int nmatch, int nsub, unsigned long skip, unsigned long level, unsigned long test) -{ - if (test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_OK|TEST_PASS|TEST_SUMMARY)) - { - state.extracted = 1; - if (test & TEST_OK) - { - state.passed++; - if ((test & TEST_VERIFY) && !(test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_SUMMARY))) - { - if (msg && strcmp(msg, "EXPECTED")) - printf("NOTE\t%s\n", msg); - return skip; - } - test &= ~(TEST_PASS|TEST_QUERY); - } - if (test & (TEST_QUERY|TEST_VERIFY)) - { - if (test & TEST_BASELINE) - test &= ~(TEST_BASELINE|TEST_PASS); - else - test |= TEST_PASS; - skip |= level; - } - if (!(test & TEST_OK)) - { - if (test & TEST_UNSPECIFIED) - state.unspecified++; - else - state.errors++; - } - if (test & (TEST_PASS|TEST_SUMMARY)) - return skip; - test &= ~TEST_DELIMIT; - printf("%s%s", spec, TABS(*tabs++)); - if ((test & (TEST_BASELINE|TEST_SAME)) == (TEST_BASELINE|TEST_SAME)) - printf("SAME"); - else - quote(re, -1, test); - printf("%s", TABS(*tabs++)); - quote(s, -1, test); - printf("%s", TABS(*tabs++)); - if (!(test & (TEST_ACTUAL|TEST_BASELINE)) || (!accept && !match)) - printf("%s", ans); - else if (accept) - printf("%s", accept); - else - matchprint(match, nmatch, nsub, NiL, test); - if (msg) - printf("%s%s", TABS(*tabs++), msg); - putchar('\n'); - } - else if (test & TEST_QUERY) - skip = note(level, msg, skip, test); - else if (test & TEST_VERIFY) - state.extracted = 1; - return skip; -} - -static int -catchfree(regex_t* preg, int flags, int* tabs, char* spec, char* re, char* s, char* ans, char* msg, char* accept, regmatch_t* match, int nmatch, int nsub, unsigned long skip, unsigned long level, unsigned long test) -{ - int eret; - - if (!(test & TEST_CATCH)) - { - regfree(preg); - eret = 0; - } - else if (!(eret = setjmp(state.gotcha))) - { - alarm(HUNG); - regfree(preg); - alarm(0); - } - else if (test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_QUERY|TEST_SUMMARY|TEST_VERIFY)) - extract(tabs, spec, re, s, ans, msg, NiL, NiL, 0, 0, skip, level, test); - else - { - report("failed", "regfree", re, NiL, -1, msg, flags, test); - error(preg, eret); - } - return eret; -} - -int -old_main(int unused_param_argc, char** argv) -{ - int flags; - int cflags; - int eflags; - int nmatch; - int nexec; - int nstr; - int cret; - int eret; - int nsub; - int i; - int j; - int expected; - int got; - int locale; - int subunitlen = 0; - int testno; - unsigned long level; - unsigned long skip; - char* p; - char* line; - char* spec; - char* re; - char* s; - char* ans; - char* msg; - char* fun; - char* ppat = NULL; - char* subunit = NULL; - char* version; - char* field[6]; - char* delim[6]; - FILE* fp; - int tabs[6]; - char unit[64]; - regmatch_t match[100]; - regex_t preg; - - static char pat[32 * 1024]; - - int nonosub = REG_NOSUB == 0; - int nonexec = 0; - - unsigned long test = 0; - - static char* filter[] = { "-", 0 }; - - state.NOMATCH.rm_so = state.NOMATCH.rm_eo = -2; - p = unit; - version = (char*)id + 10; - while (p < &unit[sizeof(unit)-1] && (*p = *version++) && !isspace(*p)) - p++; - *p = 0; - while ((p = *++argv) && *p == '-') - for (;;) - { - switch (*++p) - { - case 0: - break; - case 'c': - test |= TEST_CATCH; - continue; - case 'e': - test |= TEST_IGNORE_ERROR; - continue; - case 'h': - case '?': - help(0); - return 2; - case '-': - help(p[1] == 'h'); - return 2; - case 'n': - nonexec = 1; - continue; - case 'o': - test |= TEST_IGNORE_OVER; - continue; - case 'p': - test |= TEST_IGNORE_POSITION; - continue; - case 's': -#ifdef REG_DISCIPLINE - if (!(state.stack = stkalloc(stkstd, 0))) - fprintf(stderr, "%s: out of space [stack]", unit); - state.disc.disc.re_resizef = resizef; - state.disc.disc.re_resizehandle = (void*)stkstd; -#endif - continue; - case 'x': - nonosub = 1; - continue; - case 'v': - test |= TEST_VERBOSE; - continue; - case 'A': - test |= TEST_ACTUAL; - continue; - case 'B': - test |= TEST_BASELINE; - continue; - case 'F': - test |= TEST_FAIL; - continue; - case 'P': - test |= TEST_PASS; - continue; - case 'S': - test |= TEST_SUMMARY; - continue; - default: - fprintf(stderr, "%s: %c: invalid option\n", unit, *p); - return 2; - } - break; - } - if (!*argv) - argv = filter; - locale = 0; - while ((state.file = *argv++)) - { - if (streq(state.file, "-") || streq(state.file, "/dev/stdin") || streq(state.file, "/dev/fd/0")) - { - state.file = 0; - fp = stdin; - } - else if (!(fp = fopen(state.file, "r"))) - { - fprintf(stderr, "%s: %s: cannot read\n", unit, state.file); - return 2; - } - testno = state.errors = state.ignored = state.lineno = state.passed = - state.signals = state.unspecified = state.warnings = 0; - skip = 0; - level = 1; - if (!(test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_SUMMARY))) - { - printf("TEST\t%s ", unit); - if ((s = state.file)) - { - subunit = p = 0; - for (;;) - { - switch (*s++) - { - case 0: - break; - case '/': - subunit = s; - continue; - case '.': - p = s - 1; - continue; - default: - continue; - } - break; - } - if (!subunit) - subunit = state.file; - if (p < subunit) - p = s - 1; - subunitlen = p - subunit; - printf("%-.*s ", subunitlen, subunit); - } - else - subunit = 0; - for (s = version; *s && (*s != ' ' || *(s + 1) != '$'); s++) - putchar(*s); - if (test & TEST_CATCH) - printf(", catch"); - if (test & TEST_IGNORE_ERROR) - printf(", ignore error code mismatches"); - if (test & TEST_IGNORE_POSITION) - printf(", ignore negative position mismatches"); -#ifdef REG_DISCIPLINE - if (state.stack) - printf(", stack"); -#endif - if (test & TEST_VERBOSE) - printf(", verbose"); - printf("\n"); -#ifdef REG_VERSIONID - if (regerror(REG_VERSIONID, NiL, pat, sizeof(pat)) > 0) - s = pat; - else -#endif -#ifdef REG_TEST_VERSION - s = REG_TEST_VERSION; -#else - s = "regex"; -#endif - printf("NOTE\t%s\n", s); - if (elementsof(unsupported) > 1) - { -#if (REG_TEST_DEFAULT & (REG_AUGMENTED|REG_EXTENDED|REG_SHELL)) || !defined(REG_EXTENDED) - i = 0; -#else - i = REG_EXTENDED != 0; -#endif - for (got = 0; i < elementsof(unsupported) - 1; i++) - { - if (!got) - { - got = 1; - printf("NOTE\tunsupported: %s", unsupported[i]); - } - else - printf(",%s", unsupported[i]); - } - if (got) - printf("\n"); - } - } -#ifdef REG_DISCIPLINE - state.disc.disc.re_version = REG_VERSION; - state.disc.disc.re_compf = compf; - state.disc.disc.re_execf = execf; - if (!(state.disc.sp = sfstropen())) - bad("out of space [discipline string stream]\n", NiL, NiL, 0, 0); - preg.re_disc = &state.disc.disc; -#endif - if (test & TEST_CATCH) - { - signal(SIGALRM, gotcha); - signal(SIGBUS, gotcha); - signal(SIGSEGV, gotcha); - } - while ((p = my_getline(fp))) - { - - /* parse: */ - - line = p; - if (*p == ':' && !isspace(*(p + 1))) - { - while (*++p && *p != ':'); - if (!*p++) - { - if (test & TEST_BASELINE) - printf("%s\n", line); - continue; - } - } - while (isspace(*p)) - p++; - if (*p == 0 || *p == '#' || *p == 'T') - { - if (test & TEST_BASELINE) - printf("%s\n", line); - continue; - } - if (*p == ':' || *p == 'N') - { - if (test & TEST_BASELINE) - printf("%s\n", line); - else if (!(test & (TEST_ACTUAL|TEST_FAIL|TEST_PASS|TEST_SUMMARY))) - { - while (*++p && !isspace(*p)); - while (isspace(*p)) - p++; - printf("NOTE %s\n", p); - } - continue; - } - j = 0; - i = 0; - field[i++] = p; - for (;;) - { - switch (*p++) - { - case 0: - p--; - j = 0; - goto checkfield; - case '\t': - *(delim[i] = p - 1) = 0; - j = 1; - checkfield: - s = field[i - 1]; - if (streq(s, "NIL")) - field[i - 1] = 0; - else if (streq(s, "NULL")) - *s = 0; - while (*p == '\t') - { - p++; - j++; - } - tabs[i - 1] = j; - if (!*p) - break; - if (i >= elementsof(field)) - bad("too many fields\n", NiL, NiL, 0, 0); - field[i++] = p; - /*FALLTHROUGH*/ - default: - continue; - } - break; - } - if (!(spec = field[0])) - bad("NIL spec\n", NiL, NiL, 0, 0); - - /* interpret: */ - - cflags = REG_TEST_DEFAULT; - eflags = REG_EXEC_DEFAULT; - test &= TEST_GLOBAL; - state.extracted = 0; - nmatch = 20; - nsub = -1; - for (p = spec; *p; p++) - { - if (isdigit(*p)) - { - nmatch = strtol(p, &p, 10); - if (nmatch >= elementsof(match)) - bad("nmatch must be < 100\n", NiL, NiL, 0, 0); - p--; - continue; - } - switch (*p) - { - case 'A': - test |= TEST_ARE; - continue; - case 'B': - test |= TEST_BRE; - continue; - case 'C': - if (!(test & TEST_QUERY) && !(skip & level)) - bad("locale must be nested\n", NiL, NiL, 0, 0); - test &= ~TEST_QUERY; - if (locale) - bad("locale nesting not supported\n", NiL, NiL, 0, 0); - if (i != 2) - bad("locale field expected\n", NiL, NiL, 0, 0); - if (!(skip & level)) - { -#if defined(LC_COLLATE) && defined(LC_CTYPE) - s = field[1]; - if (!s || streq(s, "POSIX")) - s = "C"; - if (!(ans = setlocale(LC_COLLATE, s)) || streq(ans, "C") || streq(ans, "POSIX") || !(ans = setlocale(LC_CTYPE, s)) || streq(ans, "C") || streq(ans, "POSIX")) - skip = note(level, s, skip, test); - else - { - if (!(test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_SUMMARY))) - printf("NOTE \"%s\" locale\n", s); - locale = level; - } -#else - skip = note(level, skip, test, "locales not supported"); -#endif - } - cflags = NOTEST; - continue; - case 'E': - test |= TEST_ERE; - continue; - case 'K': - test |= TEST_KRE; - continue; - case 'L': - test |= TEST_LRE; - continue; - case 'S': - test |= TEST_SRE; - continue; - - case 'a': - cflags |= REG_LEFT|REG_RIGHT; - continue; - case 'b': - eflags |= REG_NOTBOL; - continue; - case 'c': - cflags |= REG_COMMENT; - continue; - case 'd': - cflags |= REG_SHELL_DOT; - continue; - case 'e': - eflags |= REG_NOTEOL; - continue; - case 'f': - cflags |= REG_MULTIPLE; - continue; - case 'g': - cflags |= NOTEST; - continue; - case 'h': - cflags |= REG_MULTIREF; - continue; - case 'i': - cflags |= REG_ICASE; - continue; - case 'j': - cflags |= REG_SPAN; - continue; - case 'k': - cflags |= REG_ESCAPE; - continue; - case 'l': - cflags |= REG_LEFT; - continue; - case 'm': - cflags |= REG_MINIMAL; - continue; - case 'n': - cflags |= REG_NEWLINE; - continue; - case 'o': - cflags |= REG_SHELL_GROUP; - continue; - case 'p': - cflags |= REG_SHELL_PATH; - continue; - case 'q': - cflags |= REG_DELIMITED; - continue; - case 'r': - cflags |= REG_RIGHT; - continue; - case 's': - cflags |= REG_SHELL_ESCAPED; - continue; - case 't': - cflags |= REG_MUSTDELIM; - continue; - case 'u': - test |= TEST_UNSPECIFIED; - continue; - case 'w': - cflags |= REG_NOSUB; - continue; - case 'x': - if (REG_LENIENT) - cflags |= REG_LENIENT; - else - test |= TEST_LENIENT; - continue; - case 'y': - eflags |= REG_LEFT; - continue; - case 'z': - cflags |= REG_NULL; - continue; - - case '$': - test |= TEST_EXPAND; - continue; - - case '/': - test |= TEST_SUB; - continue; - - case '?': - test |= TEST_VERIFY; - test &= ~(TEST_AND|TEST_OR); - state.verify = state.passed; - continue; - case '&': - test |= TEST_VERIFY|TEST_AND; - test &= ~TEST_OR; - continue; - case '|': - test |= TEST_VERIFY|TEST_OR; - test &= ~TEST_AND; - continue; - case ';': - test |= TEST_OR; - test &= ~TEST_AND; - continue; - - case '{': - level <<= 1; - if (skip & (level >> 1)) - { - skip |= level; - cflags = NOTEST; - } - else - { - skip &= ~level; - test |= TEST_QUERY; - } - continue; - case '}': - if (level == 1) - bad("invalid {...} nesting\n", NiL, NiL, 0, 0); - if ((skip & level) && !(skip & (level>>1))) - { - if (!(test & (TEST_BASELINE|TEST_SUMMARY))) - { - if (test & (TEST_ACTUAL|TEST_FAIL)) - printf("}\n"); - else if (!(test & TEST_PASS)) - printf("-%d\n", state.lineno); - } - } -#if defined(LC_COLLATE) && defined(LC_CTYPE) - else if (locale & level) - { - locale = 0; - if (!(skip & level)) - { - s = "C"; - setlocale(LC_COLLATE, s); - setlocale(LC_CTYPE, s); - if (!(test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_SUMMARY))) - printf("NOTE \"%s\" locale\n", s); - else if (test & (TEST_ACTUAL|TEST_BASELINE|TEST_PASS)) - printf("}\n"); - } - else if (test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL)) - printf("}\n"); - } -#endif - level >>= 1; - cflags = NOTEST; - continue; - - default: - bad("bad spec\n", spec, NiL, 0, test); - break; - - } - break; - } - if ((cflags|eflags) == NOTEST || ((skip & level) && (test & TEST_BASELINE))) - { - if (test & TEST_BASELINE) - { - while (i > 1) - *delim[--i] = '\t'; - printf("%s\n", line); - } - continue; - } - if (test & TEST_OR) - { - if (!(test & TEST_VERIFY)) - { - test &= ~TEST_OR; - if (state.passed == state.verify && i > 1) - printf("NOTE\t%s\n", field[1]); - continue; - } - else if (state.passed > state.verify) - continue; - } - else if (test & TEST_AND) - { - if (state.passed == state.verify) - continue; - state.passed = state.verify; - } - if (i < 4) - bad("too few fields\n", NiL, NiL, 0, test); - while (i < elementsof(field)) - field[i++] = 0; - if ((re = field[1])) - { - if (streq(re, "SAME")) - { - re = ppat; - test |= TEST_SAME; - } - else - { - if (test & TEST_EXPAND) - escape(re); - strcpy(ppat = pat, re); - } - } - else - ppat = 0; - nstr = -1; - if ((s = field[2]) && (test & TEST_EXPAND)) - { - nstr = escape(s); -#if _REG_nexec - if (nstr != strlen(s)) - nexec = nstr; -#endif - } - if (!(ans = field[3])) - bad("NIL answer\n", NiL, NiL, 0, test); - msg = field[4]; - fflush(stdout); - if (test & TEST_SUB) -#if _REG_subcomp - cflags |= REG_DELIMITED; -#else - continue; -#endif - - compile: - - if (state.extracted || (skip & level)) - continue; -#if !(REG_TEST_DEFAULT & (REG_AUGMENTED|REG_EXTENDED|REG_SHELL)) -#ifdef REG_EXTENDED - if (REG_EXTENDED != 0 && (test & TEST_BRE)) -#else - if (test & TEST_BRE) -#endif - { - test &= ~TEST_BRE; - flags = cflags; - state.which = "BRE"; - } - else -#endif -#ifdef REG_EXTENDED - if (test & TEST_ERE) - { - test &= ~TEST_ERE; - flags = cflags | REG_EXTENDED; - state.which = "ERE"; - } - else -#endif -#ifdef REG_AUGMENTED - if (test & TEST_ARE) - { - test &= ~TEST_ARE; - flags = cflags | REG_AUGMENTED; - state.which = "ARE"; - } - else -#endif -#ifdef REG_LITERAL - if (test & TEST_LRE) - { - test &= ~TEST_LRE; - flags = cflags | REG_LITERAL; - state.which = "LRE"; - } - else -#endif -#ifdef REG_SHELL - if (test & TEST_SRE) - { - test &= ~TEST_SRE; - flags = cflags | REG_SHELL; - state.which = "SRE"; - } - else -#ifdef REG_AUGMENTED - if (test & TEST_KRE) - { - test &= ~TEST_KRE; - flags = cflags | REG_SHELL | REG_AUGMENTED; - state.which = "KRE"; - } - else -#endif -#endif - { - if (test & (TEST_BASELINE|TEST_PASS|TEST_VERIFY)) - extract(tabs, line, re, s, ans, msg, NiL, NiL, 0, 0, skip, level, test|TEST_OK); - continue; - } - if ((test & (TEST_QUERY|TEST_VERBOSE|TEST_VERIFY)) == TEST_VERBOSE) - { - printf("test %-3d %s ", state.lineno, state.which); - quote(re, -1, test|TEST_DELIMIT); - printf(" "); - quote(s, nstr, test|TEST_DELIMIT); - printf("\n"); - } - - nosub: - fun = "regcomp"; -#if _REG_nexec - if (nstr >= 0 && nstr != strlen(s)) - nexec = nstr; - - else -#endif - nexec = -1; - if (state.extracted || (skip & level)) - continue; - if (!(test & TEST_QUERY)) - testno++; -#ifdef REG_DISCIPLINE - if (state.stack) - stkset(stkstd, state.stack, 0); - flags |= REG_DISCIPLINE; - state.disc.ordinal = 0; - sfstrseek(state.disc.sp, 0, SEEK_SET); -#endif - if (!(test & TEST_CATCH)) - cret = regcomp(&preg, re, flags); - else if (!(cret = setjmp(state.gotcha))) - { - alarm(HUNG); - cret = regcomp(&preg, re, flags); - alarm(0); - } -#if _REG_subcomp - if (!cret && (test & TEST_SUB)) - { - fun = "regsubcomp"; - p = re + preg.re_npat; - if (!(test & TEST_CATCH)) - cret = regsubcomp(&preg, p, NiL, 0, 0); - else if (!(cret = setjmp(state.gotcha))) - { - alarm(HUNG); - cret = regsubcomp(&preg, p, NiL, 0, 0); - alarm(0); - } - if (!cret && *(p += preg.re_npat) && !(preg.re_sub->re_flags & REG_SUB_LAST)) - { - if (catchfree(&preg, flags, tabs, line, re, s, ans, msg, NiL, NiL, 0, 0, skip, level, test)) - continue; - cret = REG_EFLAGS; - } - } -#endif - if (!cret) - { - if (!(flags & REG_NOSUB) && nsub < 0 && *ans == '(') - { - for (p = ans; *p; p++) - if (*p == '(') - nsub++; - else if (*p == '{') - nsub--; - if (nsub >= 0) - { - if (test & TEST_IGNORE_OVER) - { - if (nmatch > nsub) - nmatch = nsub + 1; - } - else if (nsub != preg.re_nsub) - { - if (nsub > preg.re_nsub) - { - if (test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_QUERY|TEST_SUMMARY|TEST_VERIFY)) - skip = extract(tabs, line, re, s, ans, msg, "OK", NiL, 0, 0, skip, level, test|TEST_DELIMIT); - else - { - report("re_nsub incorrect", fun, re, NiL, -1, msg, flags, test); - printf("at least %d expected, %zd returned\n", nsub, preg.re_nsub); - state.errors++; - } - } - else - nsub = preg.re_nsub; - } - } - } - if (!(test & TEST_SUB) && *ans && *ans != '(' && !streq(ans, "OK") && !streq(ans, "NOMATCH")) - { - if (test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_QUERY|TEST_SUMMARY|TEST_VERIFY)) - skip = extract(tabs, line, re, s, ans, msg, "OK", NiL, 0, 0, skip, level, test|TEST_DELIMIT); - else if (!(test & TEST_LENIENT)) - { - report("failed", fun, re, NiL, -1, msg, flags, test); - printf("%s expected, OK returned\n", ans); - } - catchfree(&preg, flags, tabs, line, re, s, ans, msg, NiL, NiL, 0, 0, skip, level, test); - continue; - } - } - else - { - if (test & TEST_LENIENT) - /* we'll let it go this time */; - else if (!*ans || ans[0]=='(' || (cret == REG_BADPAT && streq(ans, "NOMATCH"))) - { - got = 0; - for (i = 1; i < elementsof(codes); i++) - if (cret==codes[i].code) - got = i; - if (test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_QUERY|TEST_SUMMARY|TEST_VERIFY)) - skip = extract(tabs, line, re, s, ans, msg, codes[got].name, NiL, 0, 0, skip, level, test|TEST_DELIMIT); - else - { - report("failed", fun, re, NiL, -1, msg, flags, test); - printf("%s returned: ", codes[got].name); - error(&preg, cret); - } - } - else - { - expected = got = 0; - for (i = 1; i < elementsof(codes); i++) - { - if (streq(ans, codes[i].name)) - expected = i; - if (cret==codes[i].code) - got = i; - } - if (!expected) - { - if (test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_QUERY|TEST_SUMMARY|TEST_VERIFY)) - skip = extract(tabs, line, re, s, ans, msg, codes[got].name, NiL, 0, 0, skip, level, test|TEST_DELIMIT); - else - { - report("failed: invalid error code", NiL, re, NiL, -1, msg, flags, test); - printf("%s expected, %s returned\n", ans, codes[got].name); - } - } - else if (cret != codes[expected].code && cret != REG_BADPAT) - { - if (test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_QUERY|TEST_SUMMARY|TEST_VERIFY)) - skip = extract(tabs, line, re, s, ans, msg, codes[got].name, NiL, 0, 0, skip, level, test|TEST_DELIMIT); - else if (test & TEST_IGNORE_ERROR) - state.ignored++; - else - { - report("should fail and did", fun, re, NiL, -1, msg, flags, test); - printf("%s expected, %s returned: ", ans, codes[got].name); - state.errors--; - state.warnings++; - error(&preg, cret); - } - } - } - goto compile; - } - -#if _REG_nexec - execute: - if (nexec >= 0) - fun = "regnexec"; - else -#endif - fun = "regexec"; - - for (i = 0; i < elementsof(match); i++) - match[i] = state.NOMATCH; - -#if _REG_nexec - if (nexec >= 0) - { - eret = regnexec(&preg, s, nexec, nmatch, match, eflags); - s[nexec] = 0; - } - else -#endif - { - if (!(test & TEST_CATCH)) - eret = regexec(&preg, s, nmatch, match, eflags); - else if (!(eret = setjmp(state.gotcha))) - { - alarm(HUNG); - eret = regexec(&preg, s, nmatch, match, eflags); - alarm(0); - } - } -#if _REG_subcomp - if ((test & TEST_SUB) && !eret) - { - fun = "regsubexec"; - if (!(test & TEST_CATCH)) - eret = regsubexec(&preg, s, nmatch, match); - else if (!(eret = setjmp(state.gotcha))) - { - alarm(HUNG); - eret = regsubexec(&preg, s, nmatch, match); - alarm(0); - } - } -#endif - if (flags & REG_NOSUB) - { - if (eret) - { - if (eret != REG_NOMATCH || !streq(ans, "NOMATCH")) - { - if (test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_QUERY|TEST_SUMMARY|TEST_VERIFY)) - skip = extract(tabs, line, re, s, ans, msg, "NOMATCH", NiL, 0, 0, skip, level, test|TEST_DELIMIT); - else - { - report("REG_NOSUB failed", fun, re, s, nstr, msg, flags, test); - error(&preg, eret); - } - } - } - else if (streq(ans, "NOMATCH")) - { - if (test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_QUERY|TEST_SUMMARY|TEST_VERIFY)) - skip = extract(tabs, line, re, s, ans, msg, NiL, match, nmatch, nsub, skip, level, test|TEST_DELIMIT); - else - { - report("should fail and didn't", fun, re, s, nstr, msg, flags, test); - error(&preg, eret); - } - } - } - else if (eret) - { - if (eret != REG_NOMATCH || !streq(ans, "NOMATCH")) - { - if (test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_QUERY|TEST_SUMMARY|TEST_VERIFY)) - skip = extract(tabs, line, re, s, ans, msg, "NOMATCH", NiL, 0, nsub, skip, level, test|TEST_DELIMIT); - else - { - report("failed", fun, re, s, nstr, msg, flags, test); - if (eret != REG_NOMATCH) - error(&preg, eret); - else if (*ans) - printf("expected: %s\n", ans); - else - printf("\n"); - } - } - } - else if (streq(ans, "NOMATCH")) - { - if (test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_QUERY|TEST_SUMMARY|TEST_VERIFY)) - skip = extract(tabs, line, re, s, ans, msg, NiL, match, nmatch, nsub, skip, level, test|TEST_DELIMIT); - else - { - report("should fail and didn't", fun, re, s, nstr, msg, flags, test); - matchprint(match, nmatch, nsub, NiL, test); - } - } -#if _REG_subcomp - else if (test & TEST_SUB) - { - p = preg.re_sub->re_buf; - if (strcmp(p, ans)) - { - report("failed", fun, re, s, nstr, msg, flags, test); - quote(ans, -1, test|TEST_DELIMIT); - printf(" expected, "); - quote(p, -1, test|TEST_DELIMIT); - printf(" returned\n"); - } - } -#endif - else if (!*ans) - { - if (match[0].rm_so != state.NOMATCH.rm_so) - { - if (test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_QUERY|TEST_SUMMARY|TEST_VERIFY)) - skip = extract(tabs, line, re, s, ans, msg, NiL, NiL, 0, 0, skip, level, test); - else - { - report("failed: no match but match array assigned", NiL, re, s, nstr, msg, flags, test); - matchprint(match, nmatch, nsub, NiL, test); - } - } - } - else if (matchcheck(match, nmatch, nsub, ans, re, s, nstr, flags, test)) - { -#if _REG_nexec - if (nexec < 0 && !nonexec) - { - nexec = nstr >= 0 ? nstr : strlen(s); - s[nexec] = '\n'; - testno++; - goto execute; - } -#endif - if (!(test & (TEST_SUB|TEST_VERIFY)) && !nonosub) - { - if (catchfree(&preg, flags, tabs, line, re, s, ans, msg, NiL, NiL, 0, 0, skip, level, test)) - continue; - flags |= REG_NOSUB; - goto nosub; - } - if (test & (TEST_BASELINE|TEST_PASS|TEST_VERIFY)) - skip = extract(tabs, line, re, s, ans, msg, NiL, match, nmatch, nsub, skip, level, test|TEST_OK); - } - else if (test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS|TEST_QUERY|TEST_SUMMARY|TEST_VERIFY)) - skip = extract(tabs, line, re, s, ans, msg, NiL, match, nmatch, nsub, skip, level, test|TEST_DELIMIT); - if (catchfree(&preg, flags, tabs, line, re, s, ans, msg, NiL, NiL, 0, 0, skip, level, test)) - continue; - goto compile; - } - if (test & TEST_SUMMARY) - printf("tests=%-4d errors=%-4d warnings=%-2d ignored=%-2d unspecified=%-2d signals=%d\n", testno, state.errors, state.warnings, state.ignored, state.unspecified, state.signals); - else if (!(test & (TEST_ACTUAL|TEST_BASELINE|TEST_FAIL|TEST_PASS))) - { - printf("TEST\t%s", unit); - if (subunit) - printf(" %-.*s", subunitlen, subunit); - printf(", %d test%s", testno, testno == 1 ? "" : "s"); - if (state.ignored) - printf(", %d ignored mismatch%s", state.ignored, state.ignored == 1 ? "" : "es"); - if (state.warnings) - printf(", %d warning%s", state.warnings, state.warnings == 1 ? "" : "s"); - if (state.unspecified) - printf(", %d unspecified difference%s", state.unspecified, state.unspecified == 1 ? "" : "s"); - if (state.signals) - printf(", %d signal%s", state.signals, state.signals == 1 ? "" : "s"); - printf(", %d error%s\n", state.errors, state.errors == 1 ? "" : "s"); - } - if (fp != stdin) - fclose(fp); - } - return state.errors; -} - -int main(int argc, char **argv) -{ - static char *param[][4] = { - { NULL, "basic.dat" , NULL }, - { NULL, "categorize.dat" , NULL }, - { NULL, "forcedassoc.dat" , NULL }, - { NULL, "-c", "interpretation.dat", NULL }, - { NULL, "leftassoc.dat" , NULL }, - { NULL, "-c", "nullsubexpr.dat" , NULL }, - { NULL, "repetition.dat" , NULL }, - { NULL, "rightassoc.dat" , NULL }, - }; - int r, i; - - if (argv[1]) - return old_main(argc, argv); - - r = 0; - for (i = 0; i < sizeof(param) / sizeof(param[0]); i++) { - param[i][0] = argv[0]; - printf("Testing %s\n", param[i][1][0] != '-' ? param[i][1] : param[i][2]); - r |= old_main(3 /* not used */, param[i]); - } - return r; -} diff --git a/test/regex/tst-regex2.c b/test/regex/tst-regex2.c deleted file mode 100644 index bb47d6467..000000000 --- a/test/regex/tst-regex2.c +++ /dev/null @@ -1,250 +0,0 @@ -#define _GNU_SOURCE 1 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static int -do_test(void) -{ - static const char *pat[] = { - ".?.?.?.?.?.?.?Log\\.13", - "(.?)(.?)(.?)(.?)(.?)(.?)(.?)Log\\.13", - "((((((((((.?))))))))))((((((((((.?))))))))))((((((((((.?))))))))))" - "((((((((((.?))))))))))((((((((((.?))))))))))((((((((((.?))))))))))" - "((((((((((.?))))))))))Log\\.13" - }; - char *buf, *string; - const char *fname = "tst-regex2.dat"; - struct stat st; - unsigned len; - int testno; - int exitcode = 0; - - int fd = open(fname, O_RDONLY); - if (fd < 0) { - printf("Couldn't open %s: %s\n", fname, strerror(errno)); - return 1; - } - if (fstat(fd, &st) < 0) { - printf("Couldn't fstat %s: %s\n", fname, strerror(errno)); - return 1; - } - len = st.st_size; - string = buf = malloc(len + 1); - if (buf == NULL) { - printf("Couldn't allocate %u bytes\n", len + 1); - return 1; - } - if (read(fd, buf, st.st_size) != (ssize_t) st.st_size) { - printf("Couldn't read %s\n", fname); - return 1; - } - - close(fd); - buf[len] = '\0'; - -#if defined __UCLIBC_HAS_XLOCALE__ || !defined __UCLIBC__ - setlocale(LC_ALL, "de_DE.UTF-8"); -#endif - - for (testno = 0; testno < 2; ++testno) { - int i; - for (i = 0; i < sizeof(pat) / sizeof(pat[0]); ++i) { - struct timeval start, stop; - regex_t rbuf; - int err; - - printf("test %d pattern %d '%s'\n", testno, i, pat[i]); - gettimeofday(&start, NULL); - - err = regcomp(&rbuf, pat[i], - REG_EXTENDED | (testno ? REG_NOSUB : 0)); - if (err != 0) { - char errstr[300]; - regerror(err, &rbuf, errstr, sizeof(errstr)); - puts(errstr); - exitcode = 1; - goto contin1; - } - - regmatch_t pmatch[71]; - err = regexec(&rbuf, string, 71, pmatch, 0); - if (err == REG_NOMATCH) { - puts("regexec failed"); - exitcode = 1; - goto contin1; - } - - if (testno == 0) { - if (pmatch[0].rm_eo != pmatch[0].rm_so + 13 - || pmatch[0].rm_eo > len - || pmatch[0].rm_so < len - 100 - || strncmp(string + pmatch[0].rm_so, - " ChangeLog.13 for earlier changes", - sizeof " ChangeLog.13 for earlier changes" - 1 - ) != 0 - ) { - puts("regexec without REG_NOSUB did not find the correct match"); - exitcode = 1; - goto contin1; - } - - if (i > 0) { - int j, k, l; - for (j = 0, l = 1; j < 7; ++j) { - for (k = 0; k < (i == 1 ? 1 : 10); ++k, ++l) { - if (pmatch[l].rm_so != pmatch[0].rm_so + j - || pmatch[l].rm_eo != pmatch[l].rm_so + 1 - ) { - printf("pmatch[%d] incorrect\n", l); - exitcode = 1; - goto contin1; - } - } - } - } - } - - gettimeofday(&stop, NULL); - stop.tv_sec -= start.tv_sec; - if (stop.tv_usec < start.tv_usec) { - stop.tv_sec--; - stop.tv_usec += 1000000; - } - stop.tv_usec -= start.tv_usec; - printf(" %lu.%06lus\n", (unsigned long) stop.tv_sec, - (unsigned long) stop.tv_usec); - contin1: - regfree(&rbuf); - } - } - - for (testno = 2; testno < 4; ++testno) { - int i; - for (i = 0; i < sizeof(pat) / sizeof(pat[0]); ++i) { - struct timeval start, stop; - struct re_pattern_buffer rpbuf; - struct re_registers regs; - const char *s; - int match; - - printf("test %d pattern %d '%s'\n", testno, i, pat[i]); - gettimeofday(&start, NULL); - - re_set_syntax(RE_SYNTAX_POSIX_EGREP - | (testno == 3 ? RE_NO_SUB : 0)); - memset(&rpbuf, 0, sizeof(rpbuf)); - s = re_compile_pattern(pat[i], strlen(pat[i]), &rpbuf); - if (s != NULL) { - printf("%s\n", s); - exitcode = 1; - goto contin2; - } - - memset(®s, 0, sizeof(regs)); - match = re_search(&rpbuf, string, len, 0, len, ®s); - if (match < 0) { - printf("re_search failed (err:%d)\n", match); - exitcode = 1; - goto contin2; - } - if (match + 13 > len) { - printf("re_search: match+13 > len (%d > %d)\n", match + 13, len); - exitcode = 1; - goto contin2; - } - if (match < len - 100) { - printf("re_search: match < len-100 (%d < %d)\n", match, len - 100); - exitcode = 1; - goto contin2; - } - if (strncmp(string + match, " ChangeLog.13 for earlier changes", - sizeof(" ChangeLog.13 for earlier changes") - 1 - ) != 0 - ) { - printf("re_search did not find the correct match" - "(found '%s' instead)\n", string + match); - exitcode = 1; - goto contin2; - } - - if (testno == 2) { - int expected = 72; - if (i == 0) - expected = 2; - if (i == 1) - expected = 9; - if (regs.num_regs != expected) { - printf("incorrect num_regs %d, expected %d\n", regs.num_regs, expected); - exitcode = 1; - goto contin2; - } - if (regs.start[0] != match || regs.end[0] != match + 13) { - printf("incorrect regs.{start,end}[0] = { %d, %d }," - " expected { %d, %d }\n", - regs.start[0], regs.end[0], - match, match + 13 - ); - exitcode = 1; - goto contin2; - } - if (regs.start[regs.num_regs - 1] != -1 - || regs.end[regs.num_regs - 1] != -1 - ) { - printf("incorrect regs.{start,end}[num_regs - 1] = { %d, %d }," - " expected { -1, -1 }\n", - regs.start[regs.num_regs - 1], regs.end[regs.num_regs - 1] - ); - exitcode = 1; - goto contin2; - } - - if (i > 0) { - int j, k, l; - for (j = 0, l = 1; j < 7; ++j) { - for (k = 0; k < (i == 1 ? 1 : 10); ++k, ++l) { - if (regs.start[l] != match + j - || regs.end[l] != match + j + 1 - ) { - printf("incorrect regs.{start,end}[%d] = { %d, %d }," - " expected { %d, %d }\n", - l, - regs.start[l], regs.end[l], - match + j, match + j + 1 - ); - exitcode = 1; - goto contin2; - } - } - } - } - } - - gettimeofday(&stop, NULL); - stop.tv_sec -= start.tv_sec; - if (stop.tv_usec < start.tv_usec) { - stop.tv_sec--; - stop.tv_usec += 1000000; - } - stop.tv_usec -= start.tv_usec; - printf(" %lu.%06lus\n", (unsigned long) stop.tv_sec, - (unsigned long) stop.tv_usec); - contin2: - regfree(&rpbuf); - } - } - return exitcode; -} - -#define TIMEOUT 100 -#define TEST_FUNCTION do_test() -#include "../test-skeleton.c" diff --git a/test/regex/tst-regex2.dat b/test/regex/tst-regex2.dat deleted file mode 100644 index ace9f3b66..000000000 --- a/test/regex/tst-regex2.dat +++ /dev/null @@ -1,2176 +0,0 @@ -2002-11-19 Ulrich Drepper - - * intl/localealias.c (read_alias_file): Use only about 400 bytes - of stack space instead of 16k. - -2002-11-18 Wolfram Gloger - - * malloc/arena.c - (ptmalloc_lock_all, ptmalloc_unlock_all, ptmalloc_unlock_all2): Do - nothing if not initialized. Bug report from Marcus Brinkmann - . - -2002-11-19 Roland McGrath - - * posix/Versions (libc: GLIBC_2.3.2): Add sched_getaffinity and - sched_setaffinity. - - * configure.in (libc_cv_gcc_dwarf2_unwind_info check): Use libraries - `-lgcc -lgcc_eh -lgcc', not just `-lgcc -lgcc_eh' in link commands for - test leading to libc_cv_gcc_dwarf2_unwind_info=no_registry_needed. - * configure: Regenerated. - -2002-11-19 Ulrich Drepper - - * include/dlfcn.h: __libc_dlopen is now a macro calling - __libc_dlopen_mode with the extra parameter RTLD_LAZY. - (__libc_dlopen_mode): New prototype. - * elf/dl-libc.c (__libc_dlopen_mode): Renamed from __libc_dlopen. Add - new parameter. Store new parameter in mode field of structure passed - to do_dlopen. - (struct do_dlopen_args): Add new field mode. - (do_dlopen): Pass mode from parameter structure to _dl_open. - -2002-11-11 Randolf Chung - - * sysdeps/unix/sysv/linux/hppa/bits/fcntl.h [__USE_FILE_OFFSET64] - (F_GETLK, F_SETLK, F_SETLKW): Define to F_*64 versions. - * sysdeps/unix/sysv/linux/hppa/fcntl.c: New file. - - * sysdeps/hppa/fpu/libm-test-ulps: New file (generated). - - * sysdeps/hppa/Makefile (CFLAGS-rtld.c): New variable. - Set -mdisable-fpregs for this file. - -2002-11-11 Carlos O'Donell - - * sysdeps/unix/sysv/linux/configure.in: - Make 2.4.19 minimum linux kernel for hppa, and add unwind symbols - from gcc-3.0 era for backwards compatibility. - * sysdeps/unix/sysv/linux/configure: Regenerate. - - * sysdeps/unix/sysv/linux/hppa/sys/ucontext.h: - Define mcontext_t as a sigcontext. - -2002-11-18 Roland McGrath - - * dlfcn/dlerror.c (fini): New function, __attribute__ ((destructor)). - Free memory in `last_result' if it was used. - - * resolv/nss_dns/dns-network.c (getanswer_r): In BYNAME case, search - all aliases for one that matches the ".IN-ADDR.ARPA" form. - Do the parsing inline instead of copying strings and calling - inet_network, and properly skip all alias names not matching the form. - - * manual/pattern.texi (Variable Substitution): Fix # and ## examples. - -2002-11-17 Ulrich Drepper - - * manual/pattern.texi (Wordexp Example): Fix sample code. - - * sysdeps/unix/sysv/linux/i386/clone.S: Initialize word in the - childs stack which will be loaded into the %esi register. - -2002-11-14 Paul Eggert - - * resolv/nss_dns/dns-network.c (getanswer_r): Check for buffer - overflow when skipping the question part and when unpacking aliases. - -2002-11-15 Roland McGrath - - * math/Makefile (libm-calls): Remove s_copysign, s_isinf, s_isnan, - s_finite, s_modf, s_scalbn, s_frexp, m_ldexp, s_signbit. - Instead add $(calls:s_%=m_%) to get m_* versions of them all. - -2002-11-15 Jakub Jelinek - - * sysdeps/i386/dl-machine.h (elf_machine_rela): Handle R_386_COPY. - * sysdeps/arm/dl-machine.h (elf_machine_rela): Handle R_ARM_COPY. - -2002-11-15 Roland McGrath - - * math/Makefile (libm-calls): Change s_ldexp to m_ldexp. - * Makerules ($(+sysdir_pfx)sysd-rules): Emit pattern rules for m_%.[Sc] - from sysdeps/.../s_%.[Sc] with commands $(+make-include-of-dep). - (+make-include-of-dep): New canned sequence. - - * stdlib/canonicalize.c (__realpath): Check for malloc failure. - From Dmitry V. Levin . - -2002-11-14 Roland McGrath - - * sysdeps/generic/errno.c (__libc_errno): Remove alias. - * inet/herrno.c (__libc_h_errno): Likewise. - * resolv/res_libc.c (__libc_res): Likewise. - [USE___THREAD]: Use this in place of [USE_TLS && HAVE___THREAD]. - (__res_state) [! USE___THREAD]: Don't define as weak. - * csu/Versions: Revert last change. - * resolv/Versions: Revert last change. - - * Makerules ($(common-objpfx)%.make): New pattern rule. - * tls.make.c: New file. - * Makefile (distribute): Add it. - - * sysdeps/generic/errno.c [! USE___THREAD] - [HAVE_ELF && SHARED && DO_VERSIONING] (errno, _errno): Declare these - with compat_symbol so they are not link-time visible. - [! USE___THREAD] (__libc_errno): New alias for errno. - * csu/Versions [!(USE_TLS && HAVE___THREAD)] (libc: GLIBC_PRIVATE): - Add __libc_errno here. - * inet/herrno.c [USE___THREAD]: Use this conditional - in place of [USE_TLS && HAVE___THREAD]. - [! USE___THREAD] [HAVE_ELF && SHARED && DO_VERSIONING] - (h_errno, _h_errno): Declare these with compat_symbol so they are not - link-time visible. - [! USE___THREAD] (__libc_h_errno): New alias for h_errno. - * resolv/res_libc.c [! USE___THREAD] - [HAVE_ELF && SHARED && DO_VERSIONING] (_res): Likewise. - (_res): Use __attribute__ ((section (".bss"))) so we can have an alias. - (__libc_res): Define as alias for _res. - * resolv/Versions [!(USE_TLS && HAVE___THREAD)] (libc: GLIBC_PRIVATE): - Add __libc_h_errno and __libc_res here. - -2002-11-14 Jakub Jelinek - - * csu/Versions (errno): Move STT_TLS symbol to GLIBC_PRIVATE for now. - * resolv/Versions (h_errno, _res): Likewise. - -2002-11-14 Roland McGrath - - * Makerules (%.dynsym): Remove $(objpfx) from target and dep. - (%.symlist): Likewise. - -2002-11-13 Roland McGrath - - * scripts/abilist.awk: New file. - * Makefile (distribute): Add it. - * Makerules ($(objpfx)%.dynsym, $(objpfx)%.symlist): New rules. - (tests): Depend on .symlist file for each $(install-lib.so-versioned). - [$(subdir) = elf] (tests): Depend on libc.symlist. - (generated, common-generated): Add those files. - - * aclocal.m4 (LIBC_PROG_BINUTILS): Check for objdump, set OBJDUMP. - * configure: Regenerated. - * config.make.in (OBJDUMP): New variable, substituted by configure. - - * malloc/mcheck.c (struct hdr): New members `block' and `magic2'. - (mallochook, reallochook): Set them up. - (checkhdr): Check HDR->magic2 value. - (freehook): Reset HDR->magic2. - (memalignhook): New static function. - (old_memalign_hook): New static variable. - (mcheck, reallochook): Set __memalign_hook to memalignhook. - - * sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage): Zero the space - for the new TCB. - -2002-11-13 Andreas Jaeger - - * sysdeps/unix/sysv/linux/x86_64/sigaction.c: Check for visibility - attribute. - * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. - -2002-11-11 Paul Eggert - - * manual/crypt.texi (Cryptographic Functions): Mention that - the MD5 one-way algorithm is compatible with BSD's. - -2002-11-11 Isamu Hasegawa - - * posix/regex_internal.c (re_string_skip_chars): Also return the last - wide character. - (re_string_reconstruct): Calculate the context by itself when the - offset points out of the valid range. - (re_string_context_at): Use wide character when MB_CUR_MAX > 1. - * posix/regex_internal.h (WIDE_NEWLINE_CHAR): New macro. - (IS_WIDE_WORD_CHAR): New macro. - (IS_WIDE_NEWLINE): New macro. - -2002-11-12 Andreas Jaeger - - * sysdeps/x86_64/strchr.S: Don't use one register for two - purposes, this fixes a bug noticed by test-strchr.c. - - * sysdeps/x86_64/strcat.S: Fix algorithm to align source pointer - correctly. - -2002-11-12 Roland McGrath - - * libio/libioP.h [_LIBC && !SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)] - (_G_IO_NO_BACKWARD_COMPAT): Define it. - - * sysdeps/ia64/dl-fptr.c [_LIBC_REENTRANT]: Include - instead of . - [_LIBC_REENTRANT] (lock, unlock): Use __sync_lock_* macros instead of - testandset. - From Ian Wienand . - -2002-11-10 Roland McGrath - - * libio/bug-wfflush.c (do_test): Call rewind instead of fsetpos. - Call fputs instead of fwprintf (simpler to follow in debugger). - - * crypt/md5-crypt.c: Doc fix. - - * sysdeps/unix/make-syscalls.sh: Insert $(make-target-directory) at - the beginning of generated target commands. - - * csu/Makefile ($(objpfx)crti.o, $(objpfx)crtn.o): Add explicit - dependencies for these in case implicit rule search skipped the - nonexistent source directory. - * sysdeps/gnu/Makefile ($(objpfx)errlist.d): Give this rule all the - files with $(object-suffixes) as targets too. - * Makerules [no_deps && objpfx] (before-compile): Add $(objpfx). - and a target for it using $(make-target-directory). - - * Rules (before-compile): Add $(common-objpfx)bits/stdio-lim.h. - -2002-11-10 Roland McGrath - - * sysdeps/unix/sysv/linux/bits/pthreadtypes.h: Moved to ... - * sysdeps/generic/bits/pthreadtypes.h: ... here. - - * sysdeps/mach/hurd/fcntl.c (__libc_fcntl): Treat a struct flock with - l_start == 0 and l_len == 1 as we do l_len == 0. - -2002-11-10 Ulrich Drepper - - * po/da.po: Update from translation team. - -2002-11-10 Roland McGrath - - * config.make.in (includedir): New variable, substituted by configure. - Reported missing by Jocelyn Fournier . - * Makeconfig (includedir): Use $(prefix), not $(exec_prefix). - -2002-11-10 Andreas Jaeger - - * sysdeps/unix/sysv/linux/x86_64/sys/ucontext.h (enum): Add - REG_OLDMASK and REG_CR2 to synch with kernel header. - (NGREG): Increase. - - * nss/getXXent.c (GETFUNC_NAME): Use union type to avoid strict - aliasing problem. - * nss/getXXbyYY_r.c (INTERNAL): Likewise. - * nss/getnssent_r.c (__nss_getent_r): Likewise. - (__nss_setent): Likewise. - (__nss_getent_r): Likewise. - * inet/getnetgrent_r.c (innetgr): Likewise. - (__internal_setnetgrent_reuse): Likewise. - (internal_getnetgrent_r): Likewise. - * inet/ether_hton.c (ether_hostton): Likewise. - * inet/ether_ntoh.c (ether_ntohost): Likewise. - * sunrpc/netname.c (netname2user): Likewise. - * sunrpc/publickey.c (getpublickey): Likewise. - (getsecretkey): Likewise. - -2002-11-09 Marcus Brinkmann - - * sysdeps/mach/hurd/i386/ioperm.c (ioperm): Correct off by one - error in range calculation. - -2002-10-09 Jakub Jelinek - - * string/test-strspn.c (do_test): Ensure zero termination. - * string/test-strpbrk.c (do_test): Likewise. - * string/test-strncmp.c (stupid_strncmp): Use strnlen, not strlen. - * string/test-strncpy.c (stupid_strncpy): Likewise. - * string/test-stpncpy.c (stupid_stpncpy): Likewise. - -2002-10-08 Roland McGrath - - * string/test-string.h (test_init): Fill BUF1 and BUF2 with - nonzero characters. - -2002-09-22 H.J. Lu - - * sysdeps/unix/sysv/linux/mmap64.c (MMAP2_PAGE_SHIFT): Renamed - from PAGE_SHIFT. Define if not defined. Check MMAP2_PAGE_SHIFT - only if __NR_mmap2 is defined. - - * sysdeps/unix/sysv/linux/powerpc/mmap64.c: Moved to ... - * sysdeps/unix/sysv/linux/mmap64.c: ... here. - * sysdeps/unix/sysv/linux/hppa/mmap64.c: File removed. - * sysdeps/unix/sysv/linux/sparc/sparc32/mmap64.c: FIle removed, - -2002-11-08 Jakub Jelinek - - * posix/bug-regex13.c (tests): Add new test. - - * string/test-strchr.c (stupid_strchr): New function. - (do_random_tests): Make sure the string is zero terminated. - * string/test-strpbrk.c (stupid_strpbrk): New function. - (do_random_tests): Make sure the string is zero terminated. - * string/test-strcmp.c (stupid_strcmp): New function. - (do_random_tests): Make sure the strings are zero terminated. - * string/test-strspn.c (stupid_strspn): New function. - (simple_strspn): Rename rej argument to acc. - (do_random_tests): Make sure the string is zero terminated. - * string/test-strcspn.c (stupid_strcspn): New function. - * string/test-strncpy.c (stupid_strncpy): New function. - * string/test-stpncpy.c (stupid_stpncpy): New function. - * string/test-strncmp.c (stupid_strncmp): New function. - (do_random_tests): Make sure the strings are zero terminated. - * string/test-string.h (impl_t): Change test into long. - (IMPL): Add __attribute__((aligned (sizeof (void *)))). - -2002-11-08 Roland McGrath - - * sysdeps/ia64/elf/configure.in: Add TLS check. - From Ian Wienand . - * sysdeps/ia64/elf/configure: Regenerated. - -2002-11-07 Roland McGrath - - * libio/fileops.c (_IO_new_file_overflow): Use INTUSE(_IO_do_write) in - place of _IO_new_do_write. - [_LIBC] (_IO_do_write): Define as macro for _IO_new_do_write and - #undef before versioned_symbol use. - -2002-11-07 Richard Henderson - - * configure.in (ASM_ALPHA_NG_SYMBOL_PREFIX): Remove test. - * configure: Regenerated. - * config.h.in (ASM_ALPHA_NG_SYMBOL_PREFIX): Remove #undef. - * sysdeps/alpha/dl-machine.h (TRAMPOLINE_TEMPLATE): Use !samegp. - (RTLD_START): Likewise. Access _dl_skip_args, _rtld_local, and - _dl_fini via gp-relative relocations. - * sysdeps/alpha/fpu/e_sqrt.c: Use !samegp. - - * elf/tls-macros.h: Add alpha versions. - * sysdeps/alpha/dl-machine.h (elf_machine_rela): Handle TLS relocs. - * sysdeps/unix/alpha/sysdep.S: Support USE___THREAD. - * sysdeps/unix/alpha/sysdep.h: Likewise. Add SYSCALL_ERROR_HANDLER. - * sysdeps/unix/sysv/linux/alpha/brk.S: Use it. - * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/getitimer.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/getrusage.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/rt_sigaction.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/select.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/setitimer.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/settimeofday.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/syscall.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/utimes.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/wait4.S: Likewise. - - * sysdeps/unix/sysv/linux/alpha/sysdep.h: Re-include protect. - Kill argument registers across the inline syscall. - - * sysdeps/unix/sysv/linux/alpha/clone.S: Add user_tid and tls args. - - * linuxthreads/sysdeps/alpha/tls.h: New file. - * sysdeps/alpha/dl-tls.h: New file. - -2002-10-29 David Mosberger - - * sysdeps/ia64/elf/initfini.c [HAVE_INITFINI_ARRAY] - (gmon_initializer): New function. - (.init prologue): If HAVE_INITFINI_ARRAY is true, don't call - __gmon_start__ here. Call it from gmon_initializer() instead. - -2002-03-12 H.J. Lu - - * elf/Makefile [$(have-initfini-array) = yes] (tests): Add tst-array1, - tst-array2, and tst-array3. - [$(have-initfini-array) = yes] (tests-static): Add tst-array3. - [$(have-initfini-array) = yes] (modules-names): Add tst-array2dep. - ($(objpfx)tst-array1.out): New target. - ($(objpfx)tst-array2): Likewise. - ($(objpfx)tst-array2.out): Likewise. - ($(objpfx)tst-array3.out): Likewise. - * elf/tst-array1.c: New file. - * elf/tst-array1.exp: Likewise. - * elf/tst-array2.c: Likewise. - * elf/tst-array2dep.c: Likewise. - * elf/tst-array2.exp: Likewise. - * elf/tst-array3.c: Likewise. - -2002-10-28 David Mosberger - - * elf/dl-fini.c (_dl_fini): Invoke fini_array in _reverse_ order. - Don't add L->l_addr to array entry values. - -2002-11-07 Jakub Jelinek - - * string/test-string.h: New file. - * string/test-strlen.c: New file. - * string/test-string.h: New file. - * string/test-strcmp.c: New file. - * string/test-strchr.c: New file. - * string/test-strrchr.c: New file. - * string/test-strcpy.c: New file. - * string/test-stpcpy.c: New file. - * string/test-strncpy.c: New file. - * string/test-stpncpy.c: New file. - * string/test-strpbrk.c: New file. - * string/test-strcspn.c: New file. - * string/test-strspn.c: New file. - * string/test-strcat.c: New file. - * string/test-strncmp.c: New file. - * string/test-memchr.c: New file. - * string/test-memcmp.c: New file. - * string/test-memset.c: New file. - * string/test-memcpy.c: New file. - * string/test-mempcpy.c: New file. - * string/test-memmove.c: New file. - * string/Makefile (strop-tests): New variable. - (tests): Add strop-tests. - (distribute): Add test-string.h. - -2002-11-06 Ulrich Drepper - - * posix/regcomp.c: Use tabs instead of spaces. - * posix/regexec.c: Likewise. - * posix/regex_internal.h: Likewise. - - * posix/regcomp.c (re_compile_fastmap_iter): Use __wcrtomb not wctomb. - -2002-11-06 Jakub Jelinek - - * posix/regcomp.c (re_compile_pattern): Don't set regs_allocated - here. - (regcomp): Don't set can_be_null here. - (re_comp): Clear whole re_comp_buf with the exception of fastmap. - (re_compile_internal): Clear can_be_null, set regs_allocated. - - * posix/regcomp.c (re_set_fastmap): New function. - (re_compile_fastmap_iter): Use it. Remove redundant type == - COMPLEX_BRACKET check. - * posix/regexec.c (re_search_internal): Optimize searching with - fastmap. Call re_string_reconstruct even if match_first is - smaller than raw_mbs_idx. - -2002-11-06 Isamu Hasegawa - - * posix/regcomp (free_dfa_content): Use free_state. - * posix/regex_internal.c (re_string_realloc_buffers): Don't edit - pointers in case that realloc failed. - (re_node_set_merge): Likewise. - (register_state): Likewise. - (create_newstate_common): Invoke memory release functions in case of - error conditions. - (create_ci_newstate): Likewise. - (create_cd_newstate): Likewise. - (free_state): New function. - * posix/regexec.c (re_search_internal): Invoke memory release - functions in case of error conditions. - (sift_states_backward): Likewise. - (merge_state_array): Likewise. - (add_epsilon_src_nodes): Likewise. - (sub_epsilon_src_nodes): Likewise. - (search_subexp): Likewise. - (sift_states_bkref): Likewise. - (transit_state_sb): Likewise. - (transit_state_mb): Likewise. - (transit_state_bkref_loop): Likewise. - (group_nodes_into_DFAstates): Likewise. - (push_fail_stack): Don't edit pointers in case that realloc failed. - (extend_buffers): Likewise. - (match_ctx_add_entry): Likewise. - -2002-11-06 Roland McGrath - - * sysdeps/unix/sysv/linux/mips/configure.in: File removed. - * sysdeps/unix/sysv/linux/mips/configure: Likewise. - - * configure.in: Add checks on as and ld for binutils 2.13 or later. - * configure: Regenerated. - -2002-11-06 Ulrich Drepper - - * posix/regcomp.c (regcomp): __re_compile_fastmap can never fail. - If re_compile_internal failed free fastmap buffer. - (free_dfa_content): Broken out of regfree function. Frees all dfa - related data. - (regfree): Add free_dfa_content. - (re_compile_internal): If any of the called functions fails free - all dfa related memory. - -2002-11-05 Ulrich Drepper - - * sysdeps/unix/sysv/linux/sys/sysctl.h: Add ugly hacks to prevent - warnings from the kernel headers. - -2002-11-05 Roland McGrath - - * sysdeps/unix/mips/sysdep.h [! __PIC__] (PSEUDO): Add nop after jump. - From Johannes Stezenbach . - - * sysdeps/unix/sysv/linux/mips/Versions (libc: GLIBC_2.0): Change - #errlist-compat magic comment to give 123 as size. - (libc: GLIBC_2.1): Remove this set, moving #errlist-compat magic to ... - (libc: GLIBC_2.2): ... here. - (libc: GLIBC_2.3): Likewise. - -2002-11-05 Ulrich Drepper - - * elf/dl-fini.c (_dl_fini): Correct the increment of l_opencount - which happens at the beginning so that we can unload modules in - __libc_freeres. - -2002-11-06 Kaz Kojima - - * sysdeps/sh/bits/setjmp.h (JB_SIZE): Define only - under [__USE_MISC || _ASM]. - - * elf/elf.h: Remove the obsolete SH TLS relocations. - -2002-11-05 Ulrich Drepper - - * posix/regcomp.c (regcomp): Initialize preg->can_be_null to zero. - -2002-11-05 Franz Sirl - - * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: Handle - __NR_pread64 and __NR_pwrite64. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pread.c: Remove __NR_pread64 - and __NR_pwrite64. - Revert change to use INLINE_SYSCALL. - * sysdeps/unix/sysv/linux/powerpc/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pwrite.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/ftruncate64.c: Revert change to use - INLINE_SYSCALL. - * sysdeps/unix/sysv/linux/powerpc/truncate64.c: Likewise. - - * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h (INLINE_SYSCALL): - Update clobber list and add a comment about the syscall ABI. - - * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list (s_pread64, - s_pwrite64, s_ftruncate, s_truncate): Re-add. - -2002-11-05 Jakub Jelinek - - * iconv/gconv_dl.c (free_mem): Clear loaded. - * locale/loadarchive.c (_nl_archive_subfreeres): Call locale_data's - cleanup if any. - -2002-11-05 Ulrich Drepper - - * sysdeps/unix/sysv/linux/fexecve.c: Include . - - * libio/ioseekoff.c: Remove INTDEF. Define _IO_seekoff_unlocked. Same - as old code without locking. _IO_seekoff calls this function after - locking the stream. - * libio/ioseekpos.c: Likewise for _IO_seekpos. - * libio/libioP.h: Replace _IO_seekoff_internal and _IO_seekpos_internal - prototypes with _IO_seekoff_unlocked and _IO_seekpos_unlocked - prototypes. - * libio/iolibio.h (_IO_fseek): Call _IO_seekoff_unlocked instead - of _IO_seekoff_internal. - (_IO_rewind): Likewise. - * libio/ioftell.c: Likewise. - * libio/ftello.c: Likewise. - * libio/ftello64.c: Likewise. - * libio/iofgetpos.c: Likewise. - * libio/iofgetpos64.c: Likewise. - * libio/oldiofgetpos.c: Likewise. - * libio/oldiofgetpos64.c: Likewise. - * libio/iofsetpos.c: Call _IO_seekpos_unlocked instead of - _IO_seekpos_internal. - * libio/iofsetpos64.c: Likewise. - * libio/oldiofsetpos.c: Likewise. - * libio/oldiofsetpos64.c: Likewise. - -2002-11-04 Roland McGrath - - * sysdeps/unix/sysv/linux/powerpc/chown.c: Use INLINE_SYSCALL macro. - * sysdeps/unix/sysv/linux/powerpc/ftruncate64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/ioctl.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pread.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pwrite.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/tcgetattr.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/tcsetattr.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/truncate64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list (s_ioctl, - s_chown, s_ftruncate64, s_mmap2, s_pread64, s_pwrite64, s_truncate64, - sys_fstat, sys_lstat, sys_mknod, sys_readv, sys_stat, sys_writev): - Remove these, no longer used. - -2002-11-04 Franz Sirl - - * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list (s_ipc, - s_llseek, s_readahead, s_execve, s_fcntl, s_fcntl64, s_fstat64, - s_getcwd, s_getdents, s_getdents64, s_getpmsg, s_getpriority, - s_getrlimit, s_lstat64, s_poll, s_ptrace, s_putpmsg, s_reboot, - s_setrlimit, s_sigaction, s_sigpending, s_sigprocmask, s_sigsuspend, - s_stat64, s_sysctl, s_ugetrlimit, s_ustat, s_vfork): Remove now unused - syscall stubs. - - * sysdeps/unix/sysv/linux/pwrite.c: Fix typo. - * sysdeps/unix/sysv/linux/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pread.c: Handle both __NR_pread64 - and __NR_pread. - * sysdeps/unix/sysv/linux/powerpc/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pwrite.c: Handle both __NR_pwrite64 - and __NR_pwrite. - * sysdeps/unix/sysv/linux/powerpc/pwrite64.c: Likewise. - -2002-11-03 Roland McGrath - - * sysdeps/generic/ldsodefs.h (struct rtld_global): New member - `_dl_tls_static_used'. - * sysdeps/generic/libc-tls.c (_dl_tls_static_used): New variable. - (__libc_setup_tls): Initialize it. Let the initial value of - _dl_tls_static_size indicate some surplus space in the computed value. - * elf/dl-open.c (_dl_tls_static_size): New variable. - * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Initialize - _dl_tls_static_used. Add some surplus space into _dl_tls_static_size. - * elf/dl-reloc.c [USE_TLS] (allocate_static_tls): New function. - (CHECK_STATIC_TLS): Use it. - * elf/dl-close.c (_dl_close): Adjust _dl_tls_static_used when the - closed objects occupied a trailing contiguous chunk of static TLS area. - -2002-10-18 Bruno Haible - - * charmaps/ISO_5428: Use Greek characters introduced in Unicode 3.0. - -2002-11-04 Ulrich Drepper - - * libio/wfileops.c (_IO_wfile_seekoff): Don't modify _offset and - _wide_data->_IO_read_end if adjustment can be made in the current - buffer. - - * sysdeps/unix/sysv/linux/fexecve.c: New file. - - * libio/bug-wfflush.c (do_test): Using fseek is not allowed when - wide oriented streams are used. - - * nss/getXXent_r.c (ENDFUNC_NAME): Don't do anything if the - service hasn't been used [PR libc/4744]. - - * include/features.h: Use __STDC_VERSION__ not __STDC_VERSION. - Reported by Miloslav Trmac [PR libc/4766]. - - * manual/examples/dir.c: Don't include . - * manual/examples/select.c: Include for TEMP_FAILURE_RETRY. - Reported by Frédéric Delanoy . - -2002-11-02 H.J. Lu - - * stdio-common/reg-printf.c: Include . - -2002-11-03 Ulrich Drepper - - * sysdeps/generic/libc-tls.c: Define _dl_tls_static_used. - - * po/ca.po: Update from translation team. - * po/es.po: Likewise. - - * sysdeps/generic/segfault.c (catch_segfault): If HAVE_PROC_SELF - is defined write out memory map. - * sysdeps/unix/sysv/linux/segfault.c: New file. - -2002-11-02 Roland McGrath - - * sysdeps/unix/sysv/linux/getdents.c (__GETDENTS): Use union type for - pointers that can alias. - Reported by Daniel Jacobowitz . - - * sysdeps/unix/bsd/bsd4.4/freebsd/bits/typesizes.h: New file. - -2002-11-02 Roland McGrath - - * manual/filesys.texi (Reading/Closing Directory): Rewrite readdir_r - description to be clearer and to say that *RESULT is set to ENTRY. - -2002-10-30 Jakub Jelinek - - * posix/regexec.c (build_trtable): Alloca or malloc dests_node and - dests_ch arrays together. Alloca or malloc dest_states, - dest_states_word and dest_states_nl arrays together. Free memory on - error exit. - -2002-10-29 Daniel Jacobowitz - - * crypt/crypt_util.c (__init_des_r): Initialize current_salt - and current_saltbits. - -2002-11-02 Roland McGrath - - * stdio-common/reg-printf.c: Include . - -2002-11-02 H.J. Lu - - * sysdeps/unix/sysv/linux/mips/syscalls.list (s_execve): Set - caller to EXTRA instead of execve. - -2002-11-01 Roland McGrath - - * sysdeps/generic/errno-loc.c [! USE___THREAD]: Use this conditional - in place of [!(USE_TLS && HAVE___THREAD)]. - (__errno_location) [! USE___THREAD]: Define as strong, not weak. - -2002-10-31 Roger Sayle - - * sysdeps/i386/soft-fp/sfp-machine.h (_FP_NANFRAC_Q, _FP_NANSIGN_Q): - New macros. - * sysdeps/x86_64/soft-fp/sfp-machine.h: Likewise. - - * soft-fp/soft-fp.h: Allow sfp-machine.h to define FP_RND_NEAREST - without defining FP_ROUNDMODE. - -2002-10-29 Jakub Jelinek - - * sysdeps/gnu/siglist.c (PTR_SIZE_STR): Remove. - (__old_sys_siglist, __old_sys_sigabbrev): Use strong_alias and - declare_symbol. - * sysdeps/mach/hurd/siglist.h (OLD_SIGLIST_SIZE_STR): Remove. - (OLD_SIGLIST_SIZE): Define. - * sysdeps/unix/sysv/linux/siglist.h (OLD_SIGLIST_SIZE_STR): Remove. - (OLD_SIGLIST_SIZE): Define. - * sysdeps/unix/sysv/linux/arm/siglist.c: Remove. - -2002-11-01 Jakub Jelinek - - * sysdeps/ia64/strncpy.S: Fix recovery code. - -2002-10-30 Jakub Jelinek - - * include/libc-symbols.h (__libc_freeres_fn_section, libc_freeres_fn): - New macros. - * elf/dl-close.c (free_mem): Use libc_freeres_fn macro, remove - text_set_element. - * elf/dl-libc.c (free_mem): Likewise. - * iconv/gconv_conf.c (free_mem): Likewise. - * iconv/gconv_db.c (free_mem): Likewise. - * iconv/gconv_dl.c (free_mem): Likewise. - * iconv/gconv_cache.c (free_mem): Likewise. - * intl/finddomain.c (free_mem): Likewise. - * intl/dcigettext.c (free_mem): Likewise. - * locale/setlocale.c (free_mem): Likewise. - * misc/fstab.c (fstab_free): Likewise. - * nss/nsswitch.c (free_mem): Likewise. - * posix/regcomp.c (free_mem): Likewise. - * resolv/gai_misc.c (free_res): Likewise. - * stdlib/fmtmsg.c (free_mem): Likewise. - * sunrpc/clnt_perr.c (free_mem): Likewise. - * sysdeps/generic/setenv.c (free_mem): Likewise. - * sysdeps/unix/sysv/linux/shm_open.c (freeit): Likewise. - * sysdeps/pthread/aio_misc.c (free_res): Likewise. - * time/tzset.c (free_mem): Likewise. - * malloc/mtrace.c (release_libc_mem): Add __libc_freeres_fn_section. - * locale/loadarchive.c (_nl_archive_subfreeres): Likewise. - * malloc/set-freeres.c (__libc_freeres): Likewise. - - * login/getutent.c: Include stdlib.h instead of stddef.h. - (buffer): Change into pointer to utmp, add libc_freeres_ptr. - (__getutent): Allocate buffer the first time it is run. - * login/getutid.c: Include stdlib.h instead of stddef.h. - (buffer): Change into pointer to utmp, add libc_freeres_ptr. - (__getutid): Allocate buffer the first time it is run. - * login/getutline.c: Include stdlib.h instead of stddef.h. - (buffer): Change into pointer to utmp, add libc_freeres_ptr. - (__getutline): Allocate buffer the first time it is run. - * malloc/mtrace.c (malloc_trace_buffer): Change into char *. - (mtrace): Allocate malloc_trace_buffer. - * resolv/nsap_addr.c (inet_nsap_ntoa): Decrease size of tmpbuf. - * resolv/ns_print.c (ns_sprintrrf): Decrease size of t. - * string/strerror.c: Include libintl.h and errno.h. - (buf): New variable. - (strerror): Only allocate buffer if actually needed (unknown error). - * time/tzfile.c (transitions): Add libc_freeres_ptr. - (freeres): Remove. - -2002-10-25 Jakub Jelinek - - * include/libc-symbols.h (libc_freeres_ptr): New macro. - * malloc/set-freeres.c (__libc_freeres_ptrs): Define using - symbol_set_define. - (__libc_freeres): Free all pointers in that section. - * Makerules (build-shlib): Add $(LDSEDCMD-$(@F:lib%.so=%).so) to sed - commands when creating .lds script. - (LDSEDCMD-c.so): New variable. - * inet/rcmd.c (ahostbuf): Change into char *. Add libc_freeres_ptr. - (rcmd_af): Use strdup to allocate ahostbuf. - * inet/rexec.c (ahostbuf): Change into char *. Add libc_freeres_ptr. - (rexec_af): Use strdup to allocate ahostbuf. - * stdio-common/reg-printf.c (printf_funcs): Remove. - (__printf_arginfo_table): Change into printf_arginfo_function **. - Add libc_freeres_ptr. - (__register_printf_function): Allocate __printf_arginfo_table - and __printf_function_table the first time it is called. - * stdio-common/printf-parse.h (__printf_arginfo_table): Change into - printf_arginfo_function **. - (parse_one_spec): Add __builtin_expect. - * grp/fgetgrent.c (buffer): Add libc_freeres_ptr. - (free_mem): Remove. - * inet/getnetgrent.c (buffer): Add libc_freeres_ptr. - (free_mem): Remove. - * intl/localealias.c (libc_freeres_ptr): Define if !_LIBC. - (string_space, map): Add libc_freeres_ptr. - (free_mem): Remove. - * misc/efgcvt.c (FCVT_BUFPTR): Add libc_freeres_ptr. - (free_mem): Remove. - * misc/mntent.c (getmntent_buffer): Add libc_freeres_ptr. - (free_mem): Remove. - * crypt/md5-crypt.c (libc_freeres_ptr): Define if !_LIBC. - (buffer): Add libc_freeres_ptr. - (free_mem): Remove for _LIBC. - * nss/getXXbyYY.c (buffer): Add libc_freeres_ptr. - (free_mem): Remove. - * nss/getXXent.c (buffer): Add libc_freeres_ptr. - (free_mem): Remove. - * pwd/fgetpwent.c (buffer): Add libc_freeres_ptr. - (free_mem): Remove. - * resolv/res_hconf.c (ifaddrs): Add libc_freeres_ptr. - (free_mem): Remove. - * shadow/fgetspent.c (buffer): Add libc_freeres_ptr. - (free_mem): Remove. - * sysdeps/posix/ttyname.c (getttyname_name): Add libc_freeres_ptr. - (free_mem): Remove. - * sysdeps/unix/sysv/linux/getsysstats.c (mount_proc): Add - libc_freeres_ptr. - (free_mem): Remove. - * sysdeps/unix/sysv/linux/ttyname.c (getttyname_name, ttyname_buf): Add - libc_freeres_ptr. - (free_mem): Remove. - -2002-10-30 Jakub Jelinek - - * malloc/obstack.c [_LIBC] (obstack_free): Change into strong_alias - instead of duplicating the whole function in libc. - -2002-10-31 Roland McGrath - - * sysdeps/i386/bits/byteswap.h [__GNUC__ < 2] (__bswap_32): - Renamed from __bswap_16 (typo fix). Reported by . - -2002-10-30 Jakub Jelinek - - * sysdeps/unix/sysv/linux/Makefile (syscall-%.h): Add -D for each - 32bit-predefine when creating .new32 list and -U for each - 32bit-predefine when creating .new64 list. - * sysdeps/unix/sysv/linux/x86_64/Makefile (32bit-predefine): New. - -2002-10-29 Andreas Schwab - - * sysdeps/generic/allocrtsig.c: Include , not - "testrtsig.h". Reported by Daniel Jacobowitz . - -2002-10-25 Roland McGrath - - * sysdeps/unix/sysv/linux/configure.in: Fix typo in last change. - * sysdeps/unix/sysv/linux/configure: Regenerated. - - * sysdeps/generic/ldsodefs.h: Remove [! SHARED] conditional from - _dl_starting_up decl. - -2002-10-20 H.J. Lu - - * sysdeps/unix/sysv/linux/configure.in: Don't check - /lib/modules/`uname -r`/build/include for kernel headers if - cross compiling. - * sysdeps/unix/sysv/linux/configure: Regenerated. - -2002-10-25 Roland McGrath - - * math/math.h (M_LOG2El): Correct the value. - From Stephen L Moshier . - - * sysdeps/unix/sysv/linux/init-first.c (init): Remove [! SHARED] - conditional from __libc_multiple_libcs access. Remove kludge for weak - symbol access with old compilers we no longer support. - * sysdeps/unix/sysv/aix/init-first.c (init): Likewise. - * sysdeps/generic/libc-start.c (__libc_start_main): Likewise. - -2002-10-25 Roland McGrath - - * sysdeps/posix/sigvec.c [SA_RESETHAND]: Disable wrapper hacks and - implement SV_RESETHAND by translating it to SA_RESETHAND. - -2002-10-23 Alexandre Oliva - - * elf/dl-reloc.c (_dl_reloc_bad_use): Print the full 32-bit relocation - type on ELF64 platforms. - -2002-10-24 Ulrich Drepper - - * elf/elf.h (R_X86_64_GOTTPOFF): Renamed from r_x86_64_GOTTPOFF. - - * elf/elf.h: Define ELF_NOTE_OS_FREEBSD and NT_TASKSTRUCT. - -2002-10-24 Jakub Jelinek - - * elf/dl-misc.c: Include . - (_dl_debug_vdprintf): Only take dl_load_lock if not _dl_starting_up. - - * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (INTERNAL_SYSCALL, - INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): New macros. - (INLINE_SYSCALL): Use that. - * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (INTERNAL_SYSCALL, - INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): New macros. - (INLINE_SYSCALL): Use that. - * sysdeps/unix/sysv/linux/x86_64/sysdep.h (INTERNAL_SYSCALL, - INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): New macros. - (INLINE_SYSCALL): Use that. - * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Include - dl-sysdep.h. - (SYSCALL_ERROR_HANDLER): Define RTLD_PRIVATE_ERRNO variant. - (__INTERNAL_SYSCALL_STRING): Define. - * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Include - dl-sysdep.h. - (SYSCALL_ERROR_HANDLER): Define RTLD_PRIVATE_ERRNO variant. - (__INTERNAL_SYSCALL_STRING): Define. - * sysdeps/unix/sysv/linux/sparc/sysdep.h (INLINE_SYSCALL): Pass - __SYSCALL_STRING to inline_syscall*. - (INTERNAL_SYSCALL, INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): - New macros. - (inline_syscall0, inline_syscall1, inline_syscall2, inline_syscall3, - inline_syscall4, inline_syscall5, inline_syscall6): Add string - argument. - -2002-10-24 Roland McGrath - - * sysdeps/generic/ldsodefs.h (_dl_starting_up): Declare it here. - * sysdeps/unix/sysv/linux/init-first.c: Not here. - * sysdeps/powerpc/elf/libc-start.c: Or here. - * sysdeps/unix/sysv/aix/libc-start.c: Or here. - * sysdeps/unix/sysv/aix/start-libc.c: Or here. - * sysdeps/unix/sysv/aix/init-first.c: Or here. - * sysdeps/generic/libc-start.c: Or here. - * sysdeps/unix/sysv/linux/init-first.c (init): Protect _dl_starting_up - access with [! SHARED]. - * sysdeps/unix/sysv/aix/init-first.c (init): Likewise. - - * libio/bug-wfflush.c: New file. - * libio/Makefile (tests): Add bug-wfflush. - -2002-10-23 Roland McGrath - - * stdio-common/tst-fphex.c: New file. - * stdio-common/Makefile (tests): Add tst-fphex. - * sysdeps/generic/printf_fphex.c (__printf_fphex): Fix initialization - of WNUMEND. Fix counting of decimal point in WIDTH. Print '0' pad - chars always before the value digits. - Reported by James Antill . - -2002-10-24 Jakub Jelinek - - * posix/regcomp.c (re_comp): Call __regfree on re_comp_buf. - (free_mem): New function. - * posix/Makefile (tests): Add bug-regex14. Add bug-regex14-mem - if not cross compiling. - (generated): Add bug-regex14-mem and bug-regex14.mtrace. - (bug-regex14-ENV): Set. - (bug-regex14-mem): New target. - * posix/bug-regex14.c: New file. - -2002-10-23 Roland McGrath - - * elf/Makefile ($(objpfx)librtld.map): Use temporary file for output - target, so we don't touch it when the link fails. - - * libio/ftello.c (ftello): Use _IO_off64_t for type of POS. - Check for the result overflowing off_t and fail with EOVERFLOW. - * libio/ioftell.c (_IO_ftell): Likewise. - * libio/iofgetpos.c (_IO_new_fgetpos): Likewise. - - * login/logwtmp.c (logwtmp): If sizeof ut_tv != sizeof struct timeval, - use a temporary timeval on the stack for gettimeofday and copy it. - * login/logout.c (logout): Likewise. - Reported by Steven Munroe . - - * sysdeps/unix/sysv/linux/bits/statfs.h (struct statfs): - Use __SWORD_TYPE instead of int for member types. - (struct statfs64): Likewise. - * sysdeps/unix/sysv/linux/alpha/bits/statfs.h: New file. - * sysdeps/unix/sysv/linux/s390/bits/statfs.h: New file. - * sysdeps/unix/sysv/linux/ia64/bits/statfs.h: File removed. - * sysdeps/unix/sysv/linux/sparc/bits/statfs.h: File removed. - * sysdeps/unix/sysv/linux/x86_64/bits/statfs.h: File removed. - - * sysdeps/unix/sysv/linux/sparc/bits/statvfs.h: Moved to ... - * sysdeps/unix/sysv/linux/bits/statvfs.h: ... here. - (ST_NODIRATIME): Restore fixed value of 2048. - * sysdeps/unix/sysv/linux/alpha/bits/statvfs.h: File removed. - * sysdeps/unix/sysv/linux/ia64/bits/statvfs.h: File removed. - - Rearranged definitions to reduce duplication. - * sysdeps/generic/bits/types.h: Rewritten, using macros from - and new header . - * posix/Makefile (headers): Add bits/typesizes.h here. - * sysdeps/generic/bits/typesizes.h: New file. - * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h: New file. - * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h: New file. - * sysdeps/mach/hurd/bits/typesizes.h: New file. - * sysdeps/unix/sysv/linux/alpha/bits/types.h: File removed. - * sysdeps/unix/sysv/linux/bits/types.h: File removed. - * sysdeps/unix/sysv/linux/ia64/bits/types.h: File removed. - * sysdeps/unix/sysv/linux/mips/bits/types.h: File removed. - * sysdeps/unix/sysv/linux/s390/bits/types.h: File removed. - * sysdeps/unix/sysv/linux/sparc/bits/types.h: File removed. - * sysdeps/unix/sysv/linux/x86_64/bits/types.h: File removed. - * posix/sys/types.h [__USE_POSIX199506 || __USE_UNIX98]: Include - here, not in . - * signal/signal.h: Likewise. - - * streams/stropts.h: Include . - * streams/Makefile (headers): Add bits/xtitypes.h here. - * sysdeps/generic/bits/xtitypes.h: New file. - * sysdeps/s390/bits/xtitypes.h: New file. - * sysdeps/ia64/bits/xtitypes.h: New file. - * sysdeps/x86_64/bits/xtitypes.h: New file. - - * sysvipc/Makefile (headers): Add bits/ipctypes.h here. - * sysdeps/generic/bits/ipctypes.h: New file. - * sysdeps/mips/bits/ipctypes.h: New file. - * sysdeps/gnu/bits/shm.h: Include . - * sysdeps/gnu/bits/msq.h: Likewise. - * sysvipc/sys/ipc.h: Likewise. - -2002-10-22 Ulrich Drepper - - * elf/dl-load.c (struct filebuf): For buf element to have the - alignment of ElfXX_Ehdr since this is what will be stored in it. - -2002-10-22 Jakub Jelinek - - * locale/programs/locarchive.c (add_alias): Change locrec_offset arg - into pointer to locrec_offset. - (add_locale_to_archive): Adjust callers. Free normalized_name right - before returning, not immediately after add_locale, pass it to - add_alias if not NULL instead of name. Rename second normalized_name - occurence to nnormalized_codeset_name. - - * locale/programs/locarchive.c (enlarge_archive): Make sure - string_size is always a multiple of 4. - Reported by Andreas Schwab . - -2002-10-21 Andreas Schwab - - * sysdeps/unix/sysv/linux/ia64/syscalls.list (s_execve): Set - caller to EXTRA instead of execve, since the latter has a - higher-priority implementation in linuxthreads. - -2002-10-21 Roland McGrath - - * sysdeps/generic/libc-tls.c (__libc_setup_tls): Initialize the static - slotinfo list's len member to the proper size, not just 1. - Initialize static_map.l_tls_initimage. - - * elf/dl-open.c (dl_open_worker): Fix loop searching for - dtv_slotinfo_list element containing new modules' l_tls_modid. - - * elf/tst-tls9.c, elf/tst-tls9-static.c: New files. - * elf/tst-tlsmod5.c, elf/tst-tlsmod6.c: New files. - * elf/Makefile (tests): Add tst-tls9. - (tests-static): Add tst-tls9-static. - (tst-tls9-static-ENV): New variable. - ($(objpfx)tst-tls9-static, $(objpfx)tst-tls9-static.out): New targets. - - * elf/dl-close.c (remove_slotinfo): Remove an assert; the number of - modids used by partially loaded modules being closed can't be known. - -2002-10-21 Isamu Hasegawa - - * posix/Makefile: Add a test case for the bug reported by Aharon - Robbins . - * posix/bug-regex13.c: New file. - * posix/regcomp.c (peek_token_bracket): Skip the byte already read. - -2002-10-21 Ulrich Drepper - - * csu/gmon-start.c: Pretty printing. - -2002-10-19 Art Haas - - * configure.in: Replace AC_CONFIG_HEADER with AC_CONFIG_HEADERS, - add AC_HELP_STRING to all AC_ARG_WITH and AC_ARG_ENABLE macros, - add autoconf quotes to the AC_CONFIG_AUX_DIR macro. - * configure: Regenerated. - -2002-10-19 Roland McGrath - - * configure.in: Call AC_CONFIG_SUBDIRS with empty argument - and then set $subdirs directly, because the new Autoconf breaks - compatibility in every way imaginable and insists on whining - about usage that worked since the dawn of time. - * configure: Regenerated. - - * configure: Regenerated (using Autoconf 2.54). - * sysdeps/alpha/elf/configure: Likewise. - * sysdeps/generic/configure: Likewise. - * sysdeps/i386/elf/configure: Likewise. - * sysdeps/ia64/elf/configure: Likewise. - * sysdeps/mach/hurd/configure: Likewise. - * sysdeps/mach/configure: Likewise. - * sysdeps/unix/configure: Likewise. - * sysdeps/unix/common/configure: Likewise. - * sysdeps/unix/sysv/aix/configure: Likewise. - * sysdeps/unix/sysv/linux/configure: Likewise. - * sysdeps/unix/sysv/linux/mips/configure: Likewise. - * sysdeps/x86_64/elf/configure: Likewise. - - * config.make.in: Nix completely-soft nonsense. - * configure.in: Likewise. Under --without-fp, use nofpu subdirectory - of machine directories instead of fpu subdirectory. - * sysdeps/powerpc/soft-fp/Makefile: Remove cruft added in last change. - * sysdeps/powerpc/nofpu/Makefile: Put it in this new file instead. - * sysdeps/powerpc/soft-fp/sim-full.c: Moved to ... - * sysdeps/powerpc/nofpu/sim-full.c: ... here. - * sysdeps/powerpc/soft-fp/fraiseexcpt.c: Moved to ... - * sysdeps/powerpc/nofpu/fraiseexcpt.c: ... here. - * sysdeps/powerpc/soft-fp/fegetexcept.c: Moved to ... - * sysdeps/powerpc/nofpu/fegetexcept.c: ... here. - * sysdeps/powerpc/soft-fp/fclrexcpt.c: Moved to ... - * sysdeps/powerpc/nofpu/fclrexcpt.c: ... here. - * sysdeps/powerpc/soft-fp/ftestexcept.c: Moved to ... - * sysdeps/powerpc/nofpu/ftestexcept.c: ... here. - * sysdeps/powerpc/soft-fp/fgetexcptflg.c: Moved to ... - * sysdeps/powerpc/nofpu/fgetexcptflg.c: ... here. - * sysdeps/powerpc/soft-fp/fsetexcptflg.c: Moved to ... - * sysdeps/powerpc/nofpu/fsetexcptflg.c: ... here. - * sysdeps/powerpc/soft-fp/fedisblxcpt.c: Moved to ... - * sysdeps/powerpc/nofpu/fedisblxcpt.c: ... here. - * sysdeps/powerpc/soft-fp/feenablxcpt.c: Moved to ... - * sysdeps/powerpc/nofpu/feenablxcpt.c: ... here. - * sysdeps/powerpc/soft-fp/fegetenv.c: Moved to ... - * sysdeps/powerpc/nofpu/fegetenv.c: ... here. - * sysdeps/powerpc/soft-fp/fesetenv.c: Moved to ... - * sysdeps/powerpc/nofpu/fesetenv.c: ... here. - * sysdeps/powerpc/soft-fp/fegetround.c: Moved to ... - * sysdeps/powerpc/nofpu/fegetround.c: ... here. - * sysdeps/powerpc/soft-fp/fesetround.c: Moved to ... - * sysdeps/powerpc/nofpu/fesetround.c: ... here. - * sysdeps/powerpc/soft-fp/feupdateenv.c: Moved to ... - * sysdeps/powerpc/nofpu/feupdateenv.c: ... here. - * sysdeps/powerpc/soft-fp/feholdexcpt.c: Moved to ... - * sysdeps/powerpc/nofpu/feholdexcpt.c: ... here. - * sysdeps/powerpc/soft-fp/fenv_const.c: Moved to ... - * sysdeps/powerpc/nofpu/fenv_const.c: ... here. - * sysdeps/powerpc/soft-fp/libm-test-ulps: Moved to ... - * sysdeps/powerpc/nofpu/libm-test-ulps: ... here. - * sysdeps/powerpc/soft-fp/soft-supp.h: Moved to ... - * sysdeps/powerpc/nofpu/soft-supp.h: ... here. - * sysdeps/powerpc/soft-fp/Versions (libc: GLIBC_2.3.2): Moved to ... - * sysdeps/powerpc/nofpu/Versions: ... here, new file. - -2002-10-19 Bruno Haible - - * sysdeps/unix/bsd/bsd4.4/freebsd/sys/sysmacros.h: New file. - -2002-10-18 Roland McGrath - - * io/Makefile (routines): Add lchmod. - * io/sys/stat.h [__USE_BSD] (lchmod): Declare it. - * sysdeps/generic/lchmod.c: New file. - * sysdeps/mach/hurd/lchmod.c: New file. - * io/Versions (libc: GLIBC_2.3.2): New set, add lchmod. - -2002-10-18 Art Haas - - * configure.in: Remove remaining AC_FD_CC macros, and replace - AC_FD_MSG with AS_MESSAGE_FD. - -2002-10-18 Roland McGrath - - * sysdeps/powerpc/powerpc32/dl-machine.c (__process_machine_rela): Fix - typos: VALUE -> FINALADDR. - - * sysdeps/unix/alpha/sysdep.h (INLINE_SYSCALL, INLINE_SYSCALL1) - (inline_syscall_clobbers, inline_syscall0, inline_syscall1) - (inline_syscall2, inline_syscall3, inline_syscall4, inline_syscall5) - (inline_syscall6): Move these macros ... - * sysdeps/unix/sysv/linux/alpha/sysdep.h: ... to here. - - * configure.in (libc_link_dests, libc_link_sources): Remove these - variables and the AC_LINK_FILES call. - - * sysdeps/powerpc/soft-fp/Versions (libc: GLIBC_2.3.2): Fix last - change to put new symbols here instead of in GLIBC_2.2. - * sysdeps/powerpc/Subdirs: Move this file ... - * sysdeps/powerpc/soft-fp/Subdirs: ... here. - -2002-10-07 Roland McGrath - - * sysdeps/generic/bits/time.h: Replaced with contents of the - sysdeps/unix/sysv/linux/i386/bits/time.h file. All the following - files were identical except for the absence of CLOCK_THREAD_CPUTIME_ID - and CLOCK_PROCESS_CPUTIME_ID in .../linux/bits/time.h; adding these - macros is ok even for architectures that don't now implement them. - * sysdeps/mach/hurd/bits/time.h: File removed. - * sysdeps/unix/sysv/linux/bits/time.h: File removed. - * sysdeps/unix/sysv/linux/i386/bits/time.h: File removed. - * sysdeps/unix/sysv/linux/ia64/bits/time.h: File removed. - * sysdeps/unix/sysv/linux/sparc/bits/time.h: File removed. - * sysdeps/unix/sysv/linux/x86_64/bits/time.h: File removed. - -2002-10-18 Jeff Bailey - - * configure.in: Replace obsolete AC_OUTPUT syntax with - AC_CONFIG_FILES, AC_CONFIG_COMMANDS, and new-type AC_OUTPUT trio. - - * aclocal.m4 (GLIBC_PROVIDES): Add AC_PROVIDEs for - _AS_PATH_SEPARATOR_PREPARE and _AS_TEST_PREPARE. - - * configure.in: Replace AC_FD_CC with AS_MESSAGE_LOG_FD. - * sysdeps/alpha/elf/configure.in: Likewise. - * sysdeps/i386/elf/configure.in: Likewise. - * sysdeps/mach/hurd/configure.in: Likewise. - * sysdeps/x86_64/elf/configure.in: Likewise. - - * configure.in: Use AC_CONFIG_SRCDIR and new AC_INIT syntax. - - * sysdeps/alpha/elf/configure.in: Remove unneeded sinclude statement. - * sysdeps/generic/configure.in: Likewise. - * sysdeps/i386/elf/configure.in: Likewise. - * sysdeps/ia64/elf/configure.in: Likewise. - * sysdeps/mach/configure.in: Likewise. - * sysdeps/mach/hurd/configure.in: Likewise. - * sysdeps/unix/configure.in: Likewise. - * sysdeps/unix/common/configure.in: Likewise. - * sysdeps/unix/sysv/aix/configure.in: Likewise. - * sysdeps/unix/sysv/linux/configure.in: Likewise. - * sysdeps/unix/sysv/linux/mips/configure.in: Likewise. - * sysdeps/x86_64/elf/configure.in: Likewise. - - * aclocal.m4: Use just the bits from AS_INIT that are needed for the - GLIBC_PROVIDES. Use plain comment instead of HEADER-COMMENT so - that it's obvious when extra autoconf machinery is being dragged in. - -2002-10-18 Roland McGrath - - * configure.in: Remove bogus echo included in - 2002-10-08 Aldy Hernandez change. - * configure: Regenerated. - -2002-10-18 Jakub Jelinek - - * sysdeps/unix/sysv/linux/pathconf.h (statfs_link_max): Add inline. - (statfs_filesize_max): New function. - * sysdeps/unix/sysv/linux/linux_fsinfo.h (JFFS_SUPER_MAGIC, - JFFS2_SUPER_MAGIC, JFS_SUPER_MAGIC, NTFS_SUPER_MAGIC, - ROMFS_SUPER_MAGIC, UDF_SUPER_MAGIC): Define. - * sysdeps/unix/sysv/linux/fpathconf.c (__fpathconf): Use - statfs_filesize_max. - * sysdeps/unix/sysv/linux/pathconf.c (__pathconf): Likewise. - * sysdeps/unix/sysv/linux/alpha/fpathconf.c: Removed. - * sysdeps/unix/sysv/linux/alpha/pathconf.c: Removed. - -2002-10-17 Roland McGrath - - * configure.in (MIG): Just AC_SUBST it here. - * configure: Regenerated. - * sysdeps/mach/configure.in (MIG): Do the AC_CHECK_TOOL here. - Adding final - argument to all AC_CHECK_HEADER uses for .defs files. - * sysdeps/mach/configure: Regenerated. - - * aclocal.m4 (GLIBC_PROVIDES): Add AC_PROVIDE([_AS_TR_SH_PREPARE]) - and AC_PROVIDE([_AS_CR_PREPARE]). - - * aclocal.m4 (GLIBC_PROVIDES): Add AC_PROVIDE([_AS_ECHO_N_PREPARE]). - Remove AC_LANG(C) call, instead just define([_AC_LANG], [C]). - - * elf/dl-support.c: Move _dl_tls_* variables to ... - * sysdeps/generic/libc-tls.c: ... here. - - * elf/dl-close.c (remove_slotinfo): Take new argument. If false, - allow IDX to be one past the current last slotinfo entry. - (_dl_close): Pass IMAP->l_init_called for that parameter. - -2002-10-07 Andreas Schwab - - * aclocal.m4: Fix for autoconf 2.53. - * configure.in: Likewise. Require autoconf 2.53. - -2002-10-08 Richard Henderson - - * soft-fp/op-4.h: Handle carry correctly in - __FP_FRAC_ADD_3, __FP_FRAC_ADD_4, __FP_FRAC_SUB_3, - __FP_FRAC_SUB_4, __FP_FRAC_DEC_3, __FP_FRAC_DEC_4. - * soft-fp/op-common.h: New macros _FP_DIV_MEAT_N_loop. - -2002-10-08 Aldy Hernandez - - * configure.in: Compute completely-soft. - * config.make.in: Make completely-soft available to sub-makes. - * sysdeps/powerpc/soft-fp/Makefile: Add gcc-single-routines and - gcc-double-routines. Add sim-full.c. Add fenv_const and - fe_nomask to libm-support. - * sysdeps/powerpc/soft-fp/sim-full.c: New file. - * sysdeps/powerpc/soft-fp/fraiseexcpt.c: New file. - * sysdeps/powerpc/soft-fp/fegetexcept.c: New file. - * sysdeps/powerpc/soft-fp/fclrexcpt.c: New file. - * sysdeps/powerpc/soft-fp/ftestexcept.c: New file. - * sysdeps/powerpc/soft-fp/fgetexcptflg.c: New file. - * sysdeps/powerpc/soft-fp/fsetexcptflg.c: New file. - * sysdeps/powerpc/soft-fp/fedisblxcpt.c: New file. - * sysdeps/powerpc/soft-fp/feenablxcpt.c: New file. - * sysdeps/powerpc/soft-fp/fegetenv.c: New file. - * sysdeps/powerpc/soft-fp/fesetenv.c: New file. - * sysdeps/powerpc/soft-fp/fegetround.c: New file. - * sysdeps/powerpc/soft-fp/fesetround.c: New file. - * sysdeps/powerpc/soft-fp/feupdateenv.c: New file. - * sysdeps/powerpc/soft-fp/feholdexcpt.c: New file. - * sysdeps/powerpc/soft-fp/fenv_const.c: New file. - * sysdeps/powerpc/soft-fp/libm-test-ulps: New file. - * sysdeps/powerpc/soft-fp/soft-supp.h: New file. - * sysdeps/powerpc/soft-fp/Versions: Add libgcc soft-float - symbols. Add __sim_disabled_exceptions, __sim_exceptions, - __sim_round_mode. - * sysdeps/powerpc/soft-float/Dist: Add sim-full.c, fenv_const.c. - * sysdeps/powerpc/soft-float/sfp-machine.h: Define - FP_HANDLE_EXCEPTIONS. - Define FP_ROUNDMODE. - Redefine FP_* macros to correspond to the FE_* bit positions. - Define FP_DIV_MEAT_S to _FP_DIV_MEAT_1_loop. - Define externs for __sim_exceptions, __sim_disabled_exceptions, - __sim_round_mode, __simulate_exceptions. - * sysdeps/powerpc/fpu/bits/fenv.h: Move file from here... - * sysdeps/powerpc/bits/fenv.h: ...to here. - -2002-10-06 Jakub Jelinek - - * sysdeps/powerpc/powerpc32/dl-machine.c (__process_machine_rela): - Store R_PPC_UADDR32 and R_PPC_UADDR16 one byte at a time. - Use __builtin_expect for R_PPC_ADDR24 overflow check. Fix - R_PPC_ADDR16, R_PPC_UADDR16 and R_PPC_ADDR14* overflow check, use - __builtin_expect. - -2002-10-15 Jakub Jelinek - - * include/resolv.h (__libc_res_nquery, __libc_res_nsearch, - __libc_res_nsend): New prototypes. - * resolv/res_query.c (QUERYSIZE): Define. - (__libc_res_nquery): Renamed from res_nquery. Added answerp - argument. Allocate only QUERYSIZE bytes first, if res_nmkquery - fails use MAXPACKET buffer. Call __libc_res_nsend instead of - res_nsend, pass answerp. - (res_nquery): Changed into wrapper around __libc_res_nquery. - (__libc_res_nsearch): Renamed from res_nsearch. Added answerp - argument. Call __libc_res_nquerydomain and __libc_res_nquery - instead of the non-__libc_ variants, pass them answerp. - (res_nsearch): Changed into wrapper around __libc_res_nsearch. - (__libc_res_nquerydomain): Renamed from res_nquerydomain. - Added answerp argument. Call __libc_res_nquery instead of - res_nquery, pass answerp. - (res_nquerydomain): Changed into wrapper around - __libc_res_nquerydomain. - * resolv/res_send.c: Include sys/ioctl.h. - (MAXPACKET): Define. - (send_vc): Change arguments. Reallocate answer buffer if it is - too small. - (send_dg): Likewise. - (__libc_res_nsend): Renamed from res_nsend. Added ansp argument. - Reallocate answer buffer if it is too small and hooks are in use. - Adjust calls to send_vc and send_dg. - (res_nsend): Changed into wrapper around __libc_res_nsend. - * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname2_r): Allocate - just 1K answer buffer on the stack, use __libc_res_nsearch instead - of res_nsearch. - (_nss_dns_gethostbyaddr_r): Similarly with __libc_res_nquery. - * resolv/nss_dns/dns-network.c (_nss_dns_getnetbyaddr_r): Likewise. - (_nss_dns_getnetbyname_r): Similarly with __libc_res_nsearch. - * resolv/gethnamaddr.c (gethostbyname2): Likewise. - (gethostbyaddr): Similarly with __libc_res_nquery. - * resolv/Versions (libresolv): Export __libc_res_nquery and - __libc_res_nsearch at GLIBC_PRIVATE. - -2002-10-17 Roland McGrath - - * configure.in: Grok --without-__thread and disable HAVE___THREAD. - * configure: Regenerated. - - * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Do CHECK_STATIC_TLS - before performing the reloc, not after. - * sysdeps/i386/dl-machine.h (elf_machine_rel): Likewise. - -2002-10-17 Ulrich Drepper - - * locale/programs/locale.c (write_locales): Use 'm' flag in fopen call. - * locale/programs/linereader.c (lr_open): Likewise. - * locale/programs/charmap-dir.c (charmap_open): Likewise. - * locale/programs/locarchive.c (add_locale_to_archive): Likewise. - -2002-10-17 Isamu Hasegawa - - * posix/bug-regex11.c: Add a test case for the bug reported by - Paolo Bonzini . - * posix/regexec.c (sift_states_bkref): Use correct destination of - the back reference. - -2002-10-17 Roland McGrath - - * elf/dl-load.c (_dl_map_object_from_fd): Don't check DF_STATIC_TLS. - * elf/dl-reloc.c (_dl_relocate_object: CHECK_STATIC_TLS): New macro - to signal error if an IE-model TLS reloc resolved to a dlopen'd module. - * sysdeps/i386/dl-machine.h (elf_machine_rel, elf_machine_rela): - Call it after performing TPOFF relocs. - * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Likewise. - * sysdeps/sh/dl-machine.h (elf_machine_rela): Likewise. - * elf/dl-conflict.c (CHECK_STATIC_TLS): New macro (no-op). - - * elf/dl-close.c (remove_slotinfo): Change asserts so as not to crash - when closing a partially-initialized object. - - * elf/dl-load.c (_dl_map_object_from_fd) [! USE_TLS]: Call lose - instead of _dl_fatal_printf when we see PT_TLS. - - * Makeconfig (CPPFLAGS): Fix last change to use $(libof-$( - - * cppflags-iterator.mk (CPPFLAGS-$(cpp-src)): Variable removed. - instead of += to append, to be sure $(lib) gets expanded at defn time. - (libof-$(cpp-src)): New variable, define this instead. - * extra-lib.mk (cpp-srcs-left): Reduce duplication in include setup. - (lib): Don't use override. - (CPPFLAGS-$(lib)): New variable, put -D's here. - * Makeconfig (CPPFLAGS): Use basename fn for CPPFLAGS-basename. - Also add $(CPPFLAGS-LIB) before the file-specific flags, for each - LIB found by $(libof-*) for basename, target, or source. - * Makerules (CPPFLAGS-nonlib): New variable. - * nscd/Makefile (lib): Set to nonlib when using cppflags-iterator.mk. - * locale/Makefile (lib): Likewise. - * sunrpc/Makefile (lib): Likewise. - - * sysdeps/unix/sysv/linux/fpathconf.c (LINUX_LINK_MAX): Move macro ... - * sysdeps/unix/sysv/linux/linux_fsinfo.h (LINUX_LINK_MAX): ... here. - * sysdeps/unix/sysv/linux/pathconf.h: New file. - (statfs_link_max): New function, guts from fpathconf.c. - * sysdeps/unix/sysv/linux/fpathconf.c: Rewritten using that. - * sysdeps/unix/sysv/linux/pathconf.c (__pathconf): Likewise. - * sysdeps/unix/sysv/linux/alpha/pathconf.c (__pathconf): Rewritten - to use the linux/pathconf.c code by #include rather than duplication. - * sysdeps/unix/sysv/linux/alpha/fpathconf.c (__pathconf): Likewise. - -2002-10-16 Jakub Jelinek - - * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER): - Use __libc_errno only for libc itself. - -2002-10-16 Andreas Jaeger - - * sysdeps/x86_64/_mcount.S: Fix off-by-1 error in argument access. - -2002-10-16 Ulrich Drepper - - * sysdeps/unix/sysv/linux/i386/sysdep.h (SYSCALL_ERROR_HANDLER): - Use __libc_errno only for libc itself. - -2002-10-15 Roland McGrath - Jakub Jelinek - - * sysdeps/unix/sysv/linux/Makefile - ($(objpfx)syscall-%.h $(objpfx)syscall-%.d): Take code from - sparc/Makefile to produce a bi-arch file as needed. - That's now parameterized by the variable $(64bit-predefine). - Use LC_ALL=C for `comm' commands in that rule. - No longer conditional on [$(no_syscall_list_h)]. - * sysdeps/unix/sysv/linux/sparc/Makefile: Remove replacement rules. - (64bit-predefine): New variable. - * sysdeps/unix/sysv/linux/x86_64/Makefile: Likewise. - * sysdeps/unix/sysv/linux/s390/Makefile: New file. - * sysdeps/unix/sysv/linux/powerpc/Makefile - (64bit-predefine): New variable. - -2002-10-15 Roland McGrath - - * sysdeps/unix/sysv/linux/Makefile - ($(objpfx)syscall-%.h $(objpfx)syscall-%.d) - - * login/utmp-private.h: Declare __libc_utmp_lock. - * sysdeps/unix/getlogin_r.c (getlogin_r): Take __libc_utmp_lock once - and call __libc_utmp_jump_table functions directly, instead of using - __setutent et al. - - * sysdeps/unix/sysv/linux/configure.in: Use case instead of if. - * sysdeps/unix/sysv/linux/configure: Regenerated. - - * sysdeps/gnu/bits/utmp.h: Include . - (struct lastlog) [__WORDSIZE == 64 && __WORDSIZE_COMPAT32]: - Use int32_t for ll_time. - (struct utmp) [__WORDSIZE == 64 && __WORDSIZE_COMPAT32]: - Use int32_t instead of long int for ut_session. - Use an anonymous struct with 32-bit fields for ut_tv. - * sysdeps/gnu/bits/utmpx.h: Include . - (struct utmpx) [__WORDSIZE == 64 && __WORDSIZE_COMPAT32]: Do the same - here as in utmp.h for `struct utmp'. - * sysdeps/unix/sysv/linux/powerpc/bits/utmp.h: File removed. - * sysdeps/unix/sysv/linux/powerpc/bits/utmpx.h: File removed. - * sysdeps/unix/sysv/linux/sparc/bits/utmp.h: File removed. - * sysdeps/unix/sysv/linux/sparc/bits/utmpx.h: File removed. - * sysdeps/unix/sysv/linux/x86_64/bits/utmp.h: File removed. - * sysdeps/unix/sysv/linux/x86_64/bits/utmpx.h: File removed. - - * sysdeps/unix/sysv/linux/bits/resource.h: Replaced with the contents - of the sysdeps/unix/sysv/linux/i386/bits/resource.h file. - All the following files were identical or equivalent to it. - * sysdeps/unix/sysv/linux/i386/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/arm/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/cris/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/hppa/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/ia64/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/m68k/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/powerpc/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/s390/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/sh/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/x86_64/bits/resource.h: File removed. - - * sysdeps/unix/sysv/linux/bits/socket.h (struct msghdr): Use size_t - instead of int for msg_iovlen, instead of socklen_t for msg_controllen. - Other than the previously incorrect sign of msg_iovlen, this is a - no-op on 32-bit platforms. On 64-bit platforms it makes this header - match their layouts as well, so the following are now identical to it. - * sysdeps/unix/sysv/linux/s390/bits/socket.h: File removed. - * sysdeps/unix/sysv/linux/sparc/bits/socket.h: File removed. - * sysdeps/unix/sysv/linux/x86_64/bits/socket.h: File removed. - * sysdeps/unix/sysv/linux/ia64/bits/socket.h: File removed. - * sysdeps/unix/sysv/linux/alpha/bits/socket.h: File removed. - -2002-10-15 Ulrich Drepper - - * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_VFORK_SYSCALL): - Define for 2.4+ kernels. - - * sysdeps/unix/sysv/linux/i386/vfork.S: Optimize for kernels which - are known to have the vfork syscall. Don't confuse the CPUs - branch prediction unit by jumping to the return address. - - * sysdeps/unix/sysv/linux/alpha/fpathconf.c (__fpathconf): Add - support for reiserfs and xfs. - - * sysdeps/unix/sysv/linux/fpathconf.c (__fpathconf): Add case for - XFS link count. - * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define XFS_SUPER_MAGIC - and XFS_LINK_MAX. - Patch by Eric Sandeen [PR libc/4706]. - -2002-10-16 Jakub Jelinek - - * include/libc-symbols.h (attribute_tls_model_ie): Define. - * include/errno.h (errno): Define to __libc_errno in libc.so. - Add attribute_tls_model_ie. - * include/netdb.h (h_errno): Define to __libc_h_errno in libc.so. - Add attribute_tls_model_ie. - * include/resolv.h (_res): Define to __libc_res in libc.so. Add - attribute_tls_model_ie. - * inet/herrno.c (__libc_h_errno): Add hidden alias to h_errno. - (h_errno): Define. - * resolv/res_libc.c (__libc_res): Add hidden alias to _res. - (_res): Define. - * sysdeps/generic/bits/libc-tsd.h (__libc_tsd_define): Add - attribute_tls_model_ie. - * sysdeps/generic/errno-loc.c (errno): Only undefine if not using - __thread. - * sysdeps/generic/errno.c (__libc_errno): Add hidden alias to errno. - * sysdeps/unix/sysv/linux/i386/sysdep.h (SYSCALL_ERROR_HANDLER): Use - __libc_errno in USE___THREAD case. - * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER): - Likewise. - * configure.in (HAVE_TLS_MODEL_ATTRIBUTE): Check for - __attribute__((tls_model (""))). - * configure: Rebuilt. - * config.h.in (HAVE_TLS_MODEL_ATTRIBUTE): Add. - -2002-10-15 Ulrich Drepper - - * timezone/asia: Update from tzdata2002d. - * timezone/australasia: Likewise. - * timezone/iso3166.tab: Likewise. - * timezone/southamerica: Likewise. - * timezone/zone-tab: Likewise. - -2002-10-15 Roland McGrath - - * sysdeps/generic/dl-tls.c (_dl_deallocate_tls) [TLS_TCB_AT_TP]: - Adjust TCB pointer before calling free, so we get the whole block. - -2002-10-14 Roland McGrath - - * sysdeps/unix/sysv/linux/x86_64/sigaction.c - [HAVE_HIDDEN && !HAVE_BROKEN_VISIBILITY_ATTRIBUTE]: Declare restore_rt - extern using attribute_hidden instead of static, avoids warning. - -2002-10-09 Jakub Jelinek - - * sysdeps/unix/sysv/linux/configure.in: Use */lib64 for s390x too. - * sysdeps/unix/sysv/linux/configure: Rebuilt. - -2002-10-14 Ulrich Drepper - - * po/sv.po: Update from translation team. - -2002-10-12 H.J. Lu - - * sunrpc/thrsvc.c (PROCQUIT): New. - (struct rpc_arg): New. - (dispatch): Call exit (0) if request->rq_proc == PROCQUIT. - (test_one_call): Take struct rpc_arg * instead of CLIENT *c. - (thread_wrapper): Modified for struct rpc_arg * and call PROCQUIT. - (main): Modified for struct rpc_arg *. - -2002-10-14 Ulrich Drepper - - * dirent/scandir.c: Rearrange code a bit to reduce binary size. - -2002-10-14 Jakub Jelinek - - * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Include tls.h. - (SYSCALL_ERROR_HANDLER): Use RTLD_PRIVATE_ERRNO sequence - in ld.so even if __thread is supported. - -2002-10-13 Jakub Jelinek - - * sysdeps/unix/sysv/linux/arm/profil-counter.h (profil_counter): - Add hack to prevent the compiler from clobbering the signal context. - * sysdeps/unix/sysv/linux/sh/profil-counter.h (profil_counter): - Likewise. - * sysdeps/unix/sysv/linux/x86_64/profil-counter.h (profil_counter): - Likewise. - -2002-10-14 Andreas Jaeger - - * sysdeps/mips/fpu/libm-test-ulps: Regenerated by - Guido Guenther . - -2002-10-14 Ulrich Drepper - - * po/sk.po: Update from translation team. - -2002-09-26 Roland McGrath - - * elf/dl-load.c (_dl_dst_count, _dl_dst_substitute): Handle $LIB - dynamic string tag. - * elf/Makefile ($(objpfx)trusted-dirs.st): Make the output define - DL_DST_LIB based on $(slibdir). - -2002-10-13 Roland McGrath - - * elf/rtld-Rules ($(objpfx)rtld-libc.a): Use $(verbose) in ar command. - - * sysdeps/mach/hurd/getresuid.c: New file. - * sysdeps/mach/hurd/getresgid.c: New file. - * sysdeps/mach/hurd/setresuid.c: New file. - * sysdeps/mach/hurd/setresgid.c: New file. - - * posix/unistd.h [__USE_GNU] (getresuid, getresgid, setresuid, - setresgid): Declare them. - * NEWS: Mention it. - * include/unistd.h - (__getresuid, __getresgid, __setresuid, __setresgid): Declare them, - add libc_hidden_proto. - * posix/Versions (libc: GLIBC_2.3.2): New set. Add - getresuid, getresgid, setresuid, setresgid here. - * Versions.def (libc): Define GLIBC_2.3.2 set. - * sysdeps/generic/getresuid.c (__getresuid): Fix argument types. - Add libc_hidden_def. - * sysdeps/generic/getresgid.c (__getresgid): Likewise. - * sysdeps/generic/setresgid.c: New file. - * sysdeps/generic/setresuid.c: New file. - * sysdeps/unix/sysv/linux/Makefile [$(subdir) = misc] - (sysdep_routines): Don't add getresuid and getresgid here. - * sysdeps/unix/sysv/linux/arm/Makefile [$(subdir) = misc] - (sysdep_routines): Don't add setresuid and setresgid here. - * sysdeps/unix/sysv/linux/cris/Makefile: Likewise. - * sysdeps/unix/sysv/linux/sh/Makefile: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-32/Makefile: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/Makefile: Likewise. - * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. - * sysdeps/unix/sysv/linux/m68k/Makefile: Likewise. - * posix/Makefile (routines): Add them all here instead. - * sysdeps/unix/sysv/linux/i386/getresuid.c (getresuid): Renamed to - __getresuid. Add libc_hidden_def for that, and weak alias to old name. - * sysdeps/unix/sysv/linux/i386/getresgid.c (getresgid): Renamed to - __getresgid. Add libc_hidden_def for that, and weak alias to old name. - * sysdeps/unix/sysv/linux/i386/setresuid.c: Add libc_hidden_def. - [! __NR_setresuid]: Include generic file. - * sysdeps/unix/sysv/linux/i386/setresgid.c (setresgid): Renamed to - __setresgid. Add libc_hidden_def for that, and weak alias to old name. - [! __NR_setresuid]: Include generic file. - * sysdeps/unix/sysv/linux/syscalls.list (setresuid, setresgid): - Caller is - now, not EXTRA. - * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list - (setresuid, setresgid, getresuid, getresgid): Likewise. - * sysdeps/unix/sysv/linux/syscalls.list (getresuid, getresgid): - Add these calls here. - * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove them here. - * sysdeps/unix/sysv/linux/hppa/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. - - * sysdeps/unix/sysv/linux/Makefile [$(subdir) = misc] - (sysdep_routines): Add setfsuid and setfsgid here. - * sysdeps/unix/sysv/linux/arm/Makefile: Not here. - * sysdeps/unix/sysv/linux/sparc/sparc32/Makefile: Likewise. - * sysdeps/unix/sysv/linux/cris/Makefile: Likewise. - * sysdeps/unix/sysv/linux/sh/Makefile: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-32/Makefile: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/Makefile: Likewise. - * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. - * sysdeps/unix/sysv/linux/m68k/Makefile: Likewise. - - * hurd/errno.c: Renamed to ... - * hurd/errno-loc.c: ... this. - * hurd/Makefile (routines): errno -> errno-loc - -2002-10-13 Ulrich Drepper - - * po/de.po: Update from translation team. - - * MakeTAGS: Add -E flag to xgettext runs. - -2002-10-12 Ulrich Drepper - - * po/fr.po: Update from translation team. - - * sysdeps/posix/system.c: Remove support for old and buggy SCO systems. - Optimize a bit for use in glibc. - -2002-10-12 Roland McGrath - - * stdio-common/tst-rndseek.c (TIMEOUT): Increase to 10 seconds. - Some machines are slow. Guido Guenther has one. - -2002-10-12 Ulrich Drepper - - * po/sv.po: Update from translation team. - -2002-10-11 Isamu Hasegawa - - * posix/regcomp.c (re_compile_fastmap_iter): Remove the handling - OP_CONTEXT_NODE. - (regfree): Likewise. - (create_initial_state): Likewise. - (analyze): Remove the substitutions which became useless. - (calc_first): Likewise. - (calc_epsdest): Use edests of OP_BACK_REF in case that it has - epsilon destination. - (duplicate_node_closure): New function. - (duplicate_node): Remove the handling OP_CONTEXT_NODE. - (calc_inveclosure): Likewise. - (calc_eclosure): Likewise. - (calc_eclosure_iter): Invoke duplicate_node_closure instead of - direct invocation of duplicate_node. - (parse): Don't use comma operator in the return to avoid compiler - warning. - (parse_reg_exp): Likewise. - (parse_branch): Likewise. - (parse_expression): Likewise. - (parse_sub_exp): Likewise. - (parse_dup_op): Likewise. - * posix/regex_internal.c (re_dfa_add_node): Remove the substitutions - which became useless. - (create_ci_newstate): Remove the handling OP_CONTEXT_NODE. - (create_cd_newstate): Likewise. - * posix/regex_internal.h (re_token_type_t): Remove the obsolete type. - (re_token_t): Likewise. - (re_dfa_t): Likewise. - (re_node_set_remove): New macro. - * posix/regexec.c (check_matching): Remove the handling - OP_CONTEXT_NODE. - (check_halt_node_context): Likewise. - (proceed_next_node): Likewise. - (pop_fail_stack): Fix the memory leak. - (set_regs): Likewise. - (free_fail_stack_return): New function. - (sift_states_backward): Fix the memory leak. Remove the handling - OP_CONTEXT_NODE. - (update_cur_sifted_state): Append some if clause to avoid redundant - call. - (sub_epsilon_src_nodes): Use IS_EPSILON_NODE since it might be a - back reference. - (check_dst_limits): Remove the handling OP_CONTEXT_NODE. - (check_subexp_limits): Likewise. - (search_subexp): Likewise. - (sift_states_bkref): Likewise. - (transit_state_mb): Likewise. - (transit_state_bkref_loop): Likewise. - (transit_state_bkref_loop): Likewise. - (group_nodes_into_DFAstates): Likewise. - (check_node_accept): Likewise. - (sift_ctx_init): Add initializing. - -2002-10-12 Ulrich Drepper - - * sysdeps/unix/sysv/linux/i386/sysdep.h (INLINE_SYSCALL): Use - __builtin_expect. - -2002-10-11 Ulrich Drepper - - * elf/dl-load.c (_dl_map_object_from_fd): Remove unnecessarily - duplicated variable c. - - * sysdeps/unix/sysv/linux/sigwait.c (__sigwait): Use INTERNAL_SYSCALL - if possible. - - * sysdeps/unix/sysv/linux/i386/sysdep.h - (INTERNAL_SYSCALL_ERROR_P): New define. - (INTERNAL_SYSCALL_ERRNO): Likewise. - - * sysdeps/unix/sysv/linux/i386/profil-counter.h (profil_counter): - Add hack to prevent the compiler from clobbering the signal context. - -2002-10-11 Roland McGrath - - * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER): - Fix typos. - - * sysdeps/generic/dl-lookupcfg.h: Include . - * sysdeps/sh/dl-lookupcfg.h: File removed. - * sysdeps/i386/dl-lookupcfg.h: File removed. - - * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER): Add - missing labels and ; from last change. - - * stdio-common/tst-sscanf.c (val_double): Append .0 to large whole - number literals, so they are doubles instead of ints. - -2002-10-09 Roland McGrath - - * sysdeps/generic/bits/libc-tsd.h [USE___THREAD]: Conditional - changed from [USE_TLS && HAVE___THREAD]. - - * sysdeps/i386/dl-machine.h (elf_machine_type_class, elf_machine_rel): - Disable TLS relocs if [RTLD_BOOTSTRAP && !USE___THREAD]. - * sysdeps/x86_64/dl-machine.h - (elf_machine_type_class, elf_machine_rela): Likewise. - * sysdeps/sh/dl-machine.h (elf_machine_type_class, elf_machine_rela): - Likewise. - - * include/link.h (struct link_map): Remove member l_tls_tp_initialized. - * elf/rtld.c (_dl_start_final, dl_main): Don't use it. - (_dl_start): Conditionalize PT_TLS check on [USE___THREAD]. - - * sysdeps/i386/dl-tls.h (__TLS_GET_ADDR): Use ___tls_get_addr_internal - instead of ___tls_get_addr. - (___tls_get_addr_internal): Add attribute_hidden to decl. - - * sysdeps/generic/ldsodefs.h (struct rtld_global): New variable - _dl_error_catch_tsd. - * elf/rtld.c (startup_error_tsd): New function. - (dl_main): Point _dl_error_catch_tsd at that. - * elf/dl-error.c: Don't use libc-tsd.h for DL_ERROR, - use new function pointer instead. - * elf/dl-tsd.c: New file. - * elf/Makefile (routines): Add it. - -2002-10-07 Roland McGrath - - * elf/dl-misc.c (_dl_debug_vdprintf): Use INTERNAL_SYSCALL macro for - writev if it's available. Otherwise if [RTLD_PRIVATE_ERRNO] then - take _dl_load_lock around calling __writev. - - * sysdeps/unix/sysv/linux/i386/sysdep.h (INTERNAL_SYSCALL): New macro. - (INLINE_SYSCALL): Use that. - - * sysdeps/generic/dl-sysdep.h: New file. - * sysdeps/mach/hurd/dl-sysdep.h: New file. - * sysdeps/generic/ldsodefs.h: Include . - * include/errno.h [IS_IN_rtld]: Include to define ... - [RTLD_PRIVATE_ERRNO]: Use a hidden global variable for errno and - access it directly. - * elf/dl-minimal.c (__errno_location): Removed. - * sysdeps/unix/i386/sysdep.S (__syscall_errno) [RTLD_PRIVATE_ERRNO]: - Use GOTOFF access for errno. - * sysdeps/unix/sysv/linux/i386/sysdep.h - [RTLD_PRIVATE_ERRNO] (SYSCALL_ERROR_HANDLER): Likewise. - - * sysdeps/unix/x86_64/sysdep.S (__syscall_errno) [RTLD_PRIVATE_ERRNO]: - Use PC-relative access for errno. - * sysdeps/unix/sysv/linux/x86_64/sysdep.h - [RTLD_PRIVATE_ERRNO] (SYSCALL_ERROR_HANDLER): Likewise. - - * include/tls.h: New file. - (USE___THREAD): New macro. - Define to 1 under [USE_TLS && HAVE___THREAD] and only when compiling - libc or libpthread. - * sysdeps/unix/sysv/linux/i386/sysdep.h [USE___THREAD]: Conditional - changed from [USE_TLS && HAVE___THREAD]. - * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. - * sysdeps/unix/i386/sysdep.S: Likewise. - * sysdeps/unix/x86_64/sysdep.S: Likewise. - * include/errno.h: Likewise. - * include/netdb.h: Likewise. - * include/resolv.h: Likewise. - - * sysdeps/generic/errno.c: New file. - * csu/Makefile (aux): New variable, list errno. - * sysdeps/unix/sysv/linux/i386/sysdep.S (errno, _errno): Remove defns. - * sysdeps/unix/sysv/linux/m68k/sysdep.S: Likewise. - * sysdeps/unix/sysv/linux/x86_64/sysdep.S: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: Likewise. - * sysdeps/unix/sysv/linux/arm/sysdep.S: Likewise. - * sysdeps/unix/sysv/linux/cris/sysdep.S: Likewise. - * sysdeps/unix/sysv/linux/hppa/sysdep.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/sysdep.S: Likewise. - * sysdeps/unix/sysv/linux/powerpc/sysdep.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sysdep.S: Likewise. - * sysdeps/unix/sysv/linux/sh/sysdep.S: Likewise. - * sysdeps/unix/alpha/sysdep.S: Likewise. - * sysdeps/generic/start.c: Likewise. - * sysdeps/unix/start.c: Likewise. - * sysdeps/unix/arm/start.c: Likewise. - * sysdeps/unix/bsd/ultrix4/mips/start.S: Likewise. - * sysdeps/unix/sparc/start.c: Likewise. - * sysdeps/unix/sysv/irix4/start.c: Likewise. - * sysdeps/unix/sysv/linux/mips/sysdep.S: File removed. - - * manual/search.texi (Tree Search Function, Hash Search Function): - Mention search.h clearly. - -2002-10-05 Roland McGrath - - * elf/dl-fxstat64.c: File removed. - * elf/dl-xstat64.c: File removed. - * elf/Makefile (rtld-routines): Remove them. - * sysdeps/unix/sysv/linux/xstat64.c: Remove RTLD_STAT64 conditionals. - Instead, use strong_alias instead of versioned_symbol in the - !SHLIB_COMPAT case. - * sysdeps/unix/sysv/linux/fxstat64.c: Likewise. - * sysdeps/unix/sysv/linux/lxstat64.c: Likewise. - - * include/shlib-compat.h - (SHLIB_COMPAT): Require that IS_IN_##lib be defined nonzero. - [! NOT_IN_libc] (IS_IN_libc): Define it. - * cppflags-iterator.mk (CPPFLAGS-$(cpp-src)): Use -Dx=1 not just -Dx. - * elf/Makefile (CPPFLAGS-.os): Likewise. - - * sunrpc/rpc_main.c (main): Don't declare with noreturn attribute. - Return the status instead of calling exit. - - * Makeconfig (CFLAGS): Prepend -std=gnu99. - * Makerules (+make-deps): Use $(CFLAGS) only for .c sources. - Remove superfluous rm command, whose @ plus make bugs hid - all these commands from the make output. - - * include/stubs-prologue.h: New file. Give #error under #ifdef _LIBC. - * Makefile ($(inst_includedir)/gnu/stubs.h): Depend on it. - Use that file's contents instead of literal echo's for the prologue. - * include/features.h: Include unconditionally. - * include/gnu/stubs.h: New file. - -2002-09-30 Roland McGrath - - * elf/rtld-Rules: New file. - * elf/Makefile ($(objpfx)librtld.map, $(objpfx)librtld.mk, - $(objpfx)rtld-libc.a): New targets. - (generated): Add them. - (reloc-link): Remove -o $@ from the variable. - ($(objpfx)dl-allobjs.os): Add -o $@ after $(reloc-link). - (distribute): Add rtld-Rules. - (CPPFLAGS-.os): Define this instead of CFLAGS-.os. - * Makerules ($(+sysdir_pfx)sysd-rules): Emit rules for rtld-% targets. - (common-mostlyclean, common-clean): Clean up rtld-* files. - * sysdeps/unix/make-syscalls.sh: Add rtld-*.os target name to rules. - -2003-05-20 Jakub Jelinek - - * elf/dynamic-link.h (elf_get_dynamic_info): Add temp argument. - If temp != NULL, copy dynamic entries which need relocation to temp - array before relocating. - (DL_RO_DYN_TEMP_CNT): Define. - * elf/dl-load.c (_dl_map_object_from_fd): Adjust caller. - * elf/rtld.c (_dl_start): Likewise. - (dl_main): Likewise. Add dyn_temp static variable. - -2002-10-11 Roland McGrath - - * sysdeps/generic/dl-tls.c (__tls_get_addr): After freeing block in - now-unused dtv slot, reset the slot to TLS_DTV_UNALLOCATED. - - * elf/tls-macros.h [__x86_64__] (TLS_GD): Fix the sequence with the - proper set of no-op insn prefixes. - - * elf/tst-tls8.c (do_test): Use %zd format for l_tls_modid members. - -2002-10-11 Ulrich Drepper - - * sysdeps/unix/sysv/linux/execve.c: Don't try calling - __pthread_kill_other_threads_np. - - * sysdeps/generic/pselect.c: Avoid unnecessary sigprocmask calls. - -2002-10-08 Roland McGrath - - * locale/newlocale.c (__newlocale): If setting all categories to "C", - just return &_nl_C_locobj instead of copying it. - * locale/freelocale.c (__freelocale): Check for &_nl_C_locobj. - * locale/duplocale.c (__duplocale): Likewise. - -2002-10-07 Roland McGrath - - * config.h.in (HAVE_I386_SET_GDT): New #undef. - * sysdeps/mach/configure.in: Define it with new check for i386_set_gdt. - * sysdeps/mach/configure: Regenerated. - -2002-10-06 Franz Sirl - - * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h (INLINE_SYSCALL): - Add all necessary register outputs for syscall-clobbered registers. - -2002-10-02 David Mosberger - - * sysdeps/ia64/bzero.S: Rewritten by Sverre Jarp to tune for - Itanium 2 (and Itanium). - Fix unwind directives and make it fit in 80 columns. - * sysdeps/ia64/memset.S: Likewise. - * sysdeps/ia64/memcpy.S: Likewise. - Move jump table to .rodata section. - -2002-10-03 Roland McGrath - - * sysdeps/mach/hurd/i386/init-first.c (_hurd_stack_setup): Add - clobbers to asm. - -2002-10-10 Andreas Jaeger - - * sysdeps/x86_64/_mcount.S: Restore correct registers. - -2002-10-10 Ulrich Drepper - - * posix/Versions (libc) [GLIBC_PRIVATE]: Add __pselect. - -2002-10-09 Ulrich Drepper - - * sysdeps/generic/ldsodefs.h: Remove attribute_hidden from - _dl_allocate_tls_init. Add rtld_hidden_proto. - * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Add - rtld_hidden_def. - * elf/Versions (ld) [GLIBC_PRIVATE]: Add _dl_allocate_tls_init. - - * version.h (VERSION): Bump to 2.3.1. - - * Make-dist: Add back one of the tar invocations removed before. - - * stdlib/Makefile (distribute): Add allocalim.h. - - * sysdeps/generic/bits/libc-tsd.h [!(USE_TLS && HAVE___THREAD)] - (__libc_tsd_address): Use correct variable name. - Patch by Stefan Jones . - - * sysdeps/unix/sysv/linux/ia64/getcontext.S: Add missing ;;. - Reported by edwardsg@sgi.com [PR libc/4678]. - - * Versions.def (libc): Add GLIBC_2.3.1. - (libpthread): Add GLIBC_2.3.1. - - * include/signal.h: Add libc_hidden_proto for __sigwait, __sigwaitinfo, - and __sigtimedwait. - * signal/Versions: Add __sigtimedwait, __sigwait, and __sigwaitinfo. - * sysdeps/unix/sysv/linux/sigtimedwait.c (__sigtimedwait): Add - libc_hidden_def. - * sysdeps/unix/sysv/linux/sigwait.c (__sigwait): Likewise. - * sysdeps/unix/sysv/linux/sigwaitinfo.c (__sigwaitinfo): Likewise. - - * include/sys/msg.h: Declare __libc_msgrcv and __libc_msgsnd. - * sysdeps/unix/sysv/linux/msgrcv.c (__msgrcv): Rename to __libc_msgrcv - and make old name an alias. - * sysdeps/unix/sysv/linux/msgsnd.c (__msgsnd): Rename to __libc_msgsnd - and make old name an alias. - * sysvipc/Versions (libc) [GLIBC_PRIVATE]: Add __libc_msgrcv and - __libc_msgsnd. - - * include/sys/uio.h: Declare __libc_readv and __libc_writev. - * misc/Versions (libc) [GLIBC_PRIVATE]: Add __libc_readv and - __libc_writev. - * sysdeps/generic/readv.c (__readv): Rename to __libc_readv and make - old name an alias. - * sysdeps/posix/readv.c: Likewise - * sysdeps/unix/sysv/aix/readv.c: Likewise. - * sysdeps/unix/sysv/linux/readv.c: Likewise. - * sysdeps/generic/writev.c (__writev): Rename to __libc_writev and make - old name an alias. - * sysdeps/posix/writev.c: Likewise - * sysdeps/unix/sysv/aix/writev.c: Likewise. - * sysdeps/unix/sysv/linux/writev.c: Likewise. - - * include/sys/wait.h: Declare __waitid. - * posix/Versions (libc) [GLIBC_PRIVATE]: Add __waitid. - * sysdeps/generic/waitid.c (waitid): Rename to __waitid and make old - name an alias. - * sysdeps/posix/waitid.c: Likewise. - * sysdeps/unix/sysv/aix/waitid.c: Likewise. - - * sysdeps/unix/sysv/linux/syscalls.list: Add creat syscall. - -2002-10-07 Jakub Jelinek - - * include/alloca.h (__libc_use_alloca, __libc_alloca_cutoff): New - prototypes. - (__MAX_ALLOCA_CUTOFF): Define. - Include allocalim.h. - * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname2_r, - _nss_dns_gethostbyaddr_r): Use alloca or malloc to allocate - host_buffer depending on __libc_use_alloca. - * resolv/nss_dns/dns-network.c (_nss_dns_getnetbyname_r, - _nss_dns_getnetbyaddr_r): Use alloca or malloc to allocate - net_buffer depending on __libc_use_alloca. - * resolv/res_query.c (res_nquery): Use alloca or malloc to allocate - buf depending on __libc_use_alloca. - * resolv/gethnamaddr.c (gethostbyname2, gethostbyaddr): Likewise. - * stdio-common/vfprintf.c (vfprintf): Use __libc_use_alloca - instead of hardcoded constants. - Pass proper size argument to alloca and compute end for wide char - version. - * stdio-common/printf_fp.c (__printf_fp): Use __libc_use_alloca - instead of hardcoded constants. - * string/strcoll.c (strcoll): Likewise. - * string/strxfrm.c (strxfrm): Likewise. - * sysdeps/posix/readv.c (__readv): Likewise. - * sysdeps/posix/writev.c (__writev): Likewise. - * sysdeps/generic/allocalim.h: New file. - -2002-10-08 Roland McGrath - - * configure.in (aux_missing warning): Change "too old" to - "incompatible versions", since for autoconf it's "too new" right now. - * configure: Regenerated. - - * configure.in (AUTOCONF): New check to set it. Set to "no" if the - one found doesn't work on our configure.in. - * configure: Regenerated. - * config.make.in (AUTOCONF): New substituted variable. - * Makefile (autoconf-it-cvs): New canned sequence, broken out of ... - (autoconf-it): ... here, use that instead of defining conditionally. - Use $(AUTOCONF) instead of literal autoconf. - [$(AUTOCONF) != no] (configure, %/configure): Protect these rules - with this condition. - * Make-dist (autoconf-it, configure, %/configure): Copy those changes. - -2002-10-08 Ulrich Drepper - - * Make-dist (dist): Cleanup a bit. We are not interested in the - 14 char filename limit anymore. Remove intermediate files and - symlinks. - -2002-10-05 Ulrich Drepper - - * po/sk.po: Update from translation team. - * po/tr.po: Likewise. - * po/gl.po: Likewise. - -2002-10-05 Kaz Kojima - - * elf/tls-macros.h: Fix SH version of macros so as to match ABI syntax. - -2002-10-03 Ulrich Drepper - - * version.h (RELEASE): Change to stable. - -2002-10-03 Jakub Jelinek - - * sysdeps/unix/sysv/linux/_exit.c (__syscall_exit, - __syscall_exit_group): New prototypes. - -2002-10-03 Ulrich Drepper - - * glibc 2.3 released. - - -See ChangeLog.13 for earlier changes. diff --git a/test/regex/tst-regexloc.c b/test/regex/tst-regexloc.c deleted file mode 100644 index d862678e5..000000000 --- a/test/regex/tst-regexloc.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright (C) 2001 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - -int -main (int argc, char *argv[]) -{ -/* If uclibc has extended locale, or if it's a host build - * (assuming host libc always has locale): */ -#if defined __UCLIBC_HAS_XLOCALE__ || !defined __UCLIBC__ - regex_t re; - regmatch_t mat[1]; - int exitcode = 1; - - if (setlocale (LC_ALL, "de_DE.ISO-8859-1") == NULL) - puts ("cannot set locale"); - else if (regcomp (&re, "[a-f]*", 0) != REG_NOERROR) - puts ("cannot compile expression \"[a-f]*\""); - else if (regexec (&re, "abcdefCDEF", 1, mat, 0) == REG_NOMATCH) - puts ("no match"); - else - { - exitcode = mat[0].rm_so != 0 || mat[0].rm_eo != 6; - printf ("match from %d to %d - %s\n", - mat[0].rm_so, mat[0].rm_eo, - exitcode ? "WRONG!" : "ok" - ); - } - - return exitcode; -#else - puts("Test requires locale; skipping"); - return 0; -#endif -} diff --git a/test/rpc/Makefile b/test/rpc/Makefile deleted file mode 100644 index e098072fc..000000000 --- a/test/rpc/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc rpc tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/rpc/Makefile.in b/test/rpc/Makefile.in deleted file mode 100644 index 5612ff202..000000000 --- a/test/rpc/Makefile.in +++ /dev/null @@ -1,11 +0,0 @@ -# uClibc rpc tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -TESTS := getrpcent - -ifeq ($(UCLIBC_HAS_REENTRANT_RPC),y) -TESTS += getrpcent_r -endif - -DODIFF_getrpcent := 1 - diff --git a/test/rpc/getrpcent.c b/test/rpc/getrpcent.c deleted file mode 100644 index e12e76806..000000000 --- a/test/rpc/getrpcent.c +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include - -int main(int argc, char *argv[]) -{ - struct rpcent *ent; - - while ((ent = getrpcent()) != NULL) { - printf("%s: %i", ent->r_name, ent->r_number); - while (ent->r_aliases[0]) - printf(" %s", *ent->r_aliases++); - printf("\n"); - } - - endrpcent(); - - return 0; -} diff --git a/test/rpc/getrpcent_r.c b/test/rpc/getrpcent_r.c deleted file mode 100644 index 65ca61cd9..000000000 --- a/test/rpc/getrpcent_r.c +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include -#include -#include - -int main(int argc, char *argv[]) -{ - int ret; - char rpcdata[1024]; - struct rpcent rpcbuf, *ent; - - while ((ret = getrpcent_r(&rpcbuf, rpcdata, sizeof(rpcdata), &ent)) == 0) { - printf("%s: %i", ent->r_name, ent->r_number); - while (ent->r_aliases[0]) - printf(" %s", *ent->r_aliases++); - printf("\n"); - } - - if (ret != ENOENT) - printf("Test failed: %s\n", strerror(ret)); - - endrpcent(); - - return 0; -} diff --git a/test/setjmp/Makefile b/test/setjmp/Makefile deleted file mode 100644 index 6feab59ef..000000000 --- a/test/setjmp/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc setjmp tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/setjmp/Makefile.in b/test/setjmp/Makefile.in deleted file mode 100644 index e69de29bb..000000000 diff --git a/test/setjmp/bug269-setjmp.c b/test/setjmp/bug269-setjmp.c deleted file mode 100644 index a9254a1df..000000000 --- a/test/setjmp/bug269-setjmp.c +++ /dev/null @@ -1,106 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; If not, see - . */ - -/* Test case for Bugzilla # 269 */ - -#include -#include -#include - -jmp_buf buf1; -jmp_buf buf2; -int *p; -int n_x = 6; - -static int g_counter = 0; - -static int -f (void) -{ - static int counter = 0; - static int way_point1 = 3; - static int way_point2 = 2; - int lose = 0; - - if (setjmp (buf1) != 101) - { - int a[n_x]; /* reallocate stack space */ - g_counter++; - p = &a[0]; - if (g_counter < 5) - longjmp (buf1, 2); - else if (g_counter == 5) - longjmp (buf1, 101); - else - { - _setjmp (buf2); - _longjmp (buf1, 101); - } - } - - way_point1--; - - if (counter == 0) - { - counter++; - { - int a[n_x]; /* reallocate stack space */ - g_counter++; - p = &a[0]; - if (g_counter < 5) - longjmp (buf1, 2); - else if (g_counter == 5) - longjmp (buf1, 101); - else - { - _setjmp (buf2); - _longjmp (buf1, 101); - } - } - } - - way_point2--; - - if (counter == 1) - { - counter++; - longjmp (buf2, 2); - } - - lose = !(way_point1 == 0 && way_point2 == 0 - && g_counter == 6 && counter == 2); - - return lose; -} - -static int -do_test (void) -{ - int lose; - - lose = f (); - - if (lose) - puts ("Test FAILED!"); - else - puts ("Test succeeded!"); - - return lose ? EXIT_FAILURE : EXIT_SUCCESS; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/setjmp/jmpbug.c b/test/setjmp/jmpbug.c deleted file mode 100644 index da087a724..000000000 --- a/test/setjmp/jmpbug.c +++ /dev/null @@ -1,51 +0,0 @@ -/* setjmp vs alloca test case. Exercised bug on sparc. */ - -#include -#include -#include - -int ret; -int verbose; - -__attribute__ ((__noreturn__)) -static void -sub5 (jmp_buf buf) -{ - longjmp (buf, 1); -} - -static void -test (int x) -{ - jmp_buf buf; - char *foo; - int arr[100]; - - ++ret; - - arr[77] = x; - if (setjmp (buf)) - { - --ret; - if (verbose) - printf ("made it ok; %d\n", arr[77]); - return; - } - - foo = (char *) alloca (128); - sub5 (buf); -} - -int -main (int argc, char *argv[]) -{ - int i; - - verbose = (argc != 1); - ret = 0; - - for (i = 123; i < 345; ++i) - test (i); - - return ret; -} diff --git a/test/setjmp/sigjmpbug.c b/test/setjmp/sigjmpbug.c deleted file mode 100644 index 5b1718185..000000000 --- a/test/setjmp/sigjmpbug.c +++ /dev/null @@ -1,51 +0,0 @@ -/* sigsetjmp vs alloca test case. Exercised bug on sparc. */ - -#include -#include -#include - -int ret; -int verbose; - -__attribute__ ((__noreturn__)) -static void -sub5 (jmp_buf buf) -{ - siglongjmp (buf, 1); -} - -static void -test (int x) -{ - sigjmp_buf buf; - char *foo; - int arr[100]; - - ++ret; - - arr[77] = x; - if (sigsetjmp (buf, 1)) - { - --ret; - if (verbose) - printf ("made it ok; %d\n", arr[77]); - return; - } - - foo = (char *) alloca (128); - sub5 (buf); -} - -int -main (int argc, char *argv[]) -{ - int i; - - verbose = (argc != 1); - ret = 0; - - for (i = 123; i < 345; ++i) - test (i); - - return ret; -} diff --git a/test/setjmp/tst-setjmp.c b/test/setjmp/tst-setjmp.c deleted file mode 100644 index ea1c29acd..000000000 --- a/test/setjmp/tst-setjmp.c +++ /dev/null @@ -1,118 +0,0 @@ -/* Copyright (C) 1991, 1992, 1997, 1998, 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - -static jmp_buf env; -static int last_value = -1, lose = 0; - -__attribute__ ((__noreturn__)) -static void -jump (int val) -{ - longjmp (env, val); -} - -int -main (void) -{ - int value; - - value = setjmp (env); - if (value != last_value + 1) - { - fputs("Shouldn't have ", stdout); - lose = 1; - } - last_value = value; - switch (value) - { - case 0: - puts("Saved environment."); - jump (0); - default: - printf ("Jumped to %d.\n", value); - if (value < 10) - jump (value + 1); - } - - if (!lose && value == 10) - { - /* Do a second test, this time without `setjmp' being a macro. - This is not required by ISO C but we have this for compatibility. */ -#undef setjmp - extern int setjmp (jmp_buf); - - last_value = -1; - lose = 0; - - value = setjmp (env); - if (value != last_value + 1) - { - fputs("Shouldn't have ", stdout); - lose = 1; - } - last_value = value; - switch (value) - { - case 0: - puts("Saved environment."); - jump (0); - default: - printf ("Jumped to %d.\n", value); - if (value < 10) - jump (value + 1); - } - } - - if (!lose && value == 10) - { - /* And again for the `_setjmp' function. */ -#ifndef _setjmp - extern int _setjmp (jmp_buf); -#endif - last_value = -1; - lose = 0; - - value = _setjmp (env); - if (value != last_value + 1) - { - fputs("Shouldn't have ", stdout); - lose = 1; - } - last_value = value; - switch (value) - { - case 0: - puts("Saved environment."); - jump (0); - default: - printf ("Jumped to %d.\n", value); - if (value < 10) - jump (value + 1); - } - } - - if (lose || value != 10) - puts ("Test FAILED!"); - else - puts ("Test succeeded!"); - - return lose ? EXIT_FAILURE : EXIT_SUCCESS; -} diff --git a/test/setjmp/tst-vfork-longjmp.c b/test/setjmp/tst-vfork-longjmp.c deleted file mode 100644 index 278442472..000000000 --- a/test/setjmp/tst-vfork-longjmp.c +++ /dev/null @@ -1,108 +0,0 @@ -/* make sure we can vfork/exec across setjmp/longjmp's - * and make sure signal block masks don't get corrupted - * in the process. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int verbose = 0; - -static int execute_child(const char *prog) -{ - int status; - pid_t child; - child = vfork(); - if (child == 0) { - execlp(prog, prog, NULL); - perror("Could not execute specified prog"); - _exit(1); - } else if (child == 1) - return 1; - wait(&status); - return WEXITSTATUS(status); -} - -sigset_t orig_mask; - -static int check_sig_mask(void) -{ - int status; - pid_t child; - - child = vfork(); - if (child == 0) { - int ret; - sigset_t child_mask; - memset(&child_mask, 0x00, sizeof(child_mask)); - ret = sigprocmask(SIG_BLOCK, NULL, &child_mask); - if (ret != 0) { - perror("could not get child sig block mask"); - _exit(1); - } - ret = memcmp(&orig_mask, &child_mask, sizeof(orig_mask)); - if (verbose) { - printf("sigmsk: %08lx%08lx ", child_mask.__val[1], child_mask.__val[0]); - printf("sigmsk: %08lx%08lx ", orig_mask.__val[1], orig_mask.__val[0]); - printf("%i\n", ret); - } - _exit(ret); - } else if (child == 1) - return 1; - wait(&status); - return WEXITSTATUS(status); -} - -int main(int argc, char *argv[]) -{ - const char *prog; - jmp_buf env; - sigjmp_buf sigenv; - int max; - /* values modified between setjmp/longjmp cannot be local to this func */ - static int cnt, ret; - - memset(&orig_mask, 0x00, sizeof(orig_mask)); - ret = sigprocmask(SIG_BLOCK, NULL, &orig_mask); - if (ret != 0) { - perror("could not get orig sig block mask"); - return 1; - } - - prog = (argc > 1 ? argv[1] : "true"); - ret = 0; - verbose = 0; - max = 10; - - /* test vfork()/exec() inside of sigsetjmp/siglongjmp */ - cnt = 0; - sigsetjmp(sigenv, 1); - ++cnt; - if (verbose) - printf("sigsetjmp loop %i\n", cnt); - ret |= check_sig_mask(); - ret |= execute_child(prog); - if (cnt < max) - siglongjmp(sigenv, 0); - - /* test vfork()/sigprocmask() inside of setjmp/longjmp */ - cnt = 0; - setjmp(env); - ++cnt; - if (verbose) - printf("setjmp loop %i\n", cnt); - ret |= check_sig_mask(); - ret |= execute_child(prog); - if (cnt < max) - longjmp(env, 0); - - return ret; -} diff --git a/test/signal/.indent.pro b/test/signal/.indent.pro deleted file mode 100644 index 492ecf1c7..000000000 --- a/test/signal/.indent.pro +++ /dev/null @@ -1,33 +0,0 @@ ---blank-lines-after-declarations ---blank-lines-after-procedures ---break-before-boolean-operator ---no-blank-lines-after-commas ---braces-on-if-line ---braces-on-struct-decl-line ---comment-indentation25 ---declaration-comment-column25 ---no-comment-delimiters-on-blank-lines ---cuddle-else ---continuation-indentation4 ---case-indentation0 ---else-endif-column33 ---space-after-cast ---line-comments-indentation0 ---declaration-indentation1 ---dont-format-first-column-comments ---dont-format-comments ---honour-newlines ---indent-level4 -/* changed from 0 to 4 */ ---parameter-indentation4 ---line-length78 /* changed from 75 */ ---continue-at-parentheses ---no-space-after-function-call-names ---dont-break-procedure-type ---dont-star-comments ---leave-optional-blank-lines ---dont-space-special-semicolon ---tab-size4 -/* additions by Mark */ ---case-brace-indentation0 ---leave-preprocessor-space diff --git a/test/signal/Makefile b/test/signal/Makefile deleted file mode 100644 index c2afb5f50..000000000 --- a/test/signal/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc signal tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/signal/Makefile.in b/test/signal/Makefile.in deleted file mode 100644 index c8e2545fa..000000000 --- a/test/signal/Makefile.in +++ /dev/null @@ -1,6 +0,0 @@ -# uClibc signal tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -ifeq ($(UCLIBC_HAS_OBSOLETE_BSD_SIGNAL),) -TESTS_DISABLED := tst-sigsimple -endif diff --git a/test/signal/sigchld.c b/test/signal/sigchld.c deleted file mode 100644 index 22febaca7..000000000 --- a/test/signal/sigchld.c +++ /dev/null @@ -1,68 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - - -#ifdef __ARCH_USE_MMU__ - -static void test_handler(int signo) -{ - write(1, "caught SIGCHLD\n", 15); - return; -} - -int main(void) -{ - pid_t mypid; - struct sigaction siga; - static sigset_t set; - - /* Set up sighandling */ - sigfillset(&set); - siga.sa_handler = test_handler; - siga.sa_mask = set; - siga.sa_flags = 0; - if (sigaction(SIGCHLD, &siga, (struct sigaction *)NULL) != 0) { - fprintf(stderr, "sigaction choked: %s!", strerror(errno)); - exit(EXIT_FAILURE); - } - - /* Setup a child process to exercise the sig handling for us */ - mypid = getpid(); - if (fork() == 0) { - int i; - - for (i=0; i < 3; i++) { - sleep(2); - kill(mypid, SIGCHLD); - } - _exit(EXIT_SUCCESS); - } - - - /* Wait for signals */ - write(1, "waiting for a SIGCHLD\n",22); - for(;;) { - sleep(10); - if (waitpid(-1, NULL, WNOHANG | WUNTRACED) > 0) - break; - write(1, "after sleep\n", 12); - } - - printf("Bye-bye! All done!\n"); - return 0; -} - -#else - -int main(void) -{ - printf("Skipping test on non-mmu host!\n"); - return 0; -} - -#endif diff --git a/test/signal/signal.c b/test/signal/signal.c deleted file mode 100644 index 01d1a785f..000000000 --- a/test/signal/signal.c +++ /dev/null @@ -1,95 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* - * signal testing function for uClibc - * Copyright (C) 2000-2006 by Erik Andersen - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#ifndef _GNU_SOURCE -# define _GNU_SOURCE -#endif -#include -#include -#include -#include -#include -#include -#include - - -/* -------------------------------------------------*/ -/* This stuff is common to all the testing routines */ -/* -------------------------------------------------*/ -const char *it = ""; /* Routine name for message routines. */ -size_t errors = 0; - -static void check(int thing, int number) -{ - if (!thing) { - printf("%s: flunked test %d\n", it, number); - ++errors; - } -} - -#if 0 -static void equal(const char *a, const char *b, int number) -{ - check(a != NULL && b != NULL && (strcmp(a, b) == 0), number); -} -#endif - - -/* -------------------------------------------------*/ -/* Let the tests begin.... */ -/* -------------------------------------------------*/ - -int global_int = 0; - -static void set_global_int_to_one(int signum) -{ - printf ("Received signal %d (%s).\n", signum, strsignal(signum)); - global_int = 1; - return; -} - -static void signal_test_1(void) -{ - global_int = 0; - - it = "global variable set from signal handler"; - if (signal(SIGUSR1, set_global_int_to_one) == SIG_ERR) { - perror("signal(SIGUSR1) failed"); - exit(-1); - } - raise(SIGUSR1); - - /* This should already have jumped to the signal handler */ - check((global_int == 1), 1); - - global_int = 0; - if (signal(SIGUSR1, SIG_IGN) == SIG_ERR) { - perror("signal(SIGUSR1) failed"); - exit(-1); - } - raise(SIGUSR1); - /* This should not go to the signal handler this time since we */ - check((global_int == 0), 1); -} - - -int main(void) -{ - int status; - - signal_test_1(); - - if (errors == 0) { - status = EXIT_SUCCESS; - printf("No errors.\n"); - } else { - status = EXIT_FAILURE; - printf("%lu errors.\n", (unsigned long)errors); - } - exit(status); -} diff --git a/test/signal/tst-raise.c b/test/signal/tst-raise.c deleted file mode 100644 index 534ae7151..000000000 --- a/test/signal/tst-raise.c +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include - -volatile int count; - -static void -sh (int sig) -{ - ++count; -} - -int -main (void) -{ - struct sigaction sa; - sa.sa_handler = sh; - sigemptyset (&sa.sa_mask); - sa.sa_flags = 0; - if (sigaction (SIGUSR1, &sa, NULL) < 0) - { - printf ("sigaction failed: %s\n", strerror(errno)); - exit (1); - } - if (raise (SIGUSR1) < 0) - { - printf ("first raise failed: %s\n", strerror(errno)); - exit (1); - } - if (raise (SIGUSR1) < 0) - { - printf ("second raise failed: %s\n", strerror(errno)); - exit (1); - } - if (count != 2) - { - printf ("signal handler not called 2 times\n"); - exit (1); - } - exit (0); -} diff --git a/test/signal/tst-signal.c b/test/signal/tst-signal.c deleted file mode 100644 index 6d3178792..000000000 --- a/test/signal/tst-signal.c +++ /dev/null @@ -1,44 +0,0 @@ -#include -#include -#include -#include - -int win = 0; - -static void -handler (int sig) -{ - printf ("Received signal %d (%s).\n", sig, strsignal(sig)); - win = 1; -} - -int -main (void) -{ - if (signal (SIGTERM, handler) == SIG_ERR) - { - perror ("signal: SIGTERM"); - exit (EXIT_FAILURE); - } - - puts ("Set handler."); - - printf ("Sending myself signal %d.\n", SIGTERM); - fflush (stdout); - - if (raise (SIGTERM) < 0) - { - perror ("raise: SIGTERM"); - exit (EXIT_FAILURE); - } - - if (!win) - { - puts ("Didn't get any signal. Test FAILED!"); - exit (EXIT_FAILURE); - } - - puts ("Got a signal. Test succeeded."); - - return EXIT_SUCCESS; -} diff --git a/test/signal/tst-signalfd.c b/test/signal/tst-signalfd.c deleted file mode 100644 index 1fbb748aa..000000000 --- a/test/signal/tst-signalfd.c +++ /dev/null @@ -1,63 +0,0 @@ -/* vi: set sw=4 ts=4 sts=4: */ -/* - * signalfd test for uClibc - * Copyright (C) 2012 by Kevin Cernekee - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static int -do_test(void) -{ - int fd, ret, result = 0; - struct signalfd_siginfo ssi; - sigset_t mask; - - sigemptyset(&mask); - sigaddset(&mask, SIGUSR1); - sigprocmask(SIG_BLOCK, &mask, NULL); - - fd = signalfd(-1, &mask, SFD_NONBLOCK); - if (fd < 0) { - printf("signalfd() failed: %s\n", strerror(errno)); - result = 1; - } - - /* this should return immediately with EAGAIN due to SFD_NONBLOCK */ - memset(&ssi, 0, sizeof(ssi)); - ret = read(fd, &ssi, sizeof(ssi)); - if (ret != -1 || errno != EAGAIN) { - error(0, 0, "first read() returned %d", ret); - result = 1; - } - - kill(getpid(), SIGUSR1); - - /* this should return a struct ssi indicating receipt of SIGUSR1 */ - ret = read(fd, &ssi, sizeof(ssi)); - if (ret != sizeof(ssi)) { - error(0, 0, "second read() returned %d", ret); - result = 1; - } - - if (ssi.ssi_signo != SIGUSR1) { - error(0, 0, "ssi contains bogus signo"); - result = 1; - } - - return result; -} - -#define TIMEOUT 5 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/signal/tst-sigset.c b/test/signal/tst-sigset.c deleted file mode 100644 index bc1b05764..000000000 --- a/test/signal/tst-sigset.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Test sig*set functions. */ - -#include -#include -#include -#include - -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ - int result = 0; - int sig = -1; - -#define TRY(call) \ - if (call) \ - { \ - printf ("%s (sig = %d): %s\n", #call, sig, strerror(errno)); \ - result = 1; \ - } \ - else - - - sigset_t set; - TRY (sigemptyset (&set) != 0); - -#ifdef SIGRTMAX - int max_sig = SIGRTMAX; -#else - int max_sig = NSIG - 1; -#endif - - for (sig = 1; sig <= max_sig; ++sig) - { - TRY (sigismember (&set, sig) != 0); - TRY (sigaddset (&set, sig) != 0); - TRY (sigismember (&set, sig) == 0); - TRY (sigdelset (&set, sig) != 0); - TRY (sigismember (&set, sig) != 0); - } - - return result; -} - -#include "../test-skeleton.c" diff --git a/test/signal/tst-sigsimple.c b/test/signal/tst-sigsimple.c deleted file mode 100644 index 80220eed0..000000000 --- a/test/signal/tst-sigsimple.c +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -static int -do_test (void) -{ - int result = 0; - int e; - -#define RUN(test) \ - errno = 0; \ - e = test; \ - if (e != -1) \ - { \ - printf ("%s returned %d\n", #test, e); \ - result = 1; \ - } \ - else if (errno != EINVAL) \ - { \ - printf ("%s didn't set errno to EINVAL (%s instead)\n", \ - #test, strerror (errno)); \ - result = 1; \ - } - - RUN (sighold (-1)); - RUN (sighold (_NSIG + 100)); - - RUN (sigrelse (-1)); - RUN (sigrelse (_NSIG + 100)); - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/silly/Makefile b/test/silly/Makefile deleted file mode 100644 index 54f4bd023..000000000 --- a/test/silly/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc silly tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/silly/Makefile.in b/test/silly/Makefile.in deleted file mode 100644 index 6092c809f..000000000 --- a/test/silly/Makefile.in +++ /dev/null @@ -1,24 +0,0 @@ -# uClibc silly tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -RET_hello := 42 -RET_tiny := 42 - -ifeq ($(TARGET_ARCH),ia64) -TESTS_DISABLED += tst-atomic tst-atomic-long -endif - -ifeq ($(TARGET_ARCH),mips) -TESTS_DISABLED += tst-atomic tst-atomic-long -endif - -ifeq ($(TARGET_ARCH),sparc) -TESTS_DISABLED += tst-atomic tst-atomic-long -endif - -atomic_headers := -I$(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH) \ - -I$(top_srcdir)libc/sysdeps/linux \ - -I$(top_builddir)include - -CFLAGS_tst-atomic = $(atomic_headers) -CFLAGS_tst-atomic-long = $(atomic_headers) diff --git a/test/silly/hello.c b/test/silly/hello.c deleted file mode 100644 index d330597ab..000000000 --- a/test/silly/hello.c +++ /dev/null @@ -1,8 +0,0 @@ -#include -#include - -int main(void) -{ - printf("hello world\n"); - exit(42); -} diff --git a/test/silly/tiny.c b/test/silly/tiny.c deleted file mode 100644 index e54c0ff9e..000000000 --- a/test/silly/tiny.c +++ /dev/null @@ -1,6 +0,0 @@ -#include - -int main(void) -{ - _exit(42); -} diff --git a/test/silly/tst-atomic-long.c b/test/silly/tst-atomic-long.c deleted file mode 100644 index d13fb074c..000000000 --- a/test/silly/tst-atomic-long.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Tests for atomic.h macros. - Copyright (C) 2003-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include - -#define atomic_t long -#if __WORDSIZE == 64 -# define TEST_ATOMIC64 1 -#endif - -#include "tst-atomic.c" diff --git a/test/silly/tst-atomic.c b/test/silly/tst-atomic.c deleted file mode 100644 index fc773b231..000000000 --- a/test/silly/tst-atomic.c +++ /dev/null @@ -1,573 +0,0 @@ -/* Tests for atomic.h macros. - Copyright (C) 2003-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - -#ifndef atomic_t -# define atomic_t int -#endif - -#define CHK2(f,a1,a2,rv,new_mem) \ - retval = f(&mem, a1, a2); \ - if (retval != rv) { \ - printf("%s(mem, %lu, %lu): retval %lu != expected %lu\n", \ - #f, a1, a2, retval, rv); \ - ret = 1; \ - } \ - if (mem != new_mem) { \ - printf("%s(mem, %lu, %lu): mem %lu != expected %lu\n", \ - #f, a1, a2, mem, new_mem); \ - ret = 1; \ - } -#define CHK1(f,a1,rv,new_mem) \ - retval = f(&mem, a1); \ - if (retval != rv) { \ - printf("%s(mem, %lu): retval %lu != expected %lu\n", \ - #f, a1, retval, rv); \ - ret = 1; \ - } \ - if (mem != new_mem) { \ - printf("%s(mem, %lu): mem %lu != expected %lu\n", \ - #f, a1, mem, new_mem); \ - ret = 1; \ - } -#define CHK0(f,rv,new_mem) \ - retval = f(&mem); \ - if (retval != rv) { \ - printf("%s(mem): retval %lu != expected %lu\n", \ - #f, retval, rv); \ - ret = 1; \ - } \ - if (mem != new_mem) { \ - printf("%s(mem): mem %lu != expected %lu\n", \ - #f, mem, new_mem); \ - ret = 1; \ - } - -/* Test various atomic.h macros. */ -static int -do_test (void) -{ - atomic_t mem, expected, retval; - int ret = 0; - -#ifdef atomic_compare_and_exchange_val_acq - mem = 24; - CHK2(atomic_compare_and_exchange_val_acq, 35, 24, 24, 35); - mem = 12; - CHK2(atomic_compare_and_exchange_val_acq, 10, 15, 12, 12); - mem = -15; - CHK2(atomic_compare_and_exchange_val_acq, -56, -15, -15, -56); - mem = -1; - CHK2(atomic_compare_and_exchange_val_acq, 17, 0, -1, -1); -#endif - - mem = 24; - CHK2(atomic_compare_and_exchange_bool_acq, 35, 24, 0, 35); - mem = 12; - CHK2(atomic_compare_and_exchange_bool_acq, 10, 15, 1, 12); - mem = -15; - CHK2(atomic_compare_and_exchange_bool_acq, -56, -15, 0, -56); - mem = -1; - CHK2(atomic_compare_and_exchange_bool_acq, 17, 0, 1, -1); - - mem = 64; - CHK1(atomic_exchange_acq, 31, 64, 31); - mem = 2; - CHK1(atomic_exchange_and_add, 11, 2, 13); - mem = 2; - CHK1(atomic_exchange_and_add_acq, 11, 2, 13); - mem = 2; - CHK1(atomic_exchange_and_add_rel, 11, 2, 13); - - mem = -21; - atomic_add (&mem, 22); - if (mem != 1) - { - printf ("atomic_add(mem, 22): mem %lu != expected 1\n", mem); - ret = 1; - } - - mem = -1; - atomic_increment (&mem); - if (mem != 0) - { - printf ("atomic_increment(mem): mem %lu != expected 0\n", mem); - ret = 1; - } - - mem = 2; - if ((retval = atomic_increment_val (&mem)) != 3) - { - printf ("atomic_increment_val(mem): retval %lu != expected 3\n", retval); - ret = 1; - } - - mem = 0; - CHK0(atomic_increment_and_test, 0, 1); - mem = 35; - CHK0(atomic_increment_and_test, 0, 36); - mem = -1; - CHK0(atomic_increment_and_test, 1, 0); - mem = 17; - atomic_decrement (&mem); - if (mem != 16) - { - printf ("atomic_increment(mem): mem %lu != expected 16\n", mem); - ret = 1; - } - - if ((retval = atomic_decrement_val (&mem)) != 15) - { - printf ("atomic_decrement_val(mem): retval %lu != expected 15\n", retval); - ret = 1; - } - - mem = 0; - CHK0(atomic_decrement_and_test, 0, -1); - - mem = 15; - CHK0(atomic_decrement_and_test, 0, 14); - mem = 1; - CHK0(atomic_decrement_and_test, 1, 0); - mem = 1; - if (atomic_decrement_if_positive (&mem) != 1 - || mem != 0) - { - puts ("atomic_decrement_if_positive test 1 failed"); - ret = 1; - } - - mem = 0; - if (atomic_decrement_if_positive (&mem) != 0 - || mem != 0) - { - puts ("atomic_decrement_if_positive test 2 failed"); - ret = 1; - } - - mem = -1; - if (atomic_decrement_if_positive (&mem) != -1 - || mem != -1) - { - puts ("atomic_decrement_if_positive test 3 failed"); - ret = 1; - } - - mem = -12; - if (! atomic_add_negative (&mem, 10) - || mem != -2) - { - puts ("atomic_add_negative test 1 failed"); - ret = 1; - } - - mem = 0; - if (atomic_add_negative (&mem, 100) - || mem != 100) - { - puts ("atomic_add_negative test 2 failed"); - ret = 1; - } - - mem = 15; - if (atomic_add_negative (&mem, -10) - || mem != 5) - { - puts ("atomic_add_negative test 3 failed"); - ret = 1; - } - - mem = -12; - if (atomic_add_negative (&mem, 14) - || mem != 2) - { - puts ("atomic_add_negative test 4 failed"); - ret = 1; - } - - mem = 0; - if (! atomic_add_negative (&mem, -1) - || mem != -1) - { - puts ("atomic_add_negative test 5 failed"); - ret = 1; - } - - mem = -31; - if (atomic_add_negative (&mem, 31) - || mem != 0) - { - puts ("atomic_add_negative test 6 failed"); - ret = 1; - } - - mem = -34; - if (atomic_add_zero (&mem, 31) - || mem != -3) - { - puts ("atomic_add_zero test 1 failed"); - ret = 1; - } - - mem = -36; - if (! atomic_add_zero (&mem, 36) - || mem != 0) - { - puts ("atomic_add_zero test 2 failed"); - ret = 1; - } - - mem = 113; - if (atomic_add_zero (&mem, -13) - || mem != 100) - { - puts ("atomic_add_zero test 3 failed"); - ret = 1; - } - - mem = -18; - if (atomic_add_zero (&mem, 20) - || mem != 2) - { - puts ("atomic_add_zero test 4 failed"); - ret = 1; - } - - mem = 10; - if (atomic_add_zero (&mem, -20) - || mem != -10) - { - puts ("atomic_add_zero test 5 failed"); - ret = 1; - } - - mem = 10; - if (! atomic_add_zero (&mem, -10) - || mem != 0) - { - puts ("atomic_add_zero test 6 failed"); - ret = 1; - } - - mem = 0; - atomic_bit_set (&mem, 1); - if (mem != 2) - { - puts ("atomic_bit_set test 1 failed"); - ret = 1; - } - - mem = 8; - atomic_bit_set (&mem, 3); - if (mem != 8) - { - puts ("atomic_bit_set test 2 failed"); - ret = 1; - } - -#ifdef TEST_ATOMIC64 - mem = 16; - atomic_bit_set (&mem, 35); - if (mem != 0x800000010LL) - { - puts ("atomic_bit_set test 3 failed"); - ret = 1; - } -#endif - - mem = 0; - if (atomic_bit_test_set (&mem, 1) - || mem != 2) - { - puts ("atomic_bit_test_set test 1 failed"); - ret = 1; - } - - mem = 8; - if (! atomic_bit_test_set (&mem, 3) - || mem != 8) - { - puts ("atomic_bit_test_set test 2 failed"); - ret = 1; - } - -#ifdef TEST_ATOMIC64 - mem = 16; - if (atomic_bit_test_set (&mem, 35) - || mem != 0x800000010LL) - { - puts ("atomic_bit_test_set test 3 failed"); - ret = 1; - } - - mem = 0x100000000LL; - if (! atomic_bit_test_set (&mem, 32) - || mem != 0x100000000LL) - { - puts ("atomic_bit_test_set test 4 failed"); - ret = 1; - } -#endif - -#ifdef catomic_compare_and_exchange_val_acq - mem = 24; - if (catomic_compare_and_exchange_val_acq (&mem, 35, 24) != 24 - || mem != 35) - { - puts ("catomic_compare_and_exchange_val_acq test 1 failed"); - ret = 1; - } - - mem = 12; - if (catomic_compare_and_exchange_val_acq (&mem, 10, 15) != 12 - || mem != 12) - { - puts ("catomic_compare_and_exchange_val_acq test 2 failed"); - ret = 1; - } - - mem = -15; - if (catomic_compare_and_exchange_val_acq (&mem, -56, -15) != -15 - || mem != -56) - { - puts ("catomic_compare_and_exchange_val_acq test 3 failed"); - ret = 1; - } - - mem = -1; - if (catomic_compare_and_exchange_val_acq (&mem, 17, 0) != -1 - || mem != -1) - { - puts ("catomic_compare_and_exchange_val_acq test 4 failed"); - ret = 1; - } -#endif - - mem = 24; - if (catomic_compare_and_exchange_bool_acq (&mem, 35, 24) - || mem != 35) - { - puts ("catomic_compare_and_exchange_bool_acq test 1 failed"); - ret = 1; - } - - mem = 12; - if (! catomic_compare_and_exchange_bool_acq (&mem, 10, 15) - || mem != 12) - { - puts ("catomic_compare_and_exchange_bool_acq test 2 failed"); - ret = 1; - } - - mem = -15; - if (catomic_compare_and_exchange_bool_acq (&mem, -56, -15) - || mem != -56) - { - puts ("catomic_compare_and_exchange_bool_acq test 3 failed"); - ret = 1; - } - - mem = -1; - if (! catomic_compare_and_exchange_bool_acq (&mem, 17, 0) - || mem != -1) - { - puts ("catomic_compare_and_exchange_bool_acq test 4 failed"); - ret = 1; - } - - mem = 2; - if (catomic_exchange_and_add (&mem, 11) != 2 - || mem != 13) - { - puts ("catomic_exchange_and_add test failed"); - ret = 1; - } - - mem = -21; - catomic_add (&mem, 22); - if (mem != 1) - { - puts ("catomic_add test failed"); - ret = 1; - } - - mem = -1; - catomic_increment (&mem); - if (mem != 0) - { - puts ("catomic_increment test failed"); - ret = 1; - } - - mem = 2; - if (catomic_increment_val (&mem) != 3) - { - puts ("catomic_increment_val test failed"); - ret = 1; - } - - mem = 17; - catomic_decrement (&mem); - if (mem != 16) - { - puts ("catomic_decrement test failed"); - ret = 1; - } - - if (catomic_decrement_val (&mem) != 15) - { - puts ("catomic_decrement_val test failed"); - ret = 1; - } - - /* Tests for C11-like atomics. */ - mem = 11; - if (atomic_load_relaxed (&mem) != 11 || atomic_load_acquire (&mem) != 11) - { - puts ("atomic_load_{relaxed,acquire} test failed"); - ret = 1; - } - - atomic_store_relaxed (&mem, 12); - if (mem != 12) - { - puts ("atomic_store_relaxed test failed"); - ret = 1; - } - atomic_store_release (&mem, 13); - if (mem != 13) - { - puts ("atomic_store_release test failed"); - ret = 1; - } - - mem = 14; - expected = 14; - if (!atomic_compare_exchange_weak_relaxed (&mem, &expected, 25) - || mem != 25 || expected != 14) - { - puts ("atomic_compare_exchange_weak_relaxed test 1 failed"); - ret = 1; - } - if (atomic_compare_exchange_weak_relaxed (&mem, &expected, 14) - || mem != 25 || expected != 25) - { - puts ("atomic_compare_exchange_weak_relaxed test 2 failed"); - ret = 1; - } - mem = 14; - expected = 14; - if (!atomic_compare_exchange_weak_acquire (&mem, &expected, 25) - || mem != 25 || expected != 14) - { - puts ("atomic_compare_exchange_weak_acquire test 1 failed"); - ret = 1; - } - if (atomic_compare_exchange_weak_acquire (&mem, &expected, 14) - || mem != 25 || expected != 25) - { - puts ("atomic_compare_exchange_weak_acquire test 2 failed"); - ret = 1; - } - mem = 14; - expected = 14; - if (!atomic_compare_exchange_weak_release (&mem, &expected, 25) - || mem != 25 || expected != 14) - { - puts ("atomic_compare_exchange_weak_release test 1 failed"); - ret = 1; - } - if (atomic_compare_exchange_weak_release (&mem, &expected, 14) - || mem != 25 || expected != 25) - { - puts ("atomic_compare_exchange_weak_release test 2 failed"); - ret = 1; - } - - mem = 23; - if (atomic_exchange_acquire (&mem, 42) != 23 || mem != 42) - { - puts ("atomic_exchange_acquire test failed"); - ret = 1; - } - mem = 23; - if (atomic_exchange_release (&mem, 42) != 23 || mem != 42) - { - puts ("atomic_exchange_release test failed"); - ret = 1; - } - - mem = 23; - if (atomic_fetch_add_relaxed (&mem, 1) != 23 || mem != 24) - { - puts ("atomic_fetch_add_relaxed test failed"); - ret = 1; - } - mem = 23; - if (atomic_fetch_add_acquire (&mem, 1) != 23 || mem != 24) - { - puts ("atomic_fetch_add_acquire test failed"); - ret = 1; - } - mem = 23; - if (atomic_fetch_add_release (&mem, 1) != 23 || mem != 24) - { - puts ("atomic_fetch_add_release test failed"); - ret = 1; - } - mem = 23; - if (atomic_fetch_add_acq_rel (&mem, 1) != 23 || mem != 24) - { - puts ("atomic_fetch_add_acq_rel test failed"); - ret = 1; - } - - mem = 3; - if (atomic_fetch_and_acquire (&mem, 2) != 3 || mem != 2) - { - puts ("atomic_fetch_and_acquire test failed"); - ret = 1; - } - - mem = 4; - if (atomic_fetch_or_relaxed (&mem, 2) != 4 || mem != 6) - { - puts ("atomic_fetch_or_relaxed test failed"); - ret = 1; - } - mem = 4; - if (atomic_fetch_or_acquire (&mem, 2) != 4 || mem != 6) - { - puts ("atomic_fetch_or_acquire test failed"); - ret = 1; - } - - /* This is a single-threaded test, so we can't test the effects of the - fences. */ - atomic_thread_fence_acquire (); - atomic_thread_fence_release (); - atomic_thread_fence_seq_cst (); - - return ret; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/stat/Makefile b/test/stat/Makefile deleted file mode 100644 index 03fdb960a..000000000 --- a/test/stat/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc stat tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/stat/Makefile.in b/test/stat/Makefile.in deleted file mode 100644 index 9c06dedb3..000000000 --- a/test/stat/Makefile.in +++ /dev/null @@ -1,13 +0,0 @@ -# uClibc stat tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -ifeq ($(UCLIBC_HAS_LFS),) -TESTS_DISABLED := stat64 -endif -CFLAGS_stat64 := -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 - -DODIFF_stat := 1 -DODIFF_stat64 := 1 - -OPTS_stat := Makefile -OPTS_stat64 := Makefile diff --git a/test/stat/memcmp-stat.c b/test/stat/memcmp-stat.c deleted file mode 100644 index 254c754c4..000000000 --- a/test/stat/memcmp-stat.c +++ /dev/null @@ -1,107 +0,0 @@ -/* Distilled from issue found with tar and symlinks. - * Make sure that the whole stat struct between runs - * is agreeable. - */ - -#ifndef _GNU_SOURCE -# define _GNU_SOURCE -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static void show_stat(struct stat *st) -{ - printf( - "------------------\n" - "st_dev = %li\n" - "st_ino = %li\n" - "st_mode = %li\n" - "st_nlink = %li\n" - "st_uid = %li\n" - "st_gid = %li\n" - "st_rdev = %li\n" - "st_size = %li\n" - "st_blksize = %li\n" - "st_blocks = %li\n" - "st_atime = %li\n" - "st_ansec = %li\n" - "st_mtime = %li\n" - "st_mnsec = %li\n" - "st_ctime = %li\n" - "st_cnsec = %li\n", - (long int)st->st_dev, - (long int)st->st_ino, - (long int)st->st_mode, - (long int)st->st_nlink, - (long int)st->st_uid, - (long int)st->st_gid, - (long int)st->st_rdev, - (long int)st->st_size, - (long int)st->st_blksize, - (long int)st->st_blocks, -#if !defined(__UCLIBC__) || defined(__USE_MISC) - (long int)st->st_atime, - (long int)st->st_atim.tv_nsec, - (long int)st->st_mtime, - (long int)st->st_mtim.tv_nsec, - (long int)st->st_ctime, - (long int)st->st_ctim.tv_nsec -#else - (long int)st->st_atime, - (long int)st->st_atimensec, - (long int)st->st_mtime, - (long int)st->st_mtimensec, - (long int)st->st_ctime, - (long int)st->st_ctimensec -#endif - ); -} - -int main(void) -{ - int ret; - int fd; - struct stat fst, st; - - memset(&fst, 0xAA, sizeof(fst)); - memset(&st, 0x55, sizeof(st)); - - unlink(".testfile"); - fd = open(".testfile", O_WRONLY | O_CREAT | O_EXCL, 0); - if (fd < 0) { - perror("open(.testfile) failed"); - return 1; - } - ret = fstat(fd, &fst); - if (ret != 0) { - perror("fstat(.testfile) failed"); - return 1; - } - close(fd); - - ret = stat(".testfile", &st); - if (ret != 0) { - perror("stat(.testfile) failed"); - return 1; - } - - ret = memcmp(&fst, &st, sizeof(fst)); - if (ret != 0) { - printf("FAILED: memcmp() = %i\n", ret); - show_stat(&fst); - show_stat(&st); - } - - unlink(".testfile"); - - return ret; -} diff --git a/test/stat/stat-loop256.c b/test/stat/stat-loop256.c deleted file mode 100644 index 14284c184..000000000 --- a/test/stat/stat-loop256.c +++ /dev/null @@ -1,32 +0,0 @@ -#include -#include -#include -#include -int main() -{ - struct stat statbuf; - int ret = 0; - char* loop255 = "/dev/loop255"; - char* loop256 = "/dev/loop256"; - mode_t mode = 0660; - mknod(loop255, mode, 0x7ff); - mknod(loop256, mode, 0x100700); - ret = stat(loop255, &statbuf); - if(ret < 0) { - printf("stat: Cant stat %s\n",loop255); - unlink(loop255); - exit(1); - } - ret = stat(loop256, &statbuf); - if(ret < 0) { - printf("stat: Cant stat %s\n",loop256); - unlink(loop255); - unlink(loop256); - exit(1); - } - - unlink(loop255); - unlink(loop256); - exit(0); -} - diff --git a/test/stat/stat.c b/test/stat/stat.c deleted file mode 100644 index 4980cdd78..000000000 --- a/test/stat/stat.c +++ /dev/null @@ -1,71 +0,0 @@ -#include -#include -#include -#include -#include -#include - -static void print_struct_stat(char *msg, struct stat *s) -{ - printf("%s\n", msg); - /* The casts are because glibc thinks it's cool */ - printf("device : 0x%llx\n",(long long)s->st_dev); - printf("inode : %lld\n", (long long)s->st_ino); - printf("mode : 0x%llx\n",(long long)s->st_mode); - printf("nlink : %lld\n", (long long)s->st_nlink); - printf("uid : %lld\n", (long long)s->st_uid); - printf("gid : %lld\n", (long long)s->st_gid); - printf("rdev : 0x%llx\n",(long long)s->st_rdev); - printf("size : %lld\n", (long long)s->st_size); - printf("blksize : %lld\n", (long long)s->st_blksize); - printf("blocks : %lld\n", (long long)s->st_blocks); - printf("atime : %lld\n", (long long)s->st_atime); - printf("mtime : %lld\n", (long long)s->st_mtime); - printf("ctime : %lld\n", (long long)s->st_ctime); -} - -int main(int argc,char **argv) -{ - int fd, ret; - char *file; - struct stat s; - - if (argc < 2) { - fprintf(stderr, "Usage: stat FILE\n"); - exit(1); - } - file = argv[1]; - - memset(&s, 0, sizeof(struct stat)); - ret = stat(file, &s); - if(ret<0){ - perror("stat"); - exit(1); - } - print_struct_stat("\nTesting stat:", &s); - - memset(&s, 0, sizeof(struct stat)); - ret = lstat(file, &s); - if(ret<0){ - perror("lstat"); - exit(1); - } - print_struct_stat("\nTesting lstat:", &s); - - - fd = open(file, O_RDONLY); - if(fd<0){ - perror("open"); - exit(1); - } - memset(&s, 0, sizeof(struct stat)); - ret = fstat(fd,&s); - if(ret<0){ - perror("fstat"); - exit(1); - } - print_struct_stat("\nTesting fstat:", &s); - - exit(0); -} - diff --git a/test/stat/stat64.c b/test/stat/stat64.c deleted file mode 100644 index a07425192..000000000 --- a/test/stat/stat64.c +++ /dev/null @@ -1 +0,0 @@ -#include "stat.c" diff --git a/test/stdio/64bit.c b/test/stdio/64bit.c deleted file mode 100644 index 9b94dd86c..000000000 --- a/test/stdio/64bit.c +++ /dev/null @@ -1,12 +0,0 @@ -#include - -int main(void) -{ - unsigned long long val = -1; - void *ptr = (void *)-1; - printf("%p\n", ptr); - - sscanf("123456789", "%Lx", &val); - printf("val = %Lx\n", val); - return 0; -} diff --git a/test/stdio/Makefile b/test/stdio/Makefile deleted file mode 100644 index 95b930b9d..000000000 --- a/test/stdio/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc stdio tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/stdio/Makefile.in b/test/stdio/Makefile.in deleted file mode 100644 index 14b5f19b9..000000000 --- a/test/stdio/Makefile.in +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc stdio tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -DODIFF_64bit := 1 - -ifeq ($(UCLIBC_HAS_GLIBC_CUSTOM_STREAMS),) -TESTS_DISABLED += tst-fmemopen -endif diff --git a/test/stdio/fclose-loop.c b/test/stdio/fclose-loop.c deleted file mode 100644 index fc0cc424a..000000000 --- a/test/stdio/fclose-loop.c +++ /dev/null @@ -1,21 +0,0 @@ -/* From: Denis Vlasenko - * With certain combination of .config options fclose() does not - * remove FILE* pointer from _stdio_openlist. As a result, subsequent - * fopen() may allocate new FILE structure exactly in place of one - * freed by previous fclose(), which then makes _stdio_openlist - * circularlt looped. The following program will enter infinite loop - * trying to walk _stdio_openlist in exit(): - */ - -#include -#include - -int main(int argc, char *argv[]) -{ - FILE* fp; - fp = fopen("/dev/null", "r"); - fclose(fp); - fp = fopen("/dev/zero", "r"); - fclose(fp); - return 0; -} diff --git a/test/stdio/lseek_no_lfs.c b/test/stdio/lseek_no_lfs.c deleted file mode 100644 index 54daf6b48..000000000 --- a/test/stdio/lseek_no_lfs.c +++ /dev/null @@ -1,22 +0,0 @@ -#include -#include -#include - -int main(int argc, char *argv[]) -{ - FILE * f = fopen(argv[0], "rb"); - if (!f) - { - printf("Error: Can't open %s, reason: %s\n", argv[0], strerror(errno)); - return 1; - } - - if (fseek(f, (unsigned)4096, (int)SEEK_SET) == -1) - { - printf("Test failed, fseek return fail code. errno=%u (%s)\n", errno, strerror(errno)); - return 1; - } - - fclose(f); - return 0; -} diff --git a/test/stdio/scanf_m.c b/test/stdio/scanf_m.c deleted file mode 100644 index e1dde270d..000000000 --- a/test/stdio/scanf_m.c +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include -#include - -int main(void) -{ - const char *buf = "hello world"; - char *ps = NULL, *pc = NULL, *ps2 = NULL; - char s[6], c, s2[5]; - - /* Check that %[...]/%c/%s work. */ - sscanf(buf, "%[a-z] %c %s", s, &c, s2); - /* Check that %m[...]/%mc/%ms work. */ - sscanf(buf, "%m[a-z] %mc %ms", &ps, &pc, &ps2); - - if (strcmp(ps, "hello") != 0 || *pc != 'w' || - strcmp(ps2, "orld") != 0 || - strcmp(s, "hello") != 0 || c != 'w' || - strcmp(s2, "orld") != 0) - return 1; - - free(ps); - free(pc); - free(ps2); - - return 0; -} diff --git a/test/stdio/tst-fmemopen.c b/test/stdio/tst-fmemopen.c deleted file mode 100644 index 384faa1c9..000000000 --- a/test/stdio/tst-fmemopen.c +++ /dev/null @@ -1,53 +0,0 @@ -#include -#include -#include - -static char *text_input = "1 23 43"; - -static const char *good_answer = "1 529 1849 "; - - -static int -do_test (void) -{ - FILE *out, *in; - int v, s; - size_t size; - char *ptr; - - in = fmemopen(text_input, strlen(text_input), "r"); - if (in == NULL) { - perror("fmemopen"); - return 1; - } - - out = open_memstream(&ptr, &size); - if (out == NULL) { - perror("open_memstream"); - return 1; - } - - for (;;) { - s = fscanf(in, "%d", &v); - if (s <= 0) - break; - - s = fprintf(out, "%d ", v * v); - if (s == -1) { - puts("fprintf failed"); - exit(1); - } - } - fclose(in); - fclose(out); - - if (size != strlen(good_answer) || strcmp(good_answer, ptr) != 0) { - printf("failed: size=%zu; ptr=%s\n", size, ptr); - exit(1); - } - free(ptr); - exit(0); -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/stdlib/Makefile b/test/stdlib/Makefile deleted file mode 100644 index 567e0e37a..000000000 --- a/test/stdlib/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc stdlib tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/stdlib/Makefile.in b/test/stdlib/Makefile.in deleted file mode 100644 index f39941dc2..000000000 --- a/test/stdlib/Makefile.in +++ /dev/null @@ -1,15 +0,0 @@ -# uClibc stdlib tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -DODIFF_qsort := 1 -DODIFF_testatexit := 1 -DODIFF_teston_exit := 1 -DODIFF_teststrtol := 1 - -TESTS_DISABLED := -ifeq ($(UCLIBC_HAS_PTY),) -TESTS_DISABLED += ptytest -endif -ifeq ($(UCLIBC_HAS_ARC4RANDOM),) -TESTS_DISABLED += testarc4random -endif diff --git a/test/stdlib/ptytest.c b/test/stdlib/ptytest.c deleted file mode 100644 index a79563880..000000000 --- a/test/stdlib/ptytest.c +++ /dev/null @@ -1,20 +0,0 @@ -#define _XOPEN_SOURCE -#include -#include -#include -#include -#include - -int main(int argc, char **argv) -{ - int fd; - char *cp; - - fd=open("/dev/ptmx",O_NOCTTY|O_RDWR); - cp=ptsname(fd); - if (cp==NULL) - return EXIT_FAILURE; - printf("ptsname %s\n",cp); - return EXIT_SUCCESS; -} - diff --git a/test/stdlib/qsort.c b/test/stdlib/qsort.c deleted file mode 100644 index 74f93315f..000000000 --- a/test/stdlib/qsort.c +++ /dev/null @@ -1,53 +0,0 @@ -#include -#include -#include -#include - -static int select_files(const struct dirent *dirbuf) -{ - if (dirbuf->d_name[0] == '.') - return 0; - else - return 1; -} - -int main(void) -{ - struct dirent **array; - struct dirent *dirbuf; - - int i, numdir; - - chdir("/"); - numdir = scandir(".", &array, select_files, NULL); - printf("\nGot %d entries from scandir().\n", numdir); - for (i = 0; i < numdir; ++i) { - dirbuf = array[i]; - printf("[%d] %s\n", i, dirbuf->d_name); - free(array[i]); - } - free(array); - numdir = scandir(".", &array, select_files, alphasort); - printf("\nGot %d entries from scandir() using alphasort().\n", numdir); - for (i = 0; i < numdir; ++i) { - dirbuf = array[i]; - printf("[%d] %s\n", i, dirbuf->d_name); - } - printf("\nCalling qsort()\n"); - /* Even though some manpages say that alphasort should be - * int alphasort(const void *a, const void *b), - * in reality glibc and uclibc have const struct dirent** - * instead of const void*. - * Therefore we get a warning here unless we use a cast, - * which makes people think that alphasort prototype - * needs to be fixed in uclibc headers. - */ - qsort(array, numdir, sizeof(struct dirent *), (void*) alphasort); - for (i = 0; i < numdir; ++i) { - dirbuf = array[i]; - printf("[%d] %s\n", i, dirbuf->d_name); - free(array[i]); - } - free(array); - return (0); -} diff --git a/test/stdlib/test-canon.c b/test/stdlib/test-canon.c deleted file mode 100644 index 1b43dedfb..000000000 --- a/test/stdlib/test-canon.c +++ /dev/null @@ -1,251 +0,0 @@ -/* Test program for returning the canonical absolute name of a given file. - Copyright (C) 1996,1997,2000,2002,2004,2005,2006 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by David Mosberger . - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -/* This file must be run from within a directory called "stdlib". */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/* Prototype for our test function. */ -extern int do_test (int argc, char *argv[]); -#include "../test-skeleton.c" - -#ifndef PATH_MAX -# define PATH_MAX 4096 -#endif -static char cwd[PATH_MAX]; -static size_t cwd_len; - -struct { - const char * name; - const char * value; -} symlinks[] = { - {"SYMLINK_LOOP", "SYMLINK_LOOP"}, - {"SYMLINK_1", "."}, - {"SYMLINK_2", "//////./../../etc"}, - {"SYMLINK_3", "SYMLINK_1"}, - {"SYMLINK_4", "SYMLINK_2"}, - {"SYMLINK_5", "doesNotExist"}, -}; - -struct { - const char * in; - const char * retval; /* what realpath should return */ - const char * retbuf; /* what realpath should store in buf */ - /* if both of the above are NULL, we won't check for result, - * it's undefined */ - int error; /* expected errno value */ -} tests[] = { - /* 0 */ - {"/", "/"}, - {"/////////////////////////////////", "/"}, - {"/.././.././.././..///", "/"}, - {"/etc", "/etc"}, - {"/etc/../etc", "/etc"}, - /* 5 */ - {"/doesNotExist/../etc", 0, "/doesNotExist", ENOENT}, - {"./././././././././.", "."}, - {"/etc/.//doesNotExist", 0, "/etc/doesNotExist", ENOENT}, - {"./doesExist", "./doesExist"}, - {"./doesExist/", "./doesExist"}, - /* 10 */ - {"./doesExist/../doesExist", "./doesExist"}, - {"foobar", 0, "./foobar", ENOENT}, - {".", "."}, - {"./foobar", 0, "./foobar", ENOENT}, - {"SYMLINK_LOOP", 0, 0, ELOOP}, - /* 15 */ - {"./SYMLINK_LOOP", 0, 0, ELOOP}, - {"SYMLINK_1", "."}, - {"SYMLINK_1/foobar", 0, "./foobar", ENOENT}, - {"SYMLINK_2", "/etc"}, - {"SYMLINK_3", "."}, - /* 20 */ - {"SYMLINK_4", "/etc"}, - {"../stdlib/SYMLINK_1", "."}, - {"../stdlib/SYMLINK_2", "/etc"}, - {"../stdlib/SYMLINK_3", "."}, - {"../stdlib/SYMLINK_4", "/etc"}, - /* 25 */ - {"./SYMLINK_5", 0, "./doesNotExist", ENOENT}, - {"SYMLINK_5", 0, "./doesNotExist", ENOENT}, - {"SYMLINK_5/foobar", 0, "./doesNotExist", ENOENT}, - {"doesExist/../../stdlib/doesExist", "./doesExist"}, - {"doesExist/.././../stdlib/.", "."}, -#ifndef __UCLIBC__ - /* we dont check for ENOTDIR in readlink() which causes failures to - * propogate up to realpath() ... so disable for now ... */ - /* 30 */ - {"./doesExist/someFile/", 0, "./doesExist/someFile", ENOTDIR}, - {"./doesExist/someFile/..", 0, "./doesExist/someFile", ENOTDIR}, -#endif -}; - - -static int -check_path (const char * result, const char * expected) -{ - int good; - - if (!result) - return (expected == NULL); - - if (!expected) - return 0; - - if (expected[0] == '.' && (expected[1] == '/' || expected[1] == '\0')) - good = (strncmp (result, cwd, cwd_len) == 0 - && strcmp (result + cwd_len, expected + 1) == 0); - else - good = (strcmp (expected, result) == 0); - - return good; -} - - -int -do_test (int argc, char ** argv) -{ - char * result; - int i, errors = 0; - char buf[PATH_MAX]; - - getcwd (cwd, sizeof(buf)); - cwd_len = strlen (cwd); - -#ifndef __UCLIBC__ - /* we choose to crash in uClibc when given a NULL */ - errno = 0; - if (realpath (NULL, buf) != NULL || errno != EINVAL) - { - printf ("%s: expected return value NULL and errno set to EINVAL" - " for realpath(NULL,...)\n", argv[0]); - ++errors; - } -#endif - -#if 0 - /* This is now allowed. The test is invalid. */ - errno = 0; - if (realpath ("/", NULL) != NULL || errno != EINVAL) - { - printf ("%s: expected return value NULL and errno set to EINVAL" - " for realpath(...,NULL)\n", argv[0]); - ++errors; - } -#endif - - errno = 0; - if (realpath ("", buf) != NULL || errno != ENOENT) - { - printf ("%s: expected return value NULL and set errno to ENOENT" - " for realpath(\"\",...)\n", argv[0]); - ++errors; - } - - for (i = 0; i < (int) (sizeof (symlinks) / sizeof (symlinks[0])); ++i) - symlink (symlinks[i].value, symlinks[i].name); - - int has_dir = mkdir ("doesExist", 0777) == 0; - - int fd = has_dir ? creat ("doesExist/someFile", 0777) : -1; - - for (i = 0; i < (int) (sizeof (tests) / sizeof (tests[0])); ++i) - { - buf[0] = '\0'; - errno = 0; - result = realpath (tests[i].in, buf); - - if (!check_path (result, tests[i].retval)) - { - printf ("%s: flunked test %d (expected `%s', got `%s')\n", - argv[0], i, tests[i].retval ? tests[i].retval : "NULL", - result ? result : "NULL"); - ++errors; - continue; - } - - if (result && !check_path (buf, tests[i].retval ? tests[i].retval : tests[i].retbuf)) - { - printf ("%s: flunked test %d (expected resolved `%s', got `%s')\n", - argv[0], i, tests[i].retval ? tests[i].retval : tests[i].retbuf, - buf); - ++errors; - continue; - } - - if (errno != tests[i].error) - { - printf ("%s: flunked test %d (expected errno %d, got %d)\n", - argv[0], i, tests[i].error, errno); - ++errors; - continue; - } - -#ifndef __UCLIBC__ - /* we choose to crash in uClibc when given a NULL */ - char *result2 = realpath (tests[i].in, NULL); - if ((result2 == NULL && result != NULL) - || (result2 != NULL && strcmp (result, result2) != 0)) - { - printf ("\ -%s: realpath(..., NULL) produced different result than realpath(..., buf): '%s' vs '%s'\n", - argv[0], result2, result); - ++errors; - } - free (result2); -#endif - } - - getcwd (buf, sizeof(buf)); - if (strcmp (buf, cwd)) - { - printf ("%s: current working directory changed from %s to %s\n", - argv[0], cwd, buf); - ++errors; - } - - if (fd >= 0) - { - close (fd); - unlink ("doesExist/someFile"); - } - - if (has_dir) - rmdir ("doesExist"); - - for (i = 0; i < (int) (sizeof (symlinks) / sizeof (symlinks[0])); ++i) - unlink (symlinks[i].name); - - if (errors != 0) - { - printf ("%d errors.\n", errors); - return EXIT_FAILURE; - } - - puts ("No errors."); - return EXIT_SUCCESS; -} diff --git a/test/stdlib/test-canon2.c b/test/stdlib/test-canon2.c deleted file mode 100644 index 4a03b2d48..000000000 --- a/test/stdlib/test-canon2.c +++ /dev/null @@ -1,86 +0,0 @@ -/* Test for realpath/canonicalize function. - Copyright (C) 1998 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1998. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - - -/* Prototype for our test function. */ -extern void do_prepare (int argc, char *argv[]); -extern int do_test (int argc, char *argv[]); - -/* We have a preparation function. */ -#define PREPARE do_prepare - -#include - -/* Name of the temporary files we create. */ -char *name1; -char *name2; - -/* Preparation. */ -void -do_prepare (int argc, char *argv[]) -{ - size_t test_dir_len; - int tfd; - - test_dir_len = strlen (test_dir); - - /* Generate the circular symlinks. */ - name1 = malloc (test_dir_len + sizeof ("/canonXXXXXX")); - mempcpy (mempcpy (name1, test_dir, test_dir_len), - "/canonXXXXXX", sizeof ("/canonXXXXXX")); - name2 = strdup (name1); - tfd = mkstemp(name1); - if (tfd < 0) { - printf("%s: cannot generate temp file name\n", __FUNCTION__); - exit(1); - } - close(tfd); - add_temp_file (name1); - tfd = mkstemp(name2); - if (tfd < 0) { - printf("%s: cannot generate temp file name\n", __FUNCTION__); - exit(1); - } - close(tfd); - add_temp_file (name2); -} - - -/* Run the test. */ -int -do_test (int argc, char *argv[]) -{ - char *canon; - - printf ("create symlinks from %s to %s and vice versa\n", name1, name2); - if (symlink (name1, name2) == -1 - || symlink (name2, name1) == -1) - /* We cannot test this. */ - return 0; - - /* Call the function. This is equivalent the using `realpath' but the - function allocates the room for the result. */ - errno = 0; - canon = canonicalize_file_name (name1); - - return canon != NULL || errno != ELOOP; -} diff --git a/test/stdlib/test-mkostemp-O_CLOEXEC.c b/test/stdlib/test-mkostemp-O_CLOEXEC.c deleted file mode 100644 index 9ff229af1..000000000 --- a/test/stdlib/test-mkostemp-O_CLOEXEC.c +++ /dev/null @@ -1,45 +0,0 @@ -#define _XOPEN_SOURCE_EXTENDED -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if !defined __ARCH_USE_MMU__ -# define fork vfork -#endif - -int main(int argc, char *argv[]) { - int fd, status; - char buff[5]; - char template[] = "/tmp/test-mkostemp.XXXXXX"; - - fd = mkostemp(template, O_CLOEXEC); - unlink(template); - - snprintf(buff, 5, "%d", fd); - - if(!fork()) - if(execl("./test-mkostemp-child", "test-mkostemp-child", buff, NULL) == -1) - exit(EXIT_FAILURE); - - wait(&status); - - memset(buff, 0, 5); - lseek(fd, 0, SEEK_SET); - errno = 0; - if(read(fd, buff, 5) == -1) - exit(EXIT_FAILURE); - - if(!strncmp(buff, "test", 5)) - exit(EXIT_FAILURE); - else - exit(EXIT_SUCCESS); - - close(fd); - exit(EXIT_SUCCESS); -} diff --git a/test/stdlib/test-mkostemp-child.c b/test/stdlib/test-mkostemp-child.c deleted file mode 100644 index 708bd80a1..000000000 --- a/test/stdlib/test-mkostemp-child.c +++ /dev/null @@ -1,22 +0,0 @@ -#include -#include -#include - -int main(int argc, char *argv[]) { - int fd; - - /* This file gets built and run as a test, but its - * really just a helper for test-mkostemp-O_CLOEXEC.c. - * So, we'll always return succcess. - */ - if(argc != 2) - exit(EXIT_SUCCESS); - - sscanf(argv[1], "%d", &fd); - - if(write(fd, "test\0", 5) == -1) - ; /* Don't Panic! Failure is okay here. */ - - close(fd); - exit(EXIT_SUCCESS); -} diff --git a/test/stdlib/testarc4random.c b/test/stdlib/testarc4random.c deleted file mode 100644 index 14ff1cc36..000000000 --- a/test/stdlib/testarc4random.c +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include - -int main(void) -{ - int random_number; - random_number = arc4random() % 65536; - printf("%d\n", random_number); - return 0; -} diff --git a/test/stdlib/testatexit.c b/test/stdlib/testatexit.c deleted file mode 100644 index 01874fdde..000000000 --- a/test/stdlib/testatexit.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * This test program will register the maximum number of exit functions - * with atexit(). When this program exits, each exit function should get - * called in the reverse order in which it was registered. (If the system - * supports more than 25 exit functions, the function names will loop, but - * the effect will be the same. Feel free to add more functions if desired) - */ -#include -#include - -typedef void (*vfuncp) (void); - -/* All functions call exit(), in order to test that exit functions can call - * exit() without screwing everything up. :) - */ -#define make_exitfunc(num) \ -__attribute__ ((__noreturn__)) static \ -void exitfunc##num(void) \ -{ \ - printf("Executing exitfunc"#num".\n"); \ - exit(0); \ -} -make_exitfunc(0) -make_exitfunc(1) -make_exitfunc(2) -make_exitfunc(3) -make_exitfunc(4) -make_exitfunc(5) -make_exitfunc(6) -make_exitfunc(7) -make_exitfunc(8) -make_exitfunc(9) -make_exitfunc(10) -make_exitfunc(11) -make_exitfunc(12) -make_exitfunc(13) -make_exitfunc(14) -make_exitfunc(15) -make_exitfunc(16) -make_exitfunc(17) -make_exitfunc(18) -make_exitfunc(19) -make_exitfunc(20) -make_exitfunc(21) -make_exitfunc(22) -make_exitfunc(23) -make_exitfunc(24) - -static vfuncp func_table[] = - { - exitfunc0, exitfunc1, exitfunc2, exitfunc3, exitfunc4, - exitfunc5, exitfunc6, exitfunc7, exitfunc8, exitfunc9, - exitfunc10, exitfunc11, exitfunc12, exitfunc13, exitfunc14, - exitfunc15, exitfunc16, exitfunc17, exitfunc18, exitfunc19, - exitfunc20, exitfunc21, exitfunc22, exitfunc23, exitfunc24 - }; - -/* glibc dynamically adds exit functions, so it will keep adding until - * it runs out of memory! So this will limit the number of exit functions - * we add in the loop below. uClibc has a set limit (currently 20), so the - * loop will go until it can't add any more (so it should not hit this limit). - */ -#define ATEXIT_LIMIT 20 - -int -main ( void ) -{ - int i = 0; - int count = 0; - int numfuncs = sizeof(func_table)/sizeof(vfuncp); - - /* loop until no more can be added */ - while(count < ATEXIT_LIMIT && atexit(func_table[i]) >= 0) { - printf("Registered exitfunc%d with atexit()\n", i); - count++; - i = (i+1) % numfuncs; - } - printf("%d functions registered with atexit.\n", count); - - return 0; -} diff --git a/test/stdlib/teston_exit.c b/test/stdlib/teston_exit.c deleted file mode 100644 index f7e8fd004..000000000 --- a/test/stdlib/teston_exit.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * This test program will register the maximum number of exit functions - * with on_exit(). When this program exits, each exit function should get - * called in the reverse order in which it was registered. (If the system - * supports more than 25 exit functions, the function names will loop, but - * the effect will be the same. Feel free to add more functions if desired) - */ -#include -#include - -typedef void (*efuncp) (int, void *); - -/* All functions call exit(), in order to test that exit functions can call - * exit() without screwing everything up. The value passed in through arg gets - * used as the next exit status. - */ -#define make_exitfunc(num) \ -__attribute__ ((__noreturn__)) static \ -void exitfunc##num(int status, void *arg) \ -{ \ - printf("Executing exitfunc"#num" (status=%d, arg=%lu)\n", status, (unsigned long)arg); \ - exit((unsigned long)arg); \ -} -make_exitfunc(0) -make_exitfunc(1) -make_exitfunc(2) -make_exitfunc(3) -make_exitfunc(4) -make_exitfunc(5) -make_exitfunc(6) -make_exitfunc(7) -make_exitfunc(8) -make_exitfunc(9) -make_exitfunc(10) -make_exitfunc(11) -make_exitfunc(12) -make_exitfunc(13) -make_exitfunc(14) -make_exitfunc(15) -make_exitfunc(16) -make_exitfunc(17) -make_exitfunc(18) -make_exitfunc(19) -make_exitfunc(20) -make_exitfunc(21) -make_exitfunc(22) -make_exitfunc(23) -make_exitfunc(24) - -static efuncp func_table[] = - { - exitfunc0, exitfunc1, exitfunc2, exitfunc3, exitfunc4, - exitfunc5, exitfunc6, exitfunc7, exitfunc8, exitfunc9, - exitfunc10, exitfunc11, exitfunc12, exitfunc13, exitfunc14, - exitfunc15, exitfunc16, exitfunc17, exitfunc18, exitfunc19, - exitfunc20, exitfunc21, exitfunc22, exitfunc23, exitfunc24 - }; - -/* glibc dynamically adds exit functions, so it will keep adding until - * it runs out of memory! So this will limit the number of exit functions - * we add in the loop below. uClibc has a set limit (currently 20), so the - * loop will go until it can't add any more (so it should not hit this limit). - */ -#define ON_EXIT_LIMIT 20 - -int -main ( void ) -{ - int i = 0; - unsigned long count = 0; - int numfuncs = sizeof(func_table)/sizeof(efuncp); - - /* loop until no more can be added */ - while(count < ON_EXIT_LIMIT && on_exit(func_table[i], (void *)count) >= 0) { - count++; - printf("Registered exitfunc%d with on_exit()\n", i); - i = (i+1) % numfuncs; - } - printf("%lu functions registered with on_exit.\n", count); - exit(count); -} - diff --git a/test/stdlib/teststrtol.c b/test/stdlib/teststrtol.c deleted file mode 100644 index 5b43a9b0c..000000000 --- a/test/stdlib/teststrtol.c +++ /dev/null @@ -1,109 +0,0 @@ - -#include -#include - - -const char *strings[]={ - /* some simple stuff */ - "0", "1", "10", - "100", "1000", "10000", "100000", "1000000", - "10000000", "100000000", "1000000000", - - /* negative */ - "-0", "-1", "-10", - "-100", "-1000", "-10000", "-100000", "-1000000", - "-10000000", "-100000000", "-1000000000", - - /* test base>10 */ - "a", "b", "f", "g", "z", - - /* test hex */ - "0x0", "0x1", "0xa", "0xf", "0x10", - - /* test octal */ - "00", "01", "07", "08", "0a", "010", - - /* other */ - "0x8000000", - - /* check overflow cases: (for 32 bit) */ - "2147483645", - "2147483646", - "2147483647", - "2147483648", - "2147483649", - "-2147483645", - "-2147483646", - "-2147483647", - "-2147483648", - "-2147483649", - "4294967293", - "4294967294", - "4294967295", - "4294967296", - "4294967297", - "-4294967293", - "-4294967294", - "-4294967295", - "-4294967296", - "-4294967297", - - /* bad input tests */ - "", - "00", - "0x", - "0x0", - "-", - "+", - " ", - " -", - " - 0", -}; -int n_tests=sizeof(strings)/sizeof(strings[0]); - -void do_test(int base); -void do_utest(int base); - -int main(int argc,char *argv[]) -{ - do_test(0); - do_test(8); - do_test(10); - do_test(16); - do_test(36); - - do_utest(0); - do_utest(8); - do_utest(10); - do_utest(16); - do_utest(36); - - return 0; -} - -void do_test(int base) -{ - int i; - long n; - char *endptr; - - for(i=0;i -#include - - -const char *strings[]={ - /* some simple stuff */ - "0", "1", "10", - "100", "1000", "10000", "100000", "1000000", - "10000000", "100000000", "1000000000", - - /* negative */ - "-0", "-1", "-10", - "-100", "-1000", "-10000", "-100000", "-1000000", - "-10000000", "-100000000", "-1000000000", - - /* test base>10 */ - "a", "b", "f", "g", "z", - - /* test hex */ - "0x0", "0x1", "0xa", "0xf", "0x10", - - /* test octal */ - "00", "01", "07", "08", "0a", "010", - - /* other */ - "0x8000000", - - /* check overflow cases: (for 32 bit) */ - "2147483645", - "2147483646", - "2147483647", - "2147483648", - "2147483649", - "-2147483645", - "-2147483646", - "-2147483647", - "-2147483648", - "-2147483649", - "4294967293", - "4294967294", - "4294967295", - "4294967296", - "4294967297", - "-4294967293", - "-4294967294", - "-4294967295", - "-4294967296", - "-4294967297", - - /* bad input tests */ - "", - "00", - "0x", - "0x0", - "-", - "+", - " ", - " -", - " - 0", -}; -int n_tests=sizeof(strings)/sizeof(strings[0]); - - - -void do_test(int base); -void do_test(int base) -{ - int i; - quad_t n; - char *endptr; - - for(i=0;i -#include -#include - -int -main (void) -{ - const char t1[] = "0-0-0-0-0-0-0-0-0-0.COM"; - const char t2[] = "00000-00000.COM"; - int res1; - int res2; - - setlocale (LC_ALL, "en_US.ISO-8859-1"); - - res1 = strcoll (t1, t2); - printf ("strcoll (\"%s\", \"%s\") = %d\n", t1, t2, res1); - res2 = strcoll (t2, t1); - printf ("strcoll (\"%s\", \"%s\") = %d\n", t2, t1, res2); - - return ((res1 == 0 && res2 != 0) - || (res1 != 0 && res2 == 0) - || (res1 < 0 && res2 < 0) - || (res1 > 0 && res2 > 0)); -} diff --git a/test/string/bug-strncat1.c b/test/string/bug-strncat1.c deleted file mode 100644 index f1b5c37c5..000000000 --- a/test/string/bug-strncat1.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Test case by Joseph S. Myers . */ -#undef __USE_STRING_INLINES -#define __USE_STRING_INLINES -#include -#include -#include - -char d[3] = "\0\1\2"; - -int -main (void) -{ - strncat (d, "\5\6", 1); - if (d[0] != '\5') - { - puts ("d[0] != '\\5'"); - exit (1); - } - if (d[1] != '\0') - { - puts ("d[1] != '\\0'"); - exit (1); - } - if (d[2] != '\2') - { - puts ("d[2] != '\\2'"); - exit (1); - } - - return 0; -} diff --git a/test/string/bug-strpbrk1.c b/test/string/bug-strpbrk1.c deleted file mode 100644 index 28238b0f5..000000000 --- a/test/string/bug-strpbrk1.c +++ /dev/null @@ -1,19 +0,0 @@ -/* Test case by Joseph S. Myers . */ -#undef __USE_STRING_INLINES -#define __USE_STRING_INLINES -#include -#include -#include - -int -main (void) -{ - const char *a = "abc"; - const char *b = a; - - strpbrk (b++, ""); - if (b != a + 1) - return 1; - - return 0; -} diff --git a/test/string/bug-strspn1.c b/test/string/bug-strspn1.c deleted file mode 100644 index a657bafc4..000000000 --- a/test/string/bug-strspn1.c +++ /dev/null @@ -1,19 +0,0 @@ -/* Test case by Joseph S. Myers . */ -#undef __USE_STRING_INLINES -#define __USE_STRING_INLINES -#include -#include -#include - -int -main (void) -{ - const char *a = "abc"; - const char *b = a; - - strspn (b++, ""); - if (b != a + 1) - return 1; - - return 0; -} diff --git a/test/string/stratcliff.c b/test/string/stratcliff.c deleted file mode 100644 index b45be4bde..000000000 --- a/test/string/stratcliff.c +++ /dev/null @@ -1,348 +0,0 @@ -/* Test for string function add boundaries of usable memory. - Copyright (C) 1996,1997,1999-2002,2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1996. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#define _GNU_SOURCE 1 - -/* Make sure we don't test the optimized inline functions if we want to - test the real implementation. */ -#undef __USE_STRING_INLINES - -#include -#include -#include -#include -#include -#include - -#ifndef MAX -#define MAX(a, b) ((a) > (b) ? (a) : (b)) -#endif - -int -main (int argc, char *argv[]) -{ - int size = sysconf (_SC_PAGESIZE); - char *adr, *dest; - int result = 0; - - adr = (char *) mmap (NULL, 3 * size, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANON, -1, 0); - dest = (char *) mmap (NULL, 3 * size, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANON, -1, 0); - if (adr == MAP_FAILED || dest == MAP_FAILED) - { - if (errno == ENOSYS) - puts ("No test, mmap not available."); - else - { - printf ("mmap failed: %s", strerror(errno)); - result = 1; - } - } - else - { - int inner, middle, outer; - - mprotect(adr, size, PROT_NONE); - mprotect(adr + 2 * size, size, PROT_NONE); - adr += size; - - mprotect(dest, size, PROT_NONE); - mprotect(dest + 2 * size, size, PROT_NONE); - dest += size; - - memset (adr, 'T', size); - - /* strlen test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - for (inner = MAX (outer, size - 64); inner < size; ++inner) - { - adr[inner] = '\0'; - - if (strlen (&adr[outer]) != (size_t) (inner - outer)) - { - printf ("strlen flunked for outer = %d, inner = %d\n", - outer, inner); - result = 1; - } - - adr[inner] = 'T'; - } - } - - /* strchr test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - for (middle = MAX (outer, size - 64); middle < size; ++middle) - { - for (inner = middle; inner < size; ++inner) - { - char *cp; - adr[middle] = 'V'; - adr[inner] = '\0'; - - cp = strchr (&adr[outer], 'V'); - - if ((inner == middle && cp != NULL) - || (inner != middle - && (cp - &adr[outer]) != middle - outer)) - { - printf ("strchr flunked for outer = %d, middle = %d, " - "inner = %d\n", outer, middle, inner); - result = 1; - } - - adr[inner] = 'T'; - adr[middle] = 'T'; - } - } - } - - /* Special test. */ - adr[size - 1] = '\0'; - if (strchr (&adr[size - 1], '\n') != NULL) - { - puts ("strchr flunked for test of empty string at end of page"); - result = 1; - } - - /* strrchr test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - for (middle = MAX (outer, size - 64); middle < size; ++middle) - { - for (inner = middle; inner < size; ++inner) - { - char *cp; - adr[middle] = 'V'; - adr[inner] = '\0'; - - cp = strrchr (&adr[outer], 'V'); - - if ((inner == middle && cp != NULL) - || (inner != middle - && (cp - &adr[outer]) != middle - outer)) - { - printf ("strrchr flunked for outer = %d, middle = %d, " - "inner = %d\n", outer, middle, inner); - result = 1; - } - - adr[inner] = 'T'; - adr[middle] = 'T'; - } - } - } - - /* rawmemchr test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - for (middle = MAX (outer, size - 64); middle < size; ++middle) - { - char *cp; - adr[middle] = 'V'; - - cp = rawmemchr (&adr[outer], 'V'); - - if (cp - &adr[outer] != middle - outer) - { - printf ("rawmemchr flunked for outer = %d, middle = %d\n", - outer, middle); - result = 1; - } - - adr[middle] = 'T'; - } - } - - /* strcpy test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - for (inner = MAX (outer, size - 64); inner < size; ++inner) - { - adr[inner] = '\0'; - - if (strcpy (dest, &adr[outer]) != dest - || strlen (dest) != (size_t) (inner - outer)) - { - printf ("strcpy flunked for outer = %d, inner = %d\n", - outer, inner); - result = 1; - } - - adr[inner] = 'T'; - } - } - - /* strncpy tests */ - adr[size-1] = 'T'; - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - size_t len; - - for (len = 0; len < size - outer; ++len) - { - if (strncpy (dest, &adr[outer], len) != dest - || memcmp (dest, &adr[outer], len) != 0) - { - printf ("outer strncpy flunked for outer = %d, len = %Zd\n", - outer, len); - result = 1; - } - } - } - adr[size-1] = '\0'; - - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - for (inner = MAX (outer, size - 64); inner < size; ++inner) - { - size_t len; - - adr[inner] = '\0'; - - for (len = 0; len < size - outer + 64; ++len) - { - if (strncpy (dest, &adr[outer], len) != dest - || memcmp (dest, &adr[outer], - MIN (inner - outer, len)) != 0 - || (inner - outer < len - && strlen (dest) != (inner - outer))) - { - printf ("strncpy flunked for outer = %d, inner = %d, len = %Zd\n", - outer, inner, len); - result = 1; - } - if (strncpy (dest + 1, &adr[outer], len) != dest + 1 - || memcmp (dest + 1, &adr[outer], - MIN (inner - outer, len)) != 0 - || (inner - outer < len - && strlen (dest + 1) != (inner - outer))) - { - printf ("strncpy+1 flunked for outer = %d, inner = %d, len = %Zd\n", - outer, inner, len); - result = 1; - } - } - - adr[inner] = 'T'; - } - } - - /* stpcpy test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - for (inner = MAX (outer, size - 64); inner < size; ++inner) - { - adr[inner] = '\0'; - - if ((stpcpy (dest, &adr[outer]) - dest) != inner - outer) - { - printf ("stpcpy flunked for outer = %d, inner = %d\n", - outer, inner); - result = 1; - } - - adr[inner] = 'T'; - } - } - - /* stpncpy test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - for (middle = MAX (outer, size - 64); middle < size; ++middle) - { - adr[middle] = '\0'; - - for (inner = 0; inner < size - outer; ++ inner) - { - if ((stpncpy (dest, &adr[outer], inner) - dest) - != MIN (inner, middle - outer)) - { - printf ("stpncpy flunked for outer = %d, middle = %d, " - "inner = %d\n", outer, middle, inner); - result = 1; - } - } - - adr[middle] = 'T'; - } - } - - /* memcpy test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - for (inner = 0; inner < size - outer; ++inner) - if (memcpy (dest, &adr[outer], inner) != dest) - { - printf ("memcpy flunked for outer = %d, inner = %d\n", - outer, inner); - result = 1; - } - - /* mempcpy test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - for (inner = 0; inner < size - outer; ++inner) - if (mempcpy (dest, &adr[outer], inner) != dest + inner) - { - printf ("mempcpy flunked for outer = %d, inner = %d\n", - outer, inner); - result = 1; - } - - /* memccpy test */ - memset (adr, '\0', size); - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - for (inner = 0; inner < size - outer; ++inner) - if (memccpy (dest, &adr[outer], '\1', inner) != NULL) - { - printf ("memccpy flunked full copy for outer = %d, inner = %d\n", - outer, inner); - result = 1; - } - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - for (middle = 0; middle < size - outer; ++middle) - { - memset (dest, '\2', middle + 1); - for (inner = 0; inner < middle; ++inner) - { - adr[outer + inner] = '\1'; - - if (memccpy (dest, &adr[outer], '\1', middle + 128) - != dest + inner + 1) - { - printf ("\ -memccpy flunked partial copy for outer = %d, middle = %d, inner = %d\n", - outer, middle, inner); - result = 1; - } - else if (dest[inner + 1] != '\2') - { - printf ("\ -memccpy copied too much for outer = %d, middle = %d, inner = %d\n", - outer, middle, inner); - result = 1; - } - adr[outer + inner] = '\0'; - } - } - } - - return result; -} diff --git a/test/string/test-ffs.c b/test/string/test-ffs.c deleted file mode 100644 index e43f12360..000000000 --- a/test/string/test-ffs.c +++ /dev/null @@ -1,65 +0,0 @@ -/* Copyright (C) 1994, 1997, 2000, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Joel Sherrill (jsherril@redstone-emh2.army.mil), - On-Line Applications Research Corporation. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - -int -main (void) -{ - int failures = 0; - int i; - - auto void try (const char *name, long long int param, int value, - int expected); - - void try (const char *name, long long int param, int value, int expected) - { - if (value != expected) - { - printf ("%s(%#llx) expected %d got %d\n", - name, param, expected, value); - ++failures; - } - else - printf ("%s(%#llx) as expected %d\n", name, param, value); - } - -#define TEST(fct, type) \ - try (#fct, 0, fct ((type) 0), 0); \ - for (i=0 ; i < 8 * sizeof (type); i++) \ - try (#fct, 1ll << i, fct (((type) 1) << i), i + 1); \ - for (i=0 ; i < 8 * sizeof (type) ; i++) \ - try (#fct, (~((type) 0) >> i) << i, fct ((~((type) 0) >> i) << i), i + 1);\ - try (#fct, 0x80008000, fct ((type) 0x80008000), 16) - - TEST (ffs, int); -/* Not implemented in uClibc (yet?) - TEST (ffsl, long int); - TEST (ffsll, long long int); -*/ - - if (failures) - printf ("Test FAILED! %d failure%s.\n", failures, &"s"[failures == 1]); - else - puts ("Test succeeded."); - - return failures; -} diff --git a/test/string/testcopy.c b/test/string/testcopy.c deleted file mode 100644 index 51c47a174..000000000 --- a/test/string/testcopy.c +++ /dev/null @@ -1,107 +0,0 @@ -/* Copyright (C) 1990, 1991, 1992, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Torbjorn Granlund (tege@sics.se). - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - -int -main (void) -{ - char *mem, *memp; - char *rand_mem; - char *lo_around, *hi_around; - int size, max_size; - int src_off, dst_off; - int i; - int space_around = 10; - - max_size = 256; - - mem = malloc (max_size + 2 * max_size + 2 * space_around); - rand_mem = malloc (max_size); - lo_around = malloc (space_around); - hi_around = malloc (space_around); - memp = mem + space_around; - - /* Fill RAND_MEM with random bytes, each non-zero. */ - for (i = 0; i < max_size; i++) - { - int x; - do - x = random (); - while (x == 0); - rand_mem[i] = x; - } - - for (size = 0; size < max_size; size++) - { - printf("phase %d\n", size); - for (src_off = 0; src_off <= 16; src_off++) - { - for (dst_off = 0; dst_off <= 16; dst_off++) - { - /* Put zero around the intended destination, to check - that it's not clobbered. */ - for (i = 1; i < space_around; i++) - { - memp[dst_off - i] = 0; - memp[dst_off + size - 1 + i] = 0; - } - - /* Fill the source area with known contents. */ - for (i = 0; i < size; i++) - memp[src_off + i] = rand_mem[i]; - - /* Remember the contents around the destination area. - (It might not be what we wrote some lines above, since - the src area and the dst area overlap.) */ - for (i = 1; i < space_around; i++) - { - lo_around[i] = memp[dst_off - i]; - hi_around[i] = memp[dst_off + size - 1 + i]; - } - - memmove (memp + dst_off, memp + src_off, size); - - /* Check that the destination area has the same - contents we wrote to the source area. */ - for (i = 0; i < size; i++) - { - if (memp[dst_off + i] != rand_mem[i]) - abort (); - } - - /* Check that the area around the destination is not - clobbered. */ - for (i = 1; i < space_around; i++) - { - if (memp[dst_off - i] != lo_around[i]) - abort (); - if (memp[dst_off + size - 1 + i] != hi_around[i]) - abort (); - } - } - } - } - - puts ("Test succeeded."); - - return 0; -} diff --git a/test/string/tester.c b/test/string/tester.c deleted file mode 100644 index 7f3ff2865..000000000 --- a/test/string/tester.c +++ /dev/null @@ -1,1646 +0,0 @@ -/* Tester for string functions. - Copyright (C) 1995-2001, 2003, 2005 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif - -/* Make sure we don't test the optimized inline functions if we want to - test the real implementation. */ -#if !defined DO_STRING_INLINES -#undef __USE_STRING_INLINES -#endif - -#include -#include -#include -#include -#include -#include - -#ifdef __UCLIBC__ -# define __TEST_BSD_FUNCS__ -#else -# undef __TEST_BSD_FUNCS__ -#endif - -#if defined(__UCLIBC_SUSV3_LEGACY__) || defined(__UCLIBC_SUSV3_LEGACY_MACROS__) -# define __TEST_SUSV3_LEGACY__ -#else -# undef __TEST_SUSV3_LEGACY__ -#endif - -#define STREQ(a, b) (strcmp((a), (b)) == 0) - -const char *it = ""; /* Routine name for message routines. */ -size_t errors = 0; - -/* Complain if condition is not true. */ -static void -check (int thing, int number) -{ - if (!thing) - { - printf("%s flunked test %d\n", it, number); - ++errors; - } -} - -/* Complain if first two args don't strcmp as equal. */ -static void -equal (const char *a, const char *b, int number) -{ - check(a != NULL && b != NULL && STREQ (a, b), number); -} - -char one[50]; -char two[50]; -char *cp; - -static void -test_strcmp (void) -{ - it = "strcmp"; - check (strcmp ("", "") == 0, 1); /* Trivial case. */ - check (strcmp ("a", "a") == 0, 2); /* Identity. */ - check (strcmp ("abc", "abc") == 0, 3); /* Multicharacter. */ - check (strcmp ("abc", "abcd") < 0, 4); /* Length mismatches. */ - check (strcmp ("abcd", "abc") > 0, 5); - check (strcmp ("abcd", "abce") < 0, 6); /* Honest miscompares. */ - check (strcmp ("abce", "abcd") > 0, 7); - check (strcmp ("a\203", "a") > 0, 8); /* Tricky if char signed. */ - check (strcmp ("a\203", "a\003") > 0, 9); - - { - char buf1[0x40], buf2[0x40]; - int i, j; - for (i=0; i < 0x10; i++) - for (j = 0; j < 0x10; j++) - { - int k; - for (k = 0; k < 0x3f; k++) - { - buf1[k] = '0' ^ (k & 4); - buf2[k] = '4' ^ (k & 4); - } - buf1[i] = buf1[0x3f] = 0; - buf2[j] = buf2[0x3f] = 0; - for (k = 0; k < 0xf; k++) - { - int cnum = 0x10+0x10*k+0x100*j+0x1000*i; - check (strcmp (buf1+i,buf2+j) == 0, cnum); - buf1[i+k] = 'A' + i + k; - buf1[i+k+1] = 0; - check (strcmp (buf1+i,buf2+j) > 0, cnum+1); - check (strcmp (buf2+j,buf1+i) < 0, cnum+2); - buf2[j+k] = 'B' + i + k; - buf2[j+k+1] = 0; - check (strcmp (buf1+i,buf2+j) < 0, cnum+3); - check (strcmp (buf2+j,buf1+i) > 0, cnum+4); - buf2[j+k] = 'A' + i + k; - buf1[i] = 'A' + i + 0x80; - check (strcmp (buf1+i,buf2+j) > 0, cnum+5); - check (strcmp (buf2+j,buf1+i) < 0, cnum+6); - buf1[i] = 'A' + i; - } - } - } -} - -#define SIMPLE_COPY(fn, n, str, ntest) \ - do { \ - int __n; \ - char *cp; \ - for (__n = 0; __n < (int) sizeof (one); ++__n) \ - one[__n] = 'Z'; \ - fn (one, str); \ - for (cp = one, __n = 0; __n < n; ++__n, ++cp) \ - check (*cp == '0' + (n % 10), ntest); \ - check (*cp == '\0', ntest); \ - } while (0) - -static void -test_strcpy (void) -{ - int i; - it = "strcpy"; - check (strcpy (one, "abcd") == one, 1); /* Returned value. */ - equal (one, "abcd", 2); /* Basic test. */ - - (void) strcpy (one, "x"); - equal (one, "x", 3); /* Writeover. */ - equal (one+2, "cd", 4); /* Wrote too much? */ - - (void) strcpy (two, "hi there"); - (void) strcpy (one, two); - equal (one, "hi there", 5); /* Basic test encore. */ - equal (two, "hi there", 6); /* Stomped on source? */ - - (void) strcpy (one, ""); - equal (one, "", 7); /* Boundary condition. */ - - for (i = 0; i < 16; i++) - { - (void) strcpy (one + i, "hi there"); /* Unaligned destination. */ - equal (one + i, "hi there", 8 + (i * 2)); - (void) strcpy (two, one + i); /* Unaligned source. */ - equal (two, "hi there", 9 + (i * 2)); - } - - SIMPLE_COPY(strcpy, 0, "", 41); - SIMPLE_COPY(strcpy, 1, "1", 42); - SIMPLE_COPY(strcpy, 2, "22", 43); - SIMPLE_COPY(strcpy, 3, "333", 44); - SIMPLE_COPY(strcpy, 4, "4444", 45); - SIMPLE_COPY(strcpy, 5, "55555", 46); - SIMPLE_COPY(strcpy, 6, "666666", 47); - SIMPLE_COPY(strcpy, 7, "7777777", 48); - SIMPLE_COPY(strcpy, 8, "88888888", 49); - SIMPLE_COPY(strcpy, 9, "999999999", 50); - SIMPLE_COPY(strcpy, 10, "0000000000", 51); - SIMPLE_COPY(strcpy, 11, "11111111111", 52); - SIMPLE_COPY(strcpy, 12, "222222222222", 53); - SIMPLE_COPY(strcpy, 13, "3333333333333", 54); - SIMPLE_COPY(strcpy, 14, "44444444444444", 55); - SIMPLE_COPY(strcpy, 15, "555555555555555", 56); - SIMPLE_COPY(strcpy, 16, "6666666666666666", 57); - - /* Simple test using implicitly coerced `void *' arguments. */ - const void *src = "frobozz"; - void *dst = one; - check (strcpy (dst, src) == dst, 1); - equal (dst, "frobozz", 2); -} - -static void -test_stpcpy (void) -{ - it = "stpcpy"; - check ((stpcpy (one, "a") - one) == 1, 1); - equal (one, "a", 2); - - check ((stpcpy (one, "ab") - one) == 2, 3); - equal (one, "ab", 4); - - check ((stpcpy (one, "abc") - one) == 3, 5); - equal (one, "abc", 6); - - check ((stpcpy (one, "abcd") - one) == 4, 7); - equal (one, "abcd", 8); - - check ((stpcpy (one, "abcde") - one) == 5, 9); - equal (one, "abcde", 10); - - check ((stpcpy (one, "abcdef") - one) == 6, 11); - equal (one, "abcdef", 12); - - check ((stpcpy (one, "abcdefg") - one) == 7, 13); - equal (one, "abcdefg", 14); - - check ((stpcpy (one, "abcdefgh") - one) == 8, 15); - equal (one, "abcdefgh", 16); - - check ((stpcpy (one, "abcdefghi") - one) == 9, 17); - equal (one, "abcdefghi", 18); - - check ((stpcpy (one, "x") - one) == 1, 19); - equal (one, "x", 20); /* Writeover. */ - equal (one+2, "cdefghi", 21); /* Wrote too much? */ - - check ((stpcpy (one, "xx") - one) == 2, 22); - equal (one, "xx", 23); /* Writeover. */ - equal (one+3, "defghi", 24); /* Wrote too much? */ - - check ((stpcpy (one, "xxx") - one) == 3, 25); - equal (one, "xxx", 26); /* Writeover. */ - equal (one+4, "efghi", 27); /* Wrote too much? */ - - check ((stpcpy (one, "xxxx") - one) == 4, 28); - equal (one, "xxxx", 29); /* Writeover. */ - equal (one+5, "fghi", 30); /* Wrote too much? */ - - check ((stpcpy (one, "xxxxx") - one) == 5, 31); - equal (one, "xxxxx", 32); /* Writeover. */ - equal (one+6, "ghi", 33); /* Wrote too much? */ - - check ((stpcpy (one, "xxxxxx") - one) == 6, 34); - equal (one, "xxxxxx", 35); /* Writeover. */ - equal (one+7, "hi", 36); /* Wrote too much? */ - - check ((stpcpy (one, "xxxxxxx") - one) == 7, 37); - equal (one, "xxxxxxx", 38); /* Writeover. */ - equal (one+8, "i", 39); /* Wrote too much? */ - - check ((stpcpy (stpcpy (stpcpy (one, "a"), "b"), "c") - one) == 3, 40); - equal (one, "abc", 41); - equal (one + 4, "xxx", 42); - - SIMPLE_COPY(stpcpy, 0, "", 43); - SIMPLE_COPY(stpcpy, 1, "1", 44); - SIMPLE_COPY(stpcpy, 2, "22", 45); - SIMPLE_COPY(stpcpy, 3, "333", 46); - SIMPLE_COPY(stpcpy, 4, "4444", 47); - SIMPLE_COPY(stpcpy, 5, "55555", 48); - SIMPLE_COPY(stpcpy, 6, "666666", 49); - SIMPLE_COPY(stpcpy, 7, "7777777", 50); - SIMPLE_COPY(stpcpy, 8, "88888888", 51); - SIMPLE_COPY(stpcpy, 9, "999999999", 52); - SIMPLE_COPY(stpcpy, 10, "0000000000", 53); - SIMPLE_COPY(stpcpy, 11, "11111111111", 54); - SIMPLE_COPY(stpcpy, 12, "222222222222", 55); - SIMPLE_COPY(stpcpy, 13, "3333333333333", 56); - SIMPLE_COPY(stpcpy, 14, "44444444444444", 57); - SIMPLE_COPY(stpcpy, 15, "555555555555555", 58); - SIMPLE_COPY(stpcpy, 16, "6666666666666666", 59); -} - -static void -test_stpncpy (void) -{ - it = "stpncpy"; - memset (one, 'x', sizeof (one)); - check (stpncpy (one, "abc", 2) == one + 2, 1); - check (stpncpy (one, "abc", 3) == one + 3, 2); - check (stpncpy (one, "abc", 4) == one + 3, 3); - check (one[3] == '\0' && one[4] == 'x', 4); - check (stpncpy (one, "abcd", 5) == one + 4, 5); - check (one[4] == '\0' && one[5] == 'x', 6); - check (stpncpy (one, "abcd", 6) == one + 4, 7); - check (one[4] == '\0' && one[5] == '\0' && one[6] == 'x', 8); -} - -static void -test_strcat (void) -{ - it = "strcat"; - (void) strcpy (one, "ijk"); - check (strcat (one, "lmn") == one, 1); /* Returned value. */ - equal (one, "ijklmn", 2); /* Basic test. */ - - (void) strcpy (one, "x"); - (void) strcat (one, "yz"); - equal (one, "xyz", 3); /* Writeover. */ - equal (one+4, "mn", 4); /* Wrote too much? */ - - (void) strcpy (one, "gh"); - (void) strcpy (two, "ef"); - (void) strcat (one, two); - equal (one, "ghef", 5); /* Basic test encore. */ - equal (two, "ef", 6); /* Stomped on source? */ - - (void) strcpy (one, ""); - (void) strcat (one, ""); - equal (one, "", 7); /* Boundary conditions. */ - (void) strcpy (one, "ab"); - (void) strcat (one, ""); - equal (one, "ab", 8); - (void) strcpy (one, ""); - (void) strcat (one, "cd"); - equal (one, "cd", 9); -} - -static void -test_strncat (void) -{ - /* First test it as strcat, with big counts, then test the count - mechanism. */ - it = "strncat"; - (void) strcpy (one, "ijk"); - check (strncat (one, "lmn", 99) == one, 1); /* Returned value. */ - equal (one, "ijklmn", 2); /* Basic test. */ - - (void) strcpy (one, "x"); - (void) strncat (one, "yz", 99); - equal (one, "xyz", 3); /* Writeover. */ - equal (one+4, "mn", 4); /* Wrote too much? */ - - (void) strcpy (one, "gh"); - (void) strcpy (two, "ef"); - (void) strncat (one, two, 99); - equal (one, "ghef", 5); /* Basic test encore. */ - equal (two, "ef", 6); /* Stomped on source? */ - - (void) strcpy (one, ""); - (void) strncat (one, "", 99); - equal (one, "", 7); /* Boundary conditions. */ - (void) strcpy (one, "ab"); - (void) strncat (one, "", 99); - equal (one, "ab", 8); - (void) strcpy (one, ""); - (void) strncat (one, "cd", 99); - equal (one, "cd", 9); - - (void) strcpy (one, "ab"); - (void) strncat (one, "cdef", 2); - equal (one, "abcd", 10); /* Count-limited. */ - - (void) strncat (one, "gh", 0); - equal (one, "abcd", 11); /* Zero count. */ - - (void) strncat (one, "gh", 2); - equal (one, "abcdgh", 12); /* Count and length equal. */ - - (void) strncat (one, "ij", (size_t)-1); /* set sign bit in count */ - equal (one, "abcdghij", 13); -} - -static void -test_strlcat (void) -{ -#ifdef __TEST_BSD_FUNCS__ - /* First test it as strcat, with big counts, then test the count - mechanism. */ - it = "strlcat"; - (void) strcpy (one, "ijk"); - check (strlcat (one, "lmn", 99) == 6, 1); /* Returned value. */ - equal (one, "ijklmn", 2); /* Basic test. */ - - (void) strcpy (one, "x"); - (void) strlcat (one, "yz", 99); - equal (one, "xyz", 3); /* Writeover. */ - equal (one+4, "mn", 4); /* Wrote too much? */ - - (void) strcpy (one, "gh"); - (void) strcpy (two, "ef"); - (void) strlcat (one, two, 99); - equal (one, "ghef", 5); /* Basic test encore. */ - equal (two, "ef", 6); /* Stomped on source? */ - - (void) strcpy (one, ""); - (void) strlcat (one, "", 99); - equal (one, "", 7); /* Boundary conditions. */ - (void) strcpy (one, "ab"); - (void) strlcat (one, "", 99); - equal (one, "ab", 8); - (void) strcpy (one, ""); - (void) strlcat (one, "cd", 99); - equal (one, "cd", 9); - - (void) strcpy (one, "ab"); - (void) strlcat (one, "cdef", 2); - equal (one, "ab", 10); /* Count-limited. */ - - (void) strlcat (one, "gh", 0); - equal (one, "ab", 11); /* Zero count. */ - - (void) strlcat (one, "gh", 4); - equal (one, "abg", 12); /* Count and length equal. */ - - (void) strlcat (one, "ij", (size_t)-1); /* set sign bit in count */ - equal (one, "abgij", 13); -#endif -} - -static void -test_strncmp (void) -{ - /* First test as strcmp with big counts, then test count code. */ - it = "strncmp"; - check (strncmp ("", "", 99) == 0, 1); /* Trivial case. */ - check (strncmp ("a", "a", 99) == 0, 2); /* Identity. */ - check (strncmp ("abc", "abc", 99) == 0, 3); /* Multicharacter. */ - check (strncmp ("abc", "abcd", 99) < 0, 4); /* Length unequal. */ - check (strncmp ("abcd", "abc", 99) > 0, 5); - check (strncmp ("abcd", "abce", 99) < 0, 6); /* Honestly unequal. */ - check (strncmp ("abce", "abcd", 99) > 0, 7); - check (strncmp ("a\203", "a", 2) > 0, 8); /* Tricky if '\203' < 0 */ - check (strncmp ("a\203", "a\003", 2) > 0, 9); - check (strncmp ("abce", "abcd", 3) == 0, 10); /* Count limited. */ - check (strncmp ("abce", "abc", 3) == 0, 11); /* Count == length. */ - check (strncmp ("abcd", "abce", 4) < 0, 12); /* Nudging limit. */ - check (strncmp ("abc", "def", 0) == 0, 13); /* Zero count. */ - check (strncmp ("abc", "", (size_t)-1) > 0, 14); /* set sign bit in count */ - check (strncmp ("abc", "abc", (size_t)-2) == 0, 15); - check (strncmp ("aa", "ab", (size_t)-1) < 0, 16); -} - -static void -test_strncpy (void) -{ - /* Testing is a bit different because of odd semantics. */ - it = "strncpy"; - check (strncpy (one, "abc", 4) == one, 1); /* Returned value. */ - equal (one, "abc", 2); /* Did the copy go right? */ - - (void) strcpy (one, "abcdefgh"); - (void) strncpy (one, "xyz", 2); - equal (one, "xycdefgh", 3); /* Copy cut by count. */ - - (void) strcpy (one, "abcdefgh"); - (void) strncpy (one, "xyz", 3); /* Copy cut just before NUL. */ - equal (one, "xyzdefgh", 4); - - (void) strcpy (one, "abcdefgh"); - (void) strncpy (one, "xyz", 4); /* Copy just includes NUL. */ - equal (one, "xyz", 5); - equal (one+4, "efgh", 6); /* Wrote too much? */ - - (void) strcpy (one, "abcdefgh"); - (void) strncpy (one, "xyz", 5); /* Copy includes padding. */ - equal (one, "xyz", 7); - equal (one+4, "", 8); - equal (one+5, "fgh", 9); - - (void) strcpy (one, "abc"); - (void) strncpy (one, "xyz", 0); /* Zero-length copy. */ - equal (one, "abc", 10); - - (void) strncpy (one, "", 2); /* Zero-length source. */ - equal (one, "", 11); - equal (one+1, "", 12); - equal (one+2, "c", 13); - - (void) strcpy (one, "hi there"); - (void) strncpy (two, one, 9); - equal (two, "hi there", 14); /* Just paranoia. */ - equal (one, "hi there", 15); /* Stomped on source? */ -} - -static void -test_strlcpy (void) -{ -#ifdef __TEST_BSD_FUNCS__ - /* Testing is a bit different because of odd semantics. */ - it = "strlcpy"; - check (strlcpy (one, "abc", sizeof(one)) == 3, 1); /* Returned value. */ - equal (one, "abc", 2); /* Did the copy go right? */ - - (void) strcpy (one, "abcdefgh"); - (void) strlcpy (one, "xyz", 2); - equal (one, "x\0cdefgh", 3); /* Copy cut by count. */ - - (void) strcpy (one, "abcdefgh"); - (void) strlcpy (one, "xyz", 3); /* Copy cut just before NUL. */ - equal (one, "xy\0defgh", 4); - - (void) strcpy (one, "abcdefgh"); - (void) strlcpy (one, "xyz", 4); /* Copy just includes NUL. */ - equal (one, "xyz", 5); - equal (one+4, "efgh", 6); /* Wrote too much? */ - - (void) strcpy (one, "abcdefgh"); - (void) strlcpy (one, "xyz", 5); /* Copy includes padding. */ - equal (one, "xyz", 7); - equal (one+3, "", 8); - equal (one+4, "efgh", 9); - - (void) strcpy (one, "abc"); - (void) strlcpy (one, "xyz", 0); /* Zero-length copy. */ - equal (one, "abc", 10); - - (void) strlcpy (one, "", 2); /* Zero-length source. */ - equal (one, "", 11); - equal (one+1, "bc", 12); - equal (one+2, "c", 13); - - (void) strcpy (one, "hi there"); - (void) strlcpy (two, one, 9); - equal (two, "hi there", 14); /* Just paranoia. */ - equal (one, "hi there", 15); /* Stomped on source? */ -#endif -} - -static void -test_strlen (void) -{ - it = "strlen"; - check (strlen ("") == 0, 1); /* Empty. */ - check (strlen ("a") == 1, 2); /* Single char. */ - check (strlen ("abcd") == 4, 3); /* Multiple chars. */ - { - char buf[4096]; - int i; - char *p; - for (i=0; i < 0x100; i++) - { - p = (char *) ((unsigned long int)(buf + 0xff) & ~0xff) + i; - strcpy (p, "OK"); - strcpy (p+3, "BAD/WRONG"); - check (strlen (p) == 2, 4+i); - } - } -} - -static void -test_strnlen (void) -{ - it = "strnlen"; - check (strnlen ("", 10) == 0, 1); /* Empty. */ - check (strnlen ("a", 10) == 1, 2); /* Single char. */ - check (strnlen ("abcd", 10) == 4, 3); /* Multiple chars. */ - check (strnlen ("foo", (size_t)-1) == 3, 4); /* limits of n. */ - - { - char buf[4096]; - int i; - char *p; - for (i=0; i < 0x100; i++) - { - p = (char *) ((unsigned long int)(buf + 0xff) & ~0xff) + i; - strcpy (p, "OK"); - strcpy (p+3, "BAD/WRONG"); - check (strnlen (p, 100) == 2, 5+i); - } - } -} - -static void -test_strchr (void) -{ - it = "strchr"; - check (strchr ("abcd", 'z') == NULL, 1); /* Not found. */ - (void) strcpy (one, "abcd"); - check (strchr (one, 'c') == one+2, 2); /* Basic test. */ - check (strchr (one, 'd') == one+3, 3); /* End of string. */ - check (strchr (one, 'a') == one, 4); /* Beginning. */ - check (strchr (one, '\0') == one+4, 5); /* Finding NUL. */ - (void) strcpy (one, "ababa"); - check (strchr (one, 'b') == one+1, 6); /* Finding first. */ - (void) strcpy (one, ""); - check (strchr (one, 'b') == NULL, 7); /* Empty string. */ - check (strchr (one, '\0') == one, 8); /* NUL in empty string. */ - { - char buf[4096]; - int i; - char *p; - for (i=0; i < 0x100; i++) - { - p = (char *) ((unsigned long int) (buf + 0xff) & ~0xff) + i; - strcpy (p, "OK"); - strcpy (p+3, "BAD/WRONG"); - check (strchr (p, '/') == NULL, 9+i); - } - } -} - -static void -test_strchrnul (void) -{ - const char *os; - it = "strchrnul"; - cp = strchrnul ((os = "abcd"), 'z'); - check (*cp == '\0', 1); /* Not found. */ - check (cp == os + 4, 2); - (void) strcpy (one, "abcd"); - check (strchrnul (one, 'c') == one+2, 3); /* Basic test. */ - check (strchrnul (one, 'd') == one+3, 4); /* End of string. */ - check (strchrnul (one, 'a') == one, 5); /* Beginning. */ - check (strchrnul (one, '\0') == one+4, 6); /* Finding NUL. */ - (void) strcpy (one, "ababa"); - check (strchrnul (one, 'b') == one+1, 7); /* Finding first. */ - (void) strcpy (one, ""); - check (strchrnul (one, 'b') == one, 8); /* Empty string. */ - check (strchrnul (one, '\0') == one, 9); /* NUL in empty string. */ - { - char buf[4096]; - int i; - char *p; - for (i=0; i < 0x100; i++) - { - p = (char *) ((unsigned long int) (buf + 0xff) & ~0xff) + i; - strcpy (p, "OK"); - strcpy (p+3, "BAD/WRONG"); - cp = strchrnul (p, '/'); - check (*cp == '\0', 9+2*i); - check (cp == p+2, 10+2*i); - } - } -} - -static void -test_rawmemchr (void) -{ - it = "rawmemchr"; - (void) strcpy (one, "abcd"); - check (rawmemchr (one, 'c') == one+2, 1); /* Basic test. */ - check (rawmemchr (one, 'd') == one+3, 2); /* End of string. */ - check (rawmemchr (one, 'a') == one, 3); /* Beginning. */ - check (rawmemchr (one, '\0') == one+4, 4); /* Finding NUL. */ - (void) strcpy (one, "ababa"); - check (rawmemchr (one, 'b') == one+1, 5); /* Finding first. */ - (void) strcpy (one, ""); - check (rawmemchr (one, '\0') == one, 6); /* NUL in empty string. */ - { - char buf[4096]; - int i; - char *p; - for (i=0; i < 0x100; i++) - { - p = (char *) ((unsigned long int) (buf + 0xff) & ~0xff) + i; - strcpy (p, "OK"); - strcpy (p+3, "BAD/WRONG"); - check (rawmemchr (p, 'R') == p+8, 6+i); - } - } -} - -static void -test_index (void) -{ -#ifdef __TEST_SUSV3_LEGACY__ - it = "index"; - check (index ("abcd", 'z') == NULL, 1); /* Not found. */ - (void) strcpy (one, "abcd"); - check (index (one, 'c') == one+2, 2); /* Basic test. */ - check (index (one, 'd') == one+3, 3); /* End of string. */ - check (index (one, 'a') == one, 4); /* Beginning. */ - check (index (one, '\0') == one+4, 5); /* Finding NUL. */ - (void) strcpy (one, "ababa"); - check (index (one, 'b') == one+1, 6); /* Finding first. */ - (void) strcpy (one, ""); - check (index (one, 'b') == NULL, 7); /* Empty string. */ - check (index (one, '\0') == one, 8); /* NUL in empty string. */ -#endif -} - -static void -test_strrchr (void) -{ - it = "strrchr"; - check (strrchr ("abcd", 'z') == NULL, 1); /* Not found. */ - (void) strcpy (one, "abcd"); - check (strrchr (one, 'c') == one+2, 2); /* Basic test. */ - check (strrchr (one, 'd') == one+3, 3); /* End of string. */ - check (strrchr (one, 'a') == one, 4); /* Beginning. */ - check (strrchr (one, '\0') == one+4, 5); /* Finding NUL. */ - (void) strcpy (one, "ababa"); - check (strrchr (one, 'b') == one+3, 6); /* Finding last. */ - (void) strcpy (one, ""); - check (strrchr (one, 'b') == NULL, 7); /* Empty string. */ - check (strrchr (one, '\0') == one, 8); /* NUL in empty string. */ - { - char buf[4096]; - int i; - char *p; - for (i=0; i < 0x100; i++) - { - p = (char *) ((unsigned long int) (buf + 0xff) & ~0xff) + i; - strcpy (p, "OK"); - strcpy (p+3, "BAD/WRONG"); - check (strrchr (p, '/') == NULL, 9+i); - } - } -} - -static void -test_memrchr (void) -{ - size_t l; - it = "memrchr"; - check (memrchr ("abcd", 'z', 5) == NULL, 1); /* Not found. */ - (void) strcpy (one, "abcd"); - l = strlen (one) + 1; - check (memrchr (one, 'c', l) == one+2, 2); /* Basic test. */ - check (memrchr (one, 'd', l) == one+3, 3); /* End of string. */ - check (memrchr (one, 'a', l) == one, 4); /* Beginning. */ - check (memrchr (one, '\0', l) == one+4, 5); /* Finding NUL. */ - (void) strcpy (one, "ababa"); - l = strlen (one) + 1; - check (memrchr (one, 'b', l) == one+3, 6); /* Finding last. */ - (void) strcpy (one, ""); - l = strlen (one) + 1; - check (memrchr (one, 'b', l) == NULL, 7); /* Empty string. */ - check (memrchr (one, '\0', l) == one, 8); /* NUL in empty string. */ - - /* now test all possible alignment and length combinations to catch - bugs due to unrolled loops (assuming unrolling is limited to no - more than 128 byte chunks: */ - { - char buf[128 + sizeof(long)]; - long align, len, i, pos; - - for (align = 0; align < (long) sizeof(long); ++align) { - for (len = 0; len < (long) (sizeof(buf) - align); ++len) { - for (i = 0; i < len; ++i) - buf[align + i] = 'x'; /* don't depend on memset... */ - - for (pos = len - 1; pos >= 0; --pos) { -#if 0 - printf("align %d, len %d, pos %d\n", align, len, pos); -#endif - check(memrchr(buf + align, 'x', len) == buf + align + pos, 9); - check(memrchr(buf + align + pos + 1, 'x', len - (pos + 1)) == NULL, - 10); - buf[align + pos] = '-'; - } - } - } - } -} - -static void -test_rindex (void) -{ -#ifdef __TEST_SUSV3_LEGACY__ - it = "rindex"; - check (rindex ("abcd", 'z') == NULL, 1); /* Not found. */ - (void) strcpy (one, "abcd"); - check (rindex (one, 'c') == one+2, 2); /* Basic test. */ - check (rindex (one, 'd') == one+3, 3); /* End of string. */ - check (rindex (one, 'a') == one, 4); /* Beginning. */ - check (rindex (one, '\0') == one+4, 5); /* Finding NUL. */ - (void) strcpy (one, "ababa"); - check (rindex (one, 'b') == one+3, 6); /* Finding last. */ - (void) strcpy (one, ""); - check (rindex (one, 'b') == NULL, 7); /* Empty string. */ - check (rindex (one, '\0') == one, 8); /* NUL in empty string. */ -#endif -} - -static void -test_strpbrk (void) -{ - it = "strpbrk"; - check(strpbrk("abcd", "z") == NULL, 1); /* Not found. */ - (void) strcpy(one, "abcd"); - check(strpbrk(one, "c") == one+2, 2); /* Basic test. */ - check(strpbrk(one, "d") == one+3, 3); /* End of string. */ - check(strpbrk(one, "a") == one, 4); /* Beginning. */ - check(strpbrk(one, "") == NULL, 5); /* Empty search list. */ - check(strpbrk(one, "cb") == one+1, 6); /* Multiple search. */ - (void) strcpy(one, "abcabdea"); - check(strpbrk(one, "b") == one+1, 7); /* Finding first. */ - check(strpbrk(one, "cb") == one+1, 8); /* With multiple search. */ - check(strpbrk(one, "db") == one+1, 9); /* Another variant. */ - (void) strcpy(one, ""); - check(strpbrk(one, "bc") == NULL, 10); /* Empty string. */ - (void) strcpy(one, ""); - check(strpbrk(one, "bcd") == NULL, 11); /* Empty string. */ - (void) strcpy(one, ""); - check(strpbrk(one, "bcde") == NULL, 12); /* Empty string. */ - check(strpbrk(one, "") == NULL, 13); /* Both strings empty. */ - (void) strcpy(one, "abcabdea"); - check(strpbrk(one, "befg") == one+1, 14); /* Finding first. */ - check(strpbrk(one, "cbr") == one+1, 15); /* With multiple search. */ - check(strpbrk(one, "db") == one+1, 16); /* Another variant. */ - check(strpbrk(one, "efgh") == one+6, 17); /* And yet another. */ -} - -static void -test_strstr (void) -{ - it = "strstr"; - check(strstr("abcd", "z") == NULL, 1); /* Not found. */ - check(strstr("abcd", "abx") == NULL, 2); /* Dead end. */ - (void) strcpy(one, "abcd"); - check(strstr(one, "c") == one+2, 3); /* Basic test. */ - check(strstr(one, "bc") == one+1, 4); /* Multichar. */ - check(strstr(one, "d") == one+3, 5); /* End of string. */ - check(strstr(one, "cd") == one+2, 6); /* Tail of string. */ - check(strstr(one, "abc") == one, 7); /* Beginning. */ - check(strstr(one, "abcd") == one, 8); /* Exact match. */ - check(strstr(one, "abcde") == NULL, 9); /* Too long. */ - check(strstr(one, "de") == NULL, 10); /* Past end. */ - check(strstr(one, "") == one, 11); /* Finding empty. */ - (void) strcpy(one, "ababa"); - check(strstr(one, "ba") == one+1, 12); /* Finding first. */ - (void) strcpy(one, ""); - check(strstr(one, "b") == NULL, 13); /* Empty string. */ - check(strstr(one, "") == one, 14); /* Empty in empty string. */ - (void) strcpy(one, "bcbca"); - check(strstr(one, "bca") == one+2, 15); /* False start. */ - (void) strcpy(one, "bbbcabbca"); - check(strstr(one, "bbca") == one+1, 16); /* With overlap. */ -} - -static void -test_strspn (void) -{ - it = "strspn"; - check(strspn("abcba", "abc") == 5, 1); /* Whole string. */ - check(strspn("abcba", "ab") == 2, 2); /* Partial. */ - check(strspn("abc", "qx") == 0, 3); /* None. */ - check(strspn("", "ab") == 0, 4); /* Null string. */ - check(strspn("abc", "") == 0, 5); /* Null search list. */ -} - -static void -test_strcspn (void) -{ - it = "strcspn"; - check(strcspn("abcba", "qx") == 5, 1); /* Whole string. */ - check(strcspn("abcba", "cx") == 2, 2); /* Partial. */ - check(strcspn("abc", "abc") == 0, 3); /* None. */ - check(strcspn("", "ab") == 0, 4); /* Null string. */ - check(strcspn("abc", "") == 3, 5); /* Null search list. */ -} - -static void -test_strtok (void) -{ - it = "strtok"; - (void) strcpy(one, "first, second, third"); - equal(strtok(one, ", "), "first", 1); /* Basic test. */ - equal(one, "first", 2); - equal(strtok((char *)NULL, ", "), "second", 3); - equal(strtok((char *)NULL, ", "), "third", 4); - check(strtok((char *)NULL, ", ") == NULL, 5); - (void) strcpy(one, ", first, "); - equal(strtok(one, ", "), "first", 6); /* Extra delims, 1 tok. */ - check(strtok((char *)NULL, ", ") == NULL, 7); - (void) strcpy(one, "1a, 1b; 2a, 2b"); - equal(strtok(one, ", "), "1a", 8); /* Changing delim lists. */ - equal(strtok((char *)NULL, "; "), "1b", 9); - equal(strtok((char *)NULL, ", "), "2a", 10); - (void) strcpy(two, "x-y"); - equal(strtok(two, "-"), "x", 11); /* New string before done. */ - equal(strtok((char *)NULL, "-"), "y", 12); - check(strtok((char *)NULL, "-") == NULL, 13); - (void) strcpy(one, "a,b, c,, ,d"); - equal(strtok(one, ", "), "a", 14); /* Different separators. */ - equal(strtok((char *)NULL, ", "), "b", 15); - equal(strtok((char *)NULL, " ,"), "c", 16); /* Permute list too. */ - equal(strtok((char *)NULL, " ,"), "d", 17); - check(strtok((char *)NULL, ", ") == NULL, 18); - check(strtok((char *)NULL, ", ") == NULL, 19); /* Persistence. */ - (void) strcpy(one, ", "); - check(strtok(one, ", ") == NULL, 20); /* No tokens. */ - (void) strcpy(one, ""); - check(strtok(one, ", ") == NULL, 21); /* Empty string. */ - (void) strcpy(one, "abc"); - equal(strtok(one, ", "), "abc", 22); /* No delimiters. */ - check(strtok((char *)NULL, ", ") == NULL, 23); - (void) strcpy(one, "abc"); - equal(strtok(one, ""), "abc", 24); /* Empty delimiter list. */ - check(strtok((char *)NULL, "") == NULL, 25); - (void) strcpy(one, "abcdefgh"); - (void) strcpy(one, "a,b,c"); - equal(strtok(one, ","), "a", 26); /* Basics again... */ - equal(strtok((char *)NULL, ","), "b", 27); - equal(strtok((char *)NULL, ","), "c", 28); - check(strtok((char *)NULL, ",") == NULL, 29); - equal(one+6, "gh", 30); /* Stomped past end? */ - equal(one, "a", 31); /* Stomped old tokens? */ - equal(one+2, "b", 32); - equal(one+4, "c", 33); -} - -static void -test_strtok_r (void) -{ - it = "strtok_r"; - (void) strcpy(one, "first, second, third"); - cp = NULL; /* Always initialize cp to make sure it doesn't point to some old data. */ - equal(strtok_r(one, ", ", &cp), "first", 1); /* Basic test. */ - equal(one, "first", 2); - equal(strtok_r((char *)NULL, ", ", &cp), "second", 3); - equal(strtok_r((char *)NULL, ", ", &cp), "third", 4); - check(strtok_r((char *)NULL, ", ", &cp) == NULL, 5); - (void) strcpy(one, ", first, "); - cp = NULL; - equal(strtok_r(one, ", ", &cp), "first", 6); /* Extra delims, 1 tok. */ - check(strtok_r((char *)NULL, ", ", &cp) == NULL, 7); - (void) strcpy(one, "1a, 1b; 2a, 2b"); - cp = NULL; - equal(strtok_r(one, ", ", &cp), "1a", 8); /* Changing delim lists. */ - equal(strtok_r((char *)NULL, "; ", &cp), "1b", 9); - equal(strtok_r((char *)NULL, ", ", &cp), "2a", 10); - (void) strcpy(two, "x-y"); - cp = NULL; - equal(strtok_r(two, "-", &cp), "x", 11); /* New string before done. */ - equal(strtok_r((char *)NULL, "-", &cp), "y", 12); - check(strtok_r((char *)NULL, "-", &cp) == NULL, 13); - (void) strcpy(one, "a,b, c,, ,d"); - cp = NULL; - equal(strtok_r(one, ", ", &cp), "a", 14); /* Different separators. */ - equal(strtok_r((char *)NULL, ", ", &cp), "b", 15); - equal(strtok_r((char *)NULL, " ,", &cp), "c", 16); /* Permute list too. */ - equal(strtok_r((char *)NULL, " ,", &cp), "d", 17); - check(strtok_r((char *)NULL, ", ", &cp) == NULL, 18); - check(strtok_r((char *)NULL, ", ", &cp) == NULL, 19); /* Persistence. */ - (void) strcpy(one, ", "); - cp = NULL; - check(strtok_r(one, ", ", &cp) == NULL, 20); /* No tokens. */ - (void) strcpy(one, ""); - cp = NULL; - check(strtok_r(one, ", ", &cp) == NULL, 21); /* Empty string. */ - check(strtok_r((char *)NULL, ", ", &cp) == NULL, 22); /* Persistence. */ - (void) strcpy(one, "abc"); - cp = NULL; - equal(strtok_r(one, ", ", &cp), "abc", 23); /* No delimiters. */ - check(strtok_r((char *)NULL, ", ", &cp) == NULL, 24); - (void) strcpy(one, "abc"); - cp = NULL; - equal(strtok_r(one, "", &cp), "abc", 25); /* Empty delimiter list. */ - check(strtok_r((char *)NULL, "", &cp) == NULL, 26); - (void) strcpy(one, "abcdefgh"); - (void) strcpy(one, "a,b,c"); - cp = NULL; - equal(strtok_r(one, ",", &cp), "a", 27); /* Basics again... */ - equal(strtok_r((char *)NULL, ",", &cp), "b", 28); - equal(strtok_r((char *)NULL, ",", &cp), "c", 29); - check(strtok_r((char *)NULL, ",", &cp) == NULL, 30); - equal(one+6, "gh", 31); /* Stomped past end? */ - equal(one, "a", 32); /* Stomped old tokens? */ - equal(one+2, "b", 33); - equal(one+4, "c", 34); -} - -static void -test_strsep (void) -{ - char *ptr; - it = "strsep"; - cp = strcpy(one, "first, second, third"); - equal(strsep(&cp, ", "), "first", 1); /* Basic test. */ - equal(one, "first", 2); - equal(strsep(&cp, ", "), "", 3); - equal(strsep(&cp, ", "), "second", 4); - equal(strsep(&cp, ", "), "", 5); - equal(strsep(&cp, ", "), "third", 6); - check(strsep(&cp, ", ") == NULL, 7); - cp = strcpy(one, ", first, "); - equal(strsep(&cp, ", "), "", 8); - equal(strsep(&cp, ", "), "", 9); - equal(strsep(&cp, ", "), "first", 10); /* Extra delims, 1 tok. */ - equal(strsep(&cp, ", "), "", 11); - equal(strsep(&cp, ", "), "", 12); - check(strsep(&cp, ", ") == NULL, 13); - cp = strcpy(one, "1a, 1b; 2a, 2b"); - equal(strsep(&cp, ", "), "1a", 14); /* Changing delim lists. */ - equal(strsep(&cp, ", "), "", 15); - equal(strsep(&cp, "; "), "1b", 16); - equal(strsep(&cp, ", "), "", 17); - equal(strsep(&cp, ", "), "2a", 18); - cp = strcpy(two, "x-y"); - equal(strsep(&cp, "-"), "x", 19); /* New string before done. */ - equal(strsep(&cp, "-"), "y", 20); - check(strsep(&cp, "-") == NULL, 21); - cp = strcpy(one, "a,b, c,, ,d "); - equal(strsep(&cp, ", "), "a", 22); /* Different separators. */ - equal(strsep(&cp, ", "), "b", 23); - equal(strsep(&cp, " ,"), "", 24); - equal(strsep(&cp, " ,"), "c", 25); /* Permute list too. */ - equal(strsep(&cp, " ,"), "", 26); - equal(strsep(&cp, " ,"), "", 27); - equal(strsep(&cp, " ,"), "", 28); - equal(strsep(&cp, " ,"), "d", 29); - equal(strsep(&cp, " ,"), "", 30); - check(strsep(&cp, ", ") == NULL, 31); - check(strsep(&cp, ", ") == NULL, 32); /* Persistence. */ - cp = strcpy(one, ", "); - equal(strsep(&cp, ", "), "", 33); - equal(strsep(&cp, ", "), "", 34); - equal(strsep(&cp, ", "), "", 35); - check(strsep(&cp, ", ") == NULL, 36); /* No tokens. */ - cp = strcpy(one, ""); - equal(strsep(&cp, ", "), "", 37); - check(strsep(&cp, ", ") == NULL, 38); /* Empty string. */ - cp = strcpy(one, "abc"); - equal(strsep(&cp, ", "), "abc", 39); /* No delimiters. */ - check(strsep(&cp, ", ") == NULL, 40); - cp = strcpy(one, "abc"); - equal(strsep(&cp, ""), "abc", 41); /* Empty delimiter list. */ - check(strsep(&cp, "") == NULL, 42); - (void) strcpy(one, "abcdefgh"); - cp = strcpy(one, "a,b,c"); - equal(strsep(&cp, ","), "a", 43); /* Basics again... */ - equal(strsep(&cp, ","), "b", 44); - equal(strsep(&cp, ","), "c", 45); - check(strsep(&cp, ",") == NULL, 46); - equal(one+6, "gh", 47); /* Stomped past end? */ - equal(one, "a", 48); /* Stomped old tokens? */ - equal(one+2, "b", 49); - equal(one+4, "c", 50); - - { - char text[] = "This,is,a,test"; - char *list = strdupa (text); - equal (strsep (&list, ","), "This", 51); - equal (strsep (&list, ","), "is", 52); - equal (strsep (&list, ","), "a", 53); - equal (strsep (&list, ","), "test", 54); - check (strsep (&list, ",") == NULL, 55); - } - - cp = strcpy(one, "a,b, c,, ,d,"); - equal(strsep(&cp, ","), "a", 56); /* Different separators. */ - equal(strsep(&cp, ","), "b", 57); - equal(strsep(&cp, ","), " c", 58); /* Permute list too. */ - equal(strsep(&cp, ","), "", 59); - equal(strsep(&cp, ","), " ", 60); - equal(strsep(&cp, ","), "d", 61); - equal(strsep(&cp, ","), "", 62); - check(strsep(&cp, ",") == NULL, 63); - check(strsep(&cp, ",") == NULL, 64); /* Persistence. */ - - cp = strcpy(one, "a,b, c,, ,d,"); - equal(strsep(&cp, "xy,"), "a", 65); /* Different separators. */ - equal(strsep(&cp, "x,y"), "b", 66); - equal(strsep(&cp, ",xy"), " c", 67); /* Permute list too. */ - equal(strsep(&cp, "xy,"), "", 68); - equal(strsep(&cp, "x,y"), " ", 69); - equal(strsep(&cp, ",xy"), "d", 70); - equal(strsep(&cp, "xy,"), "", 71); - check(strsep(&cp, "x,y") == NULL, 72); - check(strsep(&cp, ",xy") == NULL, 73); /* Persistence. */ - - cp = strcpy(one, "ABC"); - one[4] = ':'; - equal(strsep(&cp, "C"), "AB", 74); /* Access beyond NUL. */ - ptr = strsep(&cp, ":"); - equal(ptr, "", 75); - check(ptr == one + 3, 76); - check(cp == NULL, 77); - - cp = strcpy(one, "ABC"); - one[4] = ':'; - equal(strsep(&cp, "CD"), "AB", 78); /* Access beyond NUL. */ - ptr = strsep(&cp, ":."); - equal(ptr, "", 79); - check(ptr == one + 3, 80); - - cp = strcpy(one, "ABC"); /* No token in string. */ - equal(strsep(&cp, ","), "ABC", 81); - check(cp == NULL, 82); - - *one = '\0'; /* Empty string. */ - cp = one; - ptr = strsep(&cp, ","); - equal(ptr, "", 83); - check(ptr == one, 84); - check(cp == NULL, 85); - - *one = '\0'; /* Empty string and no token. */ - cp = one; - ptr = strsep(&cp, ""); - equal(ptr, "", 86); - check(ptr == one , 87); - check(cp == NULL, 88); -} - -static void -test_memcmp (void) -{ - int i, cnt = 1; - char one[21], two[21]; - - it = "memcmp"; - check(memcmp("a", "a", 1) == 0, cnt++); /* Identity. */ - check(memcmp("abc", "abc", 3) == 0, cnt++); /* Multicharacter. */ - check(memcmp("abcd", "abcf", 4) < 0, cnt++); /* Honestly unequal. */ - check(memcmp("abcf", "abcd", 4) > 0, cnt++); - check(memcmp("alph", "cold", 4) < 0, cnt++); - check(memcmp("a\203", "a\003", 2) > 0, cnt++); - check(memcmp("a\003", "a\203", 2) < 0, cnt++); - check(memcmp("a\003bc", "a\203bc", 2) < 0, cnt++); - check(memcmp("abc\203", "abc\003", 4) > 0, cnt++); - check(memcmp("abc\003", "abc\203", 4) < 0, cnt++); - check(memcmp("abcf", "abcd", 3) == 0, cnt++); /* Count limited. */ - check(memcmp("abc", "def", 0) == 0, cnt++); /* Zero count. */ - /* Comparisons with shifting 4-byte boundaries. */ - for (i=0; i<4; i++) - { - char *a = one + i, *b = two + i; - strncpy( a, "--------11112222", 16); - strncpy( b, "--------33334444", 16); - check( memcmp(b, a, 16) > 0, cnt++); - check( memcmp(a, b, 16) < 0, cnt++); - } -} - -static void -test_memchr (void) -{ - it = "memchr"; - check(memchr("abcd", 'z', 4) == NULL, 1); /* Not found. */ - (void) strcpy(one, "abcd"); - check(memchr(one, 'c', 4) == one+2, 2); /* Basic test. */ - check(memchr(one, ~0xff|'c', 4) == one+2, 2); /* ignore highorder bits. */ - check(memchr(one, 'd', 4) == one+3, 3); /* End of string. */ - check(memchr(one, 'a', 4) == one, 4); /* Beginning. */ - check(memchr(one, '\0', 5) == one+4, 5); /* Finding NUL. */ - (void) strcpy(one, "ababa"); - check(memchr(one, 'b', 5) == one+1, 6); /* Finding first. */ - check(memchr(one, 'b', 0) == NULL, 7); /* Zero count. */ - check(memchr(one, 'a', 1) == one, 8); /* Singleton case. */ - (void) strcpy(one, "a\203b"); - check(memchr(one, 0203, 3) == one+1, 9); /* Unsignedness. */ - - /* now test all possible alignment and length combinations to catch - bugs due to unrolled loops (assuming unrolling is limited to no - more than 128 byte chunks: */ - { - char buf[128 + sizeof(long)]; - long align, len, i, pos; - - for (align = 0; align < (long) sizeof(long); ++align) { - for (len = 0; len < (long) (sizeof(buf) - align); ++len) { - for (i = 0; i < len; ++i) { - buf[align + i] = 'x'; /* don't depend on memset... */ - } - for (pos = 0; pos < len; ++pos) { -#if 0 - printf("align %d, len %d, pos %d\n", align, len, pos); -#endif - check(memchr(buf + align, 'x', len) == buf + align + pos, 10); - check(memchr(buf + align, 'x', pos) == NULL, 11); - buf[align + pos] = '-'; - } - } - } - } -} - -static void -test_memcpy (void) -{ - int i; - it = "memcpy"; - check(memcpy(one, "abc", 4) == one, 1); /* Returned value. */ - equal(one, "abc", 2); /* Did the copy go right? */ - - (void) strcpy(one, "abcdefgh"); - (void) memcpy(one+1, "xyz", 2); - equal(one, "axydefgh", 3); /* Basic test. */ - - (void) strcpy(one, "abc"); - (void) memcpy(one, "xyz", 0); - equal(one, "abc", 4); /* Zero-length copy. */ - - (void) strcpy(one, "hi there"); - (void) strcpy(two, "foo"); - (void) memcpy(two, one, 9); - equal(two, "hi there", 5); /* Just paranoia. */ - equal(one, "hi there", 6); /* Stomped on source? */ - - for (i = 0; i < 16; i++) - { - const char *x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; - strcpy (one, x); - check (memcpy (one + i, "hi there", 9) == one + i, - 7 + (i * 6)); /* Unaligned destination. */ - check (memcmp (one, x, i) == 0, 8 + (i * 6)); /* Wrote under? */ - equal (one + i, "hi there", 9 + (i * 6)); - check (one[i + 9] == 'x', 10 + (i * 6)); /* Wrote over? */ - check (memcpy (two, one + i, 9) == two, - 11 + (i * 6)); /* Unaligned source. */ - equal (two, "hi there", 12 + (i * 6)); - } -} - -static void -test_mempcpy (void) -{ - int i; - it = "mempcpy"; - check(mempcpy(one, "abc", 4) == one + 4, 1); /* Returned value. */ - equal(one, "abc", 2); /* Did the copy go right? */ - - (void) strcpy(one, "abcdefgh"); - (void) mempcpy(one+1, "xyz", 2); - equal(one, "axydefgh", 3); /* Basic test. */ - - (void) strcpy(one, "abc"); - (void) mempcpy(one, "xyz", 0); - equal(one, "abc", 4); /* Zero-length copy. */ - - (void) strcpy(one, "hi there"); - (void) strcpy(two, "foo"); - (void) mempcpy(two, one, 9); - equal(two, "hi there", 5); /* Just paranoia. */ - equal(one, "hi there", 6); /* Stomped on source? */ - - for (i = 0; i < 16; i++) - { - const char *x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; - strcpy (one, x); - check (mempcpy (one + i, "hi there", 9) == one + i + 9, - 7 + (i * 6)); /* Unaligned destination. */ - check (memcmp (one, x, i) == 0, 8 + (i * 6)); /* Wrote under? */ - equal (one + i, "hi there", 9 + (i * 6)); - check (one[i + 9] == 'x', 10 + (i * 6)); /* Wrote over? */ - check (mempcpy (two, one + i, 9) == two + 9, - 11 + (i * 6)); /* Unaligned source. */ - equal (two, "hi there", 12 + (i * 6)); - } -} - -static void -test_memmove (void) -{ - it = "memmove"; - check(memmove(one, "abc", 4) == one, 1); /* Returned value. */ - equal(one, "abc", 2); /* Did the copy go right? */ - - (void) strcpy(one, "abcdefgh"); - (void) memmove(one+1, "xyz", 2); - equal(one, "axydefgh", 3); /* Basic test. */ - - (void) strcpy(one, "abc"); - (void) memmove(one, "xyz", 0); - equal(one, "abc", 4); /* Zero-length copy. */ - - (void) strcpy(one, "hi there"); - (void) strcpy(two, "foo"); - (void) memmove(two, one, 9); - equal(two, "hi there", 5); /* Just paranoia. */ - equal(one, "hi there", 6); /* Stomped on source? */ - - (void) strcpy(one, "abcdefgh"); - (void) memmove(one+1, one, 9); - equal(one, "aabcdefgh", 7); /* Overlap, right-to-left. */ - - (void) strcpy(one, "abcdefgh"); - (void) memmove(one+1, one+2, 7); - equal(one, "acdefgh", 8); /* Overlap, left-to-right. */ - - (void) strcpy(one, "abcdefgh"); - (void) memmove(one, one, 9); - equal(one, "abcdefgh", 9); /* 100% overlap. */ -} - -static void -test_memccpy (void) -{ - /* First test like memcpy, then the search part The SVID, the only - place where memccpy is mentioned, says overlap might fail, so we - don't try it. Besides, it's hard to see the rationale for a - non-left-to-right memccpy. */ - it = "memccpy"; - check(memccpy(one, "abc", 'q', 4) == NULL, 1); /* Returned value. */ - equal(one, "abc", 2); /* Did the copy go right? */ - - (void) strcpy(one, "abcdefgh"); - (void) memccpy(one+1, "xyz", 'q', 2); - equal(one, "axydefgh", 3); /* Basic test. */ - - (void) strcpy(one, "abc"); - (void) memccpy(one, "xyz", 'q', 0); - equal(one, "abc", 4); /* Zero-length copy. */ - - (void) strcpy(one, "hi there"); - (void) strcpy(two, "foo"); - (void) memccpy(two, one, 'q', 9); - equal(two, "hi there", 5); /* Just paranoia. */ - equal(one, "hi there", 6); /* Stomped on source? */ - - (void) strcpy(one, "abcdefgh"); - (void) strcpy(two, "horsefeathers"); - check(memccpy(two, one, 'f', 9) == two+6, 7); /* Returned value. */ - equal(one, "abcdefgh", 8); /* Source intact? */ - equal(two, "abcdefeathers", 9); /* Copy correct? */ - - (void) strcpy(one, "abcd"); - (void) strcpy(two, "bumblebee"); - check(memccpy(two, one, 'a', 4) == two+1, 10); /* First char. */ - equal(two, "aumblebee", 11); - check(memccpy(two, one, 'd', 4) == two+4, 12); /* Last char. */ - equal(two, "abcdlebee", 13); - (void) strcpy(one, "xyz"); - check(memccpy(two, one, 'x', 1) == two+1, 14); /* Singleton. */ - equal(two, "xbcdlebee", 15); -} - -static void -test_memset (void) -{ - int i; - - it = "memset"; - (void) strcpy(one, "abcdefgh"); - check(memset(one+1, 'x', 3) == one+1, 1); /* Return value. */ - equal(one, "axxxefgh", 2); /* Basic test. */ - - (void) memset(one+2, 'y', 0); - equal(one, "axxxefgh", 3); /* Zero-length set. */ - - (void) memset(one+5, 0, 1); - equal(one, "axxxe", 4); /* Zero fill. */ - equal(one+6, "gh", 5); /* And the leftover. */ - - (void) memset(one+2, 010045, 1); - equal(one, "ax\045xe", 6); /* Unsigned char convert. */ - - /* Non-8bit fill character. */ - memset (one, 0x101, sizeof (one)); - for (i = 0; i < (int) sizeof (one); ++i) - check (one[i] == '\01', 7); - - /* Test for more complex versions of memset, for all alignments and - lengths up to 256. This test takes a little while, perhaps it should - be made weaker? */ - { - char data[512]; - int j; - int k; - int c; - - for (i = 0; i < 512; i++) - data[i] = 'x'; - for (c = 0; c <= 'y'; c += 'y') /* check for memset(,0,) and - memset(,'y',) */ - for (j = 0; j < 256; j++) - for (i = 0; i < 256; i++) - { - memset (data + i, c, j); - for (k = 0; k < i; k++) - if (data[k] != 'x') - goto fail; - for (k = i; k < i+j; k++) - { - if (data[k] != c) - goto fail; - data[k] = 'x'; - } - for (k = i+j; k < 512; k++) - if (data[k] != 'x') - goto fail; - continue; - - fail: - check (0, 8 + i + j * 256 + (c != 0) * 256 * 256); - } - } -} - -static void -test_bcopy (void) -{ -#ifdef __TEST_SUSV3_LEGACY__ - /* Much like memcpy. Berklix manual is silent about overlap, so - don't test it. */ - it = "bcopy"; - (void) bcopy("abc", one, 4); - equal(one, "abc", 1); /* Simple copy. */ - - (void) strcpy(one, "abcdefgh"); - (void) bcopy("xyz", one+1, 2); - equal(one, "axydefgh", 2); /* Basic test. */ - - (void) strcpy(one, "abc"); - (void) bcopy("xyz", one, 0); - equal(one, "abc", 3); /* Zero-length copy. */ - - (void) strcpy(one, "hi there"); - (void) strcpy(two, "foo"); - (void) bcopy(one, two, 9); - equal(two, "hi there", 4); /* Just paranoia. */ - equal(one, "hi there", 5); /* Stomped on source? */ -#endif -} - -static void -test_bzero (void) -{ -#ifdef __TEST_SUSV3_LEGACY__ - it = "bzero"; - (void) strcpy(one, "abcdef"); - bzero(one+2, 2); - equal(one, "ab", 1); /* Basic test. */ - equal(one+3, "", 2); - equal(one+4, "ef", 3); - - (void) strcpy(one, "abcdef"); - bzero(one+2, 0); - equal(one, "abcdef", 4); /* Zero-length copy. */ -#endif -} - -static void -test_strndup (void) -{ - char *p, *q; - it = "strndup"; - p = strndup("abcdef", 12); - check(p != NULL, 1); - if (p != NULL) - { - equal(p, "abcdef", 2); - q = strndup(p + 1, 2); - check(q != NULL, 3); - if (q != NULL) - equal(q, "bc", 4); - free (q); - } - free (p); - p = strndup("abc def", 3); - check(p != NULL, 5); - if (p != NULL) - equal(p, "abc", 6); - free (p); -} - -static void -test_bcmp (void) -{ -#ifdef __TEST_SUSV3_LEGACY__ - it = "bcmp"; - check(bcmp("a", "a", 1) == 0, 1); /* Identity. */ - check(bcmp("abc", "abc", 3) == 0, 2); /* Multicharacter. */ - check(bcmp("abcd", "abce", 4) != 0, 3); /* Honestly unequal. */ - check(bcmp("abce", "abcd", 4) != 0, 4); - check(bcmp("alph", "beta", 4) != 0, 5); - check(bcmp("abce", "abcd", 3) == 0, 6); /* Count limited. */ - check(bcmp("abc", "def", 0) == 0, 8); /* Zero count. */ -#endif -} - -static void -test_strerror (void) -{ - it = "strerror"; - check(strerror(EDOM) != 0, 1); - check(strerror(ERANGE) != 0, 2); - check(strerror(ENOENT) != 0, 3); -} - -static void -test_strcasecmp (void) -{ - it = "strcasecmp"; - /* Note that the locale is "C". */ - check(strcasecmp("a", "a") == 0, 1); - check(strcasecmp("a", "A") == 0, 2); - check(strcasecmp("A", "a") == 0, 3); - check(strcasecmp("a", "b") < 0, 4); - check(strcasecmp("c", "b") > 0, 5); - check(strcasecmp("abc", "AbC") == 0, 6); - check(strcasecmp("0123456789", "0123456789") == 0, 7); - check(strcasecmp("", "0123456789") < 0, 8); - check(strcasecmp("AbC", "") > 0, 9); - check(strcasecmp("AbC", "A") > 0, 10); - check(strcasecmp("AbC", "Ab") > 0, 11); - check(strcasecmp("AbC", "ab") > 0, 12); -} - -static void -test_strncasecmp (void) -{ - it = "strncasecmp"; - /* Note that the locale is "C". */ - check(strncasecmp("a", "a", 5) == 0, 1); - check(strncasecmp("a", "A", 5) == 0, 2); - check(strncasecmp("A", "a", 5) == 0, 3); - check(strncasecmp("a", "b", 5) < 0, 4); - check(strncasecmp("c", "b", 5) > 0, 5); - check(strncasecmp("abc", "AbC", 5) == 0, 6); - check(strncasecmp("0123456789", "0123456789", 10) == 0, 7); - check(strncasecmp("", "0123456789", 10) < 0, 8); - check(strncasecmp("AbC", "", 5) > 0, 9); - check(strncasecmp("AbC", "A", 5) > 0, 10); - check(strncasecmp("AbC", "Ab", 5) > 0, 11); - check(strncasecmp("AbC", "ab", 5) > 0, 12); - check(strncasecmp("0123456789", "AbC", 0) == 0, 13); - check(strncasecmp("AbC", "abc", 1) == 0, 14); - check(strncasecmp("AbC", "abc", 2) == 0, 15); - check(strncasecmp("AbC", "abc", 3) == 0, 16); - check(strncasecmp("AbC", "abcd", 3) == 0, 17); - check(strncasecmp("AbC", "abcd", 4) < 0, 18); - check(strncasecmp("ADC", "abcd", 1) == 0, 19); - check(strncasecmp("ADC", "abcd", 2) > 0, 20); -} - -int -main (void) -{ - int status; - - /* Test strcmp first because we use it to test other things. */ - test_strcmp (); - - /* Test strcpy next because we need it to set up other tests. */ - test_strcpy (); - - /* A closely related function is stpcpy. */ - test_stpcpy (); - - /* stpncpy. */ - test_stpncpy (); - - /* strcat. */ - test_strcat (); - - /* strncat. */ - test_strncat (); - - /* strlcat. */ - test_strlcat (); - - /* strncmp. */ - test_strncmp (); - - /* strncpy. */ - test_strncpy (); - - /* strlcpy. */ - test_strlcpy (); - - /* strlen. */ - test_strlen (); - - /* strnlen. */ - test_strnlen (); - - /* strchr. */ - test_strchr (); - - /* strchrnul. */ - test_strchrnul (); - - /* rawmemchr. */ - test_rawmemchr (); - - /* index - just like strchr. */ - test_index (); - - /* strrchr. */ - test_strrchr (); - - /* memrchr. */ - test_memrchr (); - - /* rindex - just like strrchr. */ - test_rindex (); - - /* strpbrk - somewhat like strchr. */ - test_strpbrk (); - - /* strstr - somewhat like strchr. */ - test_strstr (); - - /* strspn. */ - test_strspn (); - - /* strcspn. */ - test_strcspn (); - - /* strtok - the hard one. */ - test_strtok (); - - /* strtok_r. */ - test_strtok_r (); - - /* strsep. */ - test_strsep (); - - /* memcmp. */ - test_memcmp (); - - /* memchr. */ - test_memchr (); - - /* memcpy - need not work for overlap. */ - test_memcpy (); - - /* memmove - must work on overlap. */ - test_memmove (); - - /* mempcpy */ - test_mempcpy (); - - /* memccpy. */ - test_memccpy (); - - /* memset. */ - test_memset (); - - /* bcopy. */ - test_bcopy (); - - /* bzero. */ - test_bzero (); - - /* bcmp - somewhat like memcmp. */ - test_bcmp (); - - /* strndup. */ - test_strndup (); - - /* strerror - VERY system-dependent. */ - test_strerror (); - - /* strcasecmp. Without locale dependencies. */ - test_strcasecmp (); - - /* strncasecmp. Without locale dependencies. */ - test_strncasecmp (); - - if (errors == 0) - { - status = EXIT_SUCCESS; - puts("No errors."); - } - else - { - status = EXIT_FAILURE; - printf("%Zd errors.\n", errors); - } - - return status; -} diff --git a/test/string/tst-bswap.c b/test/string/tst-bswap.c deleted file mode 100644 index 52a271814..000000000 --- a/test/string/tst-bswap.c +++ /dev/null @@ -1,73 +0,0 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper . - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - -extern unsigned long long int wash (unsigned long long int a); - -int -main (void) -{ - int result = 0; - - /* Test the functions with constant arguments. */ - if (bswap_16 (0x1234) != 0x3412) - { - puts ("bswap_16 (constant) flunked"); - result = 1; - } - if (bswap_32 (0x12345678) != 0x78563412) - { - puts ("bswap_32 (constant) flunked"); - result = 1; - } - if (bswap_64 (0x1234567890abcdefULL) != 0xefcdab9078563412ULL) - { - puts ("bswap_64 (constant) flunked"); - result = 1; - } - - /* Test the functions with non-constant arguments. */ - if (bswap_16 (wash (0x1234)) != 0x3412) - { - puts ("bswap_16 (non-constant) flunked"); - result = 1; - } - if (bswap_32 (wash (0x12345678)) != 0x78563412) - { - puts ("bswap_32 (non-constant) flunked"); - result = 1; - } - if (bswap_64 (wash (0x1234567890abcdefULL)) != 0xefcdab9078563412ULL) - { - puts ("bswap_64 (non-constant) flunked"); - result = 1; - } - - return result; -} - - -unsigned long long int -wash (unsigned long long int a) -{ - /* Do nothing. This function simply exists to avoid that the compiler - regards the argument to the bswap_*() functions as constant. */ - return a + 0; -} diff --git a/test/string/tst-inlcall.c b/test/string/tst-inlcall.c deleted file mode 100644 index 7e2eba37e..000000000 --- a/test/string/tst-inlcall.c +++ /dev/null @@ -1,82 +0,0 @@ -/* Tester for calling inline string functions. - Copyright (C) 1998, 2000, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif - -/* Make sure we test the optimized inline functions. */ -#define __USE_STRING_INLINES 1 - -#include -#include -#include -#include -#include -#include - - -int -main (void) -{ - int status; - int errors = 0; - char buf1[1000]; - char *cp; - char ch; - - cp = strcpy (buf1, "hello world"); - if (strcmp ("hello world", cp++) != 0) - { - puts ("strcmp test 1 failed"); - ++errors; - } - - cp = buf1; - if (strcmp (cp++, "hello world") != 0) - { - puts ("strcmp test 2 failed"); - ++errors; - } - - ch = 'h'; - if (strchr ("hello world", ch++) == NULL) - { - puts ("strchr test 1 failed"); - ++errors; - } - - const char * const hw = "hello world"; - if (strpbrk (hw, "o") - hw != 4) - { - puts ("strpbrk test 1 failed"); - ++errors; - } - - if (errors == 0) - { - status = EXIT_SUCCESS; - puts ("No errors."); - } - else - { - status = EXIT_FAILURE; - printf ("%d errors.\n", errors); - } - return status; -} diff --git a/test/string/tst-memmove.c b/test/string/tst-memmove.c deleted file mode 100644 index 2adc52740..000000000 --- a/test/string/tst-memmove.c +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2016 Rene Nielsen - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include -#include - -#define LEN 1024 - -int main(int argc, char *argv[]) -{ - unsigned char a[LEN], exp; - int i, move_len, move_src, err = 0; - - // Fill the array with increasing values from 0 to LEN - 1 (wrap is fine) - for (i = 0; i < LEN; i++) { - a[i] = i; - } - - // move_src is the index into the array to move from. - // move_len is the number of indices to move. Here, we take the remainder. - move_src = LEN / 64; - move_len = LEN - move_src; - - printf("Moving %d entries from index %d to 0\n", move_len, move_src); - memmove(a, &a[move_src], sizeof(a[0]) * move_len); - - // Check that the memmove went well - for (i = 0; i < LEN; i++) { - // Expect that the first #move_len entries contain increasing values - // starting at #move_src and the last #move_src entries are untouched. - exp = i >= move_len ? i : i + move_src; - if (a[i] != exp) { - printf("Error: memmove() failed. Expected a[%d] = %u, got %u\n", i, exp, a[i]); - err = 1; - } - } - - if (!err) { - printf("memmove() succeeded\n"); - } - - return err; -} - diff --git a/test/string/tst-strlen.c b/test/string/tst-strlen.c deleted file mode 100644 index a1e115927..000000000 --- a/test/string/tst-strlen.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Make sure we don't test the optimized inline functions if we want to - test the real implementation. */ -#undef __USE_STRING_INLINES - -#include -#include - -int -main(int argc, char *argv[]) -{ - static const size_t lens[] = { 0, 1, 0, 2, 0, 1, 0, 3, - 0, 1, 0, 2, 0, 1, 0, 4 }; - char basebuf[24 + 32]; - size_t base; - - for (base = 0; base < 32; ++base) - { - char *buf = basebuf + base; - size_t words; - - for (words = 0; words < 4; ++words) - { - size_t last; - memset (buf, 'a', words * 4); - - for (last = 0; last < 16; ++last) - { - buf[words * 4 + 0] = (last & 1) != 0 ? 'b' : '\0'; - buf[words * 4 + 1] = (last & 2) != 0 ? 'c' : '\0'; - buf[words * 4 + 2] = (last & 4) != 0 ? 'd' : '\0'; - buf[words * 4 + 3] = (last & 8) != 0 ? 'e' : '\0'; - buf[words * 4 + 4] = '\0'; - - if (strlen (buf) != words * 4 + lens[last] - || strnlen (buf, -1) != words * 4 + lens[last]) - { - printf ("failed for base=%Zu, words=%Zu, and last=%Zu\n", - base, words, last); - return 1; - } - } - } - } - return 0; -} diff --git a/test/string/tst-strtok.c b/test/string/tst-strtok.c deleted file mode 100644 index 7e34aeefa..000000000 --- a/test/string/tst-strtok.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Testcase for strtok reported by Andrew Church . */ -#include -#include - -int -main (void) -{ - char buf[1] = { 0 }; - int result = 0; - - if (strtok (buf, " ") != NULL) - { - puts ("first strtok call did not return NULL"); - result = 1; - } - else if (strtok (NULL, " ") != NULL) - { - puts ("second strtok call did not return NULL"); - result = 1; - } - - return result; -} diff --git a/test/string/tst-strxfrm.c b/test/string/tst-strxfrm.c deleted file mode 100644 index ff1b396be..000000000 --- a/test/string/tst-strxfrm.c +++ /dev/null @@ -1,80 +0,0 @@ -/* Based on a test case by Paul Eggert. */ -#include -#ifdef __UCLIBC_HAS_XLOCALE__ -#include -#include -#include -#include - - -char const string[] = ""; - - -static int -test (const char *locale) -{ - size_t bufsize; - size_t r; - size_t l; - char *buf; - locale_t loc; - int result = 0; - - if (setlocale (LC_COLLATE, locale) == NULL) - { - printf ("cannot set locale \"%s\"\n", locale); - return 1; - } - bufsize = strxfrm (NULL, string, 0) + 1; - buf = malloc (bufsize); - if (buf == NULL) - { - printf ("cannot allocate %zd bytes\n", bufsize); - return 1; - } - r = strxfrm (buf, string, bufsize); - l = strlen (buf); - if (r != l) - { - printf ("locale \"%s\": strxfrm returned %zu, strlen returned %zu\n", - locale, r, l); - result = 1; - } - - loc = newlocale (1 << LC_ALL, locale, NULL); - - r = strxfrm_l (buf, string, bufsize, loc); - l = strlen (buf); - if (r != l) - { - printf ("locale \"%s\": strxfrm_l returned %zu, strlen returned %zu\n", - locale, r, l); - result = 1; - } - - freelocale (loc); - - free (buf); - - return result; -} - - -int -main (void) -{ - int result = 0; - - result |= test ("C"); - result |= test ("en_US.ISO-8859-1"); - result |= test ("de_DE.UTF-8"); - - return result; -} - -#else -int main(void) -{ - return 0; -} -#endif diff --git a/test/termios/Makefile b/test/termios/Makefile deleted file mode 100644 index 098cca6e0..000000000 --- a/test/termios/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc termios tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/termios/termios.c b/test/termios/termios.c deleted file mode 100644 index 5fbc344c0..000000000 --- a/test/termios/termios.c +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include -#include -#include -#include -#include - -int main(int argc,char *argv[]) -{ - struct termios t; - int ret; - - printf("TCGETS = 0x%08x\n",TCGETS); - printf("sizeof(struct termios) = %ld\n",(long)sizeof(struct termios)); - - ret = ioctl(fileno(stdout),TCGETS,&t); - - if(ret<0){ - perror("ioctl"); - }else{ - printf("ioctl returned %d\n",ret); - } - - return 0; -} diff --git a/test/test-skeleton.c b/test/test-skeleton.c deleted file mode 100644 index cf136ac93..000000000 --- a/test/test-skeleton.c +++ /dev/null @@ -1,419 +0,0 @@ -/* Skeleton for test programs. - Copyright (C) 1998,2000-2004, 2005 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1998. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* The test function is normally called `do_test' and it is called - with argc and argv as the arguments. We nevertheless provide the - possibility to overwrite this name. */ -#ifndef TEST_FUNCTION -# define TEST_FUNCTION do_test (argc, argv) -#endif - -#ifndef TEST_DATA_LIMIT -# define TEST_DATA_LIMIT (64 << 20) /* Data limit (bytes) to run with. */ -#endif - -/* PID of the test itself. */ -static pid_t pid; - -/* Directory to place temporary files in. */ -static const char *test_dir; - -/* List of temporary files. */ -struct temp_name_list -{ - struct qelem q; - char *name; -} *temp_name_list; - -/* Add temporary files in list. */ -static void -__attribute__ ((unused)) -add_temp_file (const char *name) -{ - struct temp_name_list *newp - = (struct temp_name_list *) calloc (sizeof (*newp), 1); - char *newname = strdup (name); - if (newp != NULL && newname != NULL) - { - newp->name = newname; - if (temp_name_list == NULL) - temp_name_list = (struct temp_name_list *) &newp->q; - else - insque (newp, temp_name_list); - } - else - free (newp); -} - -/* Delete all temporary files. */ -static void -delete_temp_files (void) -{ - while (temp_name_list != NULL) - { - remove (temp_name_list->name); - free (temp_name_list->name); - - struct temp_name_list *next - = (struct temp_name_list *) temp_name_list->q.q_forw; - free (temp_name_list); - temp_name_list = next; - } -} - -/* Create a temporary file. Return the opened file descriptor on - success, or -1 on failure. Write the file name to *FILENAME if - FILENAME is not NULL. In this case, the caller is expected to free - *FILENAME. */ -static int -__attribute__ ((unused)) -create_temp_file (const char *base, char **filename) -{ - char *fname; - int _fd; - - fname = (char *) malloc (strlen (test_dir) + 1 + strlen (base) - + sizeof ("XXXXXX")); - if (fname == NULL) - { - puts ("out of memory"); - return -1; - } - strcpy (stpcpy (stpcpy (stpcpy (fname, test_dir), "/"), base), "XXXXXX"); - - _fd = mkstemp (fname); - if (_fd == -1) - { - printf ("cannot open temporary file '%s': %s\n", fname, strerror(errno)); - free (fname); - return -1; - } - - add_temp_file (fname); - if (filename != NULL) - *filename = fname; - else - free (fname); - - return _fd; -} - -/* Timeout handler. We kill the child and exit with an error. */ -static void -__attribute__ ((noreturn)) -signal_handler (int sig __attribute__ ((unused))) -{ - int killed = 0; - int status; - int i; - - assert (pid > 1); - /* Kill the whole process group. */ - kill (-pid, SIGKILL); - /* In case setpgid failed in the child, kill it individually too. */ - kill (pid, SIGKILL); - - /* Wait for it to terminate. */ - for (i = 0; i < 5; ++i) - { -#ifdef __UCLIBC_HAS_REALTIME__ - struct timespec ts; -#endif - killed = waitpid (pid, &status, WNOHANG|WUNTRACED); - if (killed != 0) - break; - - /* Delay, give the system time to process the kill. If the - nanosleep() call return prematurely, all the better. We - won't restart it since this probably means the child process - finally died. */ -#ifdef __UCLIBC_HAS_REALTIME__ - ts.tv_sec = 0; - ts.tv_nsec = 100000000; - nanosleep (&ts, NULL); -#else - /* No nanosleep, just sleep 1s instead of 0.1s */ - sleep(1); -#endif - } - if (killed != 0 && killed != pid) - { - perror ("Failed to kill test process"); - exit (1); - } - -#ifdef CLEANUP_HANDLER - CLEANUP_HANDLER; -#endif - - if (sig == SIGINT) - { - signal (sig, SIG_DFL); - raise (sig); - } - - /* If we expected this signal: good! */ -#ifdef EXPECTED_SIGNAL - if (EXPECTED_SIGNAL == SIGALRM) - exit (0); -#endif - - if (killed == 0 || (WIFSIGNALED (status) && WTERMSIG (status) == SIGKILL)) - fputs ("Timed out: killed the child process\n", stderr); - else if (WIFSTOPPED (status)) - fprintf (stderr, "Timed out: the child process was %s\n", - strsignal (WSTOPSIG (status))); - else if (WIFSIGNALED (status)) - fprintf (stderr, "Timed out: the child process got signal %s\n", - strsignal (WTERMSIG (status))); - else - fprintf (stderr, "Timed out: killed the child process but it exited %d\n", - WEXITSTATUS (status)); - - /* Exit with an error. */ - exit (1); -} - -#ifdef __XXX_HANDLE_CTRL_C -static void -__attribute__ ((noreturn)) -handler_killpid(int sig) -{ - kill(pid, SIGKILL); /* kill test */ - signal(sig, SIG_DFL); - raise(sig); /* kill ourself */ - _exit(128 + sig); /* paranoia */ -} -#endif - -/* We provide the entry point here. */ -int -main (int argc, char *argv[]) -{ -#ifdef __ARCH_USE_MMU__ - int direct = 0; /* Directly call the test function? */ -#else - int direct = 1; -#endif - int status; - int opt; - unsigned int timeoutfactor = 1; - pid_t termpid; - char *envstr_timeoutfactor; - - /* Make uses of freed and uninitialized memory known. */ -#ifdef __MALLOC_STANDARD__ -#ifndef M_PERTURB -# define M_PERTURB -6 -#endif - mallopt (M_PERTURB, 42); -#endif - -#ifdef STDOUT_UNBUFFERED - setbuf (stdout, NULL); -#endif - -# ifndef CMDLINE_OPTIONS -# define CMDLINE_OPTIONS "" -# endif - while ((opt = getopt (argc, argv, "+dt:" CMDLINE_OPTIONS)) >= 0) - switch (opt) - { - case '?': - exit (1); - case 'd': - direct = 1; - break; - case 't': - test_dir = optarg; - break; -#ifdef CMDLINE_PROCESS - CMDLINE_PROCESS -#endif - } - - /* If set, read the test TIMEOUTFACTOR value from the environment. - This value is used to scale the default test timeout values. */ - envstr_timeoutfactor = getenv ("TIMEOUTFACTOR"); - if (envstr_timeoutfactor != NULL) - { - char *envstr_conv = envstr_timeoutfactor; - unsigned long int env_fact; - - env_fact = strtoul (envstr_timeoutfactor, &envstr_conv, 0); - if (*envstr_conv == '\0' && envstr_conv != envstr_timeoutfactor) - timeoutfactor = MAX (env_fact, 1); - } - - /* Set TMPDIR to specified test directory. */ - if (test_dir != NULL) - { - setenv ("TMPDIR", test_dir, 1); - - if (chdir (test_dir) < 0) - { - perror ("chdir"); - exit (1); - } - } - else - { - test_dir = getenv ("TMPDIR"); - if (test_dir == NULL || test_dir[0] == '\0') - test_dir = "/tmp"; - } - - /* Make sure we see all message, even those on stdout. */ - setvbuf (stdout, NULL, _IONBF, 0); - - /* make sure temporary files are deleted. */ - atexit (delete_temp_files); - - /* Correct for the possible parameters. */ - argv[optind - 1] = argv[0]; - argv += optind - 1; - argc -= optind - 1; - - /* Call the initializing function, if one is available. */ -#ifdef PREPARE - PREPARE (argc, argv); -#endif - - /* If we are not expected to fork run the function immediately. */ - if (direct) - return TEST_FUNCTION; - - /* Set up the test environment: - - prevent core dumps - - set up the timer - - fork and execute the function. */ - -#if defined __ARCH_USE_MMU__ || ! defined __UCLIBC__ - pid = fork (); - if (pid == 0) - { - /* This is the child. */ -#ifdef RLIMIT_CORE - /* Try to avoid dumping core. */ - struct rlimit core_limit; - core_limit.rlim_cur = 0; - core_limit.rlim_max = 0; - setrlimit (RLIMIT_CORE, &core_limit); -#endif - - /* We put the test process in its own pgrp so that if it bogusly - generates any job control signals, they won't hit the whole build. */ - if (setpgid (0, 0) != 0) - printf ("Failed to set the process group ID: %m\n"); - - /* Execute the test function and exit with the return value. */ - exit (TEST_FUNCTION); - } - else if (pid < 0) -#endif - { - perror ("Cannot fork test program"); - exit (1); - } - -#ifdef __XXX_HANDLE_CTRL_C - signal (SIGTERM, handler_killpid); - signal (SIGINT, handler_killpid); - signal (SIGQUIT, handler_killpid); -#endif - - /* Set timeout. */ -#ifndef TIMEOUT - /* Default timeout is two seconds. */ -# define TIMEOUT 2 -#endif - signal (SIGALRM, signal_handler); - alarm (TIMEOUT * timeoutfactor); - - /* Make sure we clean up if the wrapper gets interrupted. */ - signal (SIGINT, signal_handler); - - /* Wait for the regular termination. */ - termpid = TEMP_FAILURE_RETRY (waitpid (pid, &status, 0)); - if (termpid == -1) - { - printf ("Waiting for test program failed: %s\n", strerror(errno)); - exit (1); - } - if (termpid != pid) - { - printf ("Oops, wrong test program terminated: expected %ld, got %ld\n", - (long int) pid, (long int) termpid); - exit (1); - } - -#ifndef EXPECTED_SIGNAL - /* We don't expect any signal. */ -# define EXPECTED_SIGNAL 0 -#endif - if (WTERMSIG (status) != EXPECTED_SIGNAL) - { - if (EXPECTED_SIGNAL != 0) - { - if (WTERMSIG (status) == 0) - fprintf (stderr, - "Expected signal '%s' from child, got none\n", - strsignal (EXPECTED_SIGNAL)); - else - fprintf (stderr, - "Incorrect signal from child: got `%s', need `%s'\n", - strsignal (WTERMSIG (status)), - strsignal (EXPECTED_SIGNAL)); - } - else - fprintf (stderr, "Didn't expect signal from child: got `%s'\n", - strsignal (WTERMSIG (status))); - exit (1); - } - - /* Simply exit with the return value of the test. */ -#ifndef EXPECTED_STATUS - return WEXITSTATUS (status); -#else - if (WEXITSTATUS (status) != EXPECTED_STATUS) - { - fprintf (stderr, "Expected status %d, got %d\n", - EXPECTED_STATUS, WEXITSTATUS (status)); - exit (1); - } - - return 0; -#endif -} diff --git a/test/testsuite.h b/test/testsuite.h deleted file mode 100644 index 84c78156a..000000000 --- a/test/testsuite.h +++ /dev/null @@ -1,101 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* - * Some simple macros for use in test applications. - * Copyright (C) 2000-2006 by Erik Andersen - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#ifndef TESTSUITE_H -#define TESTSUITE_H - -#ifdef __NO_TESTCODE__ -extern size_t test_number; -#endif - -extern void init_testsuite(const char* testname); -extern void done_testing(void) __attribute__((noreturn)); -extern void success_msg(int result, const char* command); -extern void error_msg(int result, int line, const char* file, const char* command); - -#ifndef __NO_TESTCODE__ - -size_t test_number = 0; -static int failures = 0; - -void error_msg(int result, int line, const char* file, const char* command) -{ - failures++; - - printf("\nFAILED TEST %lu: \n\t%s\nResult: %d", - (unsigned long)test_number, command, result); - printf("AT LINE: %d, FILE: %s\n\n", line, file); -} - -void success_msg(int result __attribute__((unused)), const char* command __attribute__((unused))) -{ -#if 0 - printf("passed test: %s == 0\n", command); -#endif -} - -void done_testing(void) -{ - if (0 < failures) { - printf("Failed %d tests\n", failures); - exit(EXIT_FAILURE); - } else { - printf("All functions tested sucessfully\n"); - exit(EXIT_SUCCESS); - } -} - -void init_testsuite(const char* testname) -{ - printf("%s", testname); - test_number = 0; - failures = 0; -#if !defined(__UCLIBC__) || defined(__UCLIBC_DYNAMIC_ATEXIT__) - atexit(done_testing); -#endif -} - -#endif /* __NO_TESTCODE__ */ - - -#define TEST_STRING_OUTPUT(command, expected_result) \ - do { \ - int result = strcmp(command, expected_result); \ - test_number++; \ - if (result == expected_result) { \ - success_msg(result, "command"); \ - } else { \ - error_msg(result, __LINE__, __FILE__, command); \ - }; \ - } while (0) - -#define TEST_NUMERIC(command, expected_result) \ - do { \ - int result = (command); \ - test_number++; \ - if (result == expected_result) { \ - success_msg(result, # command); \ - } else { \ - error_msg(result, __LINE__, __FILE__, # command); \ - }; \ - } while (0) - -#define TEST(command) \ - do { \ - int result = (command); \ - test_number++; \ - if (result == 1) { \ - success_msg(result, # command); \ - } else { \ - error_msg(result, __LINE__, __FILE__, # command); \ - }; \ - } while (0) - -#define STR_CMD(cmd) cmd - -#endif /* TESTSUITE_H */ diff --git a/test/time/Makefile b/test/time/Makefile deleted file mode 100644 index fed45697b..000000000 --- a/test/time/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc time tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/time/Makefile.in b/test/time/Makefile.in deleted file mode 100644 index 4eeb74161..000000000 --- a/test/time/Makefile.in +++ /dev/null @@ -1,22 +0,0 @@ -# uClibc time tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -TESTS_DISABLED := bug-asctime bug-asctime_r time tst-mktime2 tst-posixtz \ - tst-strftime tst-strptime tst-timezone - -ifeq ($(TARGET_avr32),y) -TESTS_DISABLED += tst-timerfd -endif - -ifneq ($(UCLIBC_HAS_XLOCALE),y) -TESTS_DISABLED += tst-ftime_l -endif - -ifneq ($(UCLIBC_HAS_WCHAR)$(UCLIBC_HAS_LOCALE),yy) -TESTS_DISABLED += tst_wcsftime -endif - -CFLAGS_tst-strptime2 := -std=c99 - -DODIFF_futimens1 := 1 -DODIFF_tst_wcsftime := 1 diff --git a/test/time/bug-asctime.c b/test/time/bug-asctime.c deleted file mode 100644 index 149e4e0a2..000000000 --- a/test/time/bug-asctime.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Note: we disable this on uClibc because we dont bother - * verifying if the year is sane ... we just return ???? - * for the year value ... - */ - -#include -#include -#include -#include - - -static int -do_test (void) -{ - int result = 0; - time_t t = time (NULL); - struct tm *tp = localtime (&t); - tp->tm_year = INT_MAX; - errno = 0; - char *s = asctime (tp); - if (s != NULL || errno != EOVERFLOW) - { - printf ("asctime did not fail correctly: s=%p, wanted %p; errno=%i, wanted %i\n", - s, NULL, errno, EOVERFLOW); - result = 1; - } - char buf[1000]; - errno = 0; - s = asctime_r (tp, buf); - if (s != NULL || errno != EOVERFLOW) - { - printf ("asctime_r did not fail correctly: s=%p, wanted %p; errno=%i, wanted %i\n", - s, NULL, errno, EOVERFLOW); - result = 1; - } - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/time/bug-asctime_r.c b/test/time/bug-asctime_r.c deleted file mode 100644 index 1fcc4659f..000000000 --- a/test/time/bug-asctime_r.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Note: we disable this on uClibc because we dont bother - * verifying if the year is sane ... we just return ???? - * for the year value ... - */ - -#include -#include -#include -#include - - -static int -do_test (void) -{ - int result = 0; - time_t t = time (NULL); - struct tm *tp = localtime (&t); - tp->tm_year = 10000 - 1900; - char buf[1000]; - errno = 0; - buf[26] = '\xff'; - char *s = asctime_r (tp, buf); - if (s != NULL || errno != EOVERFLOW) - { - puts ("asctime_r did not fail correctly"); - result = 1; - } - if (buf[26] != '\xff') - { - puts ("asctime_r overwrote 27th byte in buffer"); - result = 1; - } - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/time/clocktest.c b/test/time/clocktest.c deleted file mode 100644 index a5b2c09e7..000000000 --- a/test/time/clocktest.c +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include -#include -#include -#include - -volatile int gotit = 0; - -static void -alarm_handler (int signum) -{ - gotit = 1; -} - - -int -main (int argc, char ** argv) -{ - clock_t start, stop; - - if (signal(SIGALRM, alarm_handler) == SIG_ERR) - { - perror ("signal"); - exit (1); - } - alarm(1); - start = clock (); - while (!gotit); - stop = clock (); - - printf ("%ld clock ticks per second (start=%ld,stop=%ld)\n", - stop - start, start, stop); - printf ("CLOCKS_PER_SEC=%ld, sysconf(_SC_CLK_TCK)=%ld\n", - CLOCKS_PER_SEC, sysconf(_SC_CLK_TCK)); - return 0; -} diff --git a/test/time/test_time.c b/test/time/test_time.c deleted file mode 100644 index ab2931895..000000000 --- a/test/time/test_time.c +++ /dev/null @@ -1,115 +0,0 @@ -/* Copyright (C) 1991, 1992, 1994, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - - -int -main (int argc, char **argv) -{ - time_t t; - register struct tm *tp; - struct tm tbuf; - int lose = 0; - - --argc; - ++argv; - - do - { - char buf[BUFSIZ]; - if (argc > 0) - { - static char tzenvbuf[BUFSIZ]; - sprintf(tzenvbuf, "TZ=%s", *argv); - if (putenv(tzenvbuf)) - { - puts("putenv failed."); - lose = 1; - } - else - puts (tzenvbuf); - } - tzset(); - tbuf.tm_year = 72; - tbuf.tm_mon = 0; - tbuf.tm_mday = 31; - tbuf.tm_hour = 6; - tbuf.tm_min = 14; - tbuf.tm_sec = 50; - tbuf.tm_isdst = -1; - doit:; - t = mktime(&tbuf); - if (t == (time_t) -1) - { - puts("mktime() failed?"); - lose = 1; - } - tp = localtime(&t); - if (tp == NULL) - { - puts("localtime() failed."); - lose = 1; - } - else if (strftime(buf, sizeof(buf), "%a %b %d %X %Z %Y", tp) == 0) - { - puts("strftime() failed."); - lose = 1; - } - else - puts(buf); - if (tbuf.tm_year == 101) - { - tbuf.tm_year = 97; - tbuf.tm_mon = 0; - goto doit; - } - ++argv; - } while (--argc > 0); - - { -#define SIZE 256 - char buffer[SIZE]; - time_t curtime; - struct tm *loctime; - - curtime = time (NULL); - - loctime = localtime (&curtime); - - fputs (asctime (loctime), stdout); - - strftime (buffer, SIZE, "Today is %A, %B %d.\n", loctime); - fputs (buffer, stdout); - strftime (buffer, SIZE, "The time is %I:%M %p.\n", loctime); - fputs (buffer, stdout); - - loctime->tm_year = 72; - loctime->tm_mon = 8; - loctime->tm_mday = 12; - loctime->tm_hour = 20; - loctime->tm_min = 49; - loctime->tm_sec = 05; - curtime = mktime (loctime); - strftime (buffer, SIZE, "%D %T was %w the %jth.\n", loctime); - fputs (buffer, stdout); - } - - return (lose ? EXIT_FAILURE : EXIT_SUCCESS); -} diff --git a/test/time/time.c b/test/time/time.c deleted file mode 100644 index a4d68d50f..000000000 --- a/test/time/time.c +++ /dev/null @@ -1,76 +0,0 @@ -#include -#include -#include - -/* We use this instead of memcmp because some broken C libraries - * add additional nonstandard fields to struct tm... */ - -int tm_cmp(struct tm tm1, struct tm tm2) -{ - return tm1.tm_sec != tm2.tm_sec || - tm1.tm_min != tm2.tm_min || - tm1.tm_hour != tm2.tm_hour || - tm1.tm_mday != tm2.tm_mday || - tm1.tm_mon != tm2.tm_mon || - tm1.tm_year != tm2.tm_year || - tm1.tm_wday != tm2.tm_wday || - tm1.tm_yday != tm2.tm_yday || - tm1.tm_isdst!= tm2.tm_isdst; -} - -char *tm_str(struct tm tm) -{ - static int i; - static char b[4][64]; - i = (i+1)%4; - snprintf(b[i], sizeof b[i], - "s=%.2d m=%.2d h=%.2d mday=%.2d mon=%.2d year=%.4d wday=%d yday=%d isdst=%d", - tm.tm_sec, tm.tm_min, tm.tm_hour, - tm.tm_mday, tm.tm_mon, tm.tm_year, - tm.tm_wday, tm.tm_yday, tm.tm_isdst); - return b[i]; -} - -#define TM(ss,mm,hh,md,mo,yr,wd,yd,dst) (struct tm){ \ - .tm_sec = ss, .tm_min = mm, .tm_hour = hh, \ - .tm_mday = md, .tm_mon = mo, .tm_year = yr, \ - .tm_wday = wd, .tm_yday = yd, .tm_isdst = dst } - -#define TM_EPOCH TM(0,0,0,1,0,70,4,0,0) -#define TM_Y2038_1S TM(7,14,3,19,0,138,2,18,0) -#define TM_Y2038 TM(8,14,3,19,0,138,2,18,0) - -#define TEST_TM(r,x,m) (!tm_cmp((r),(x)) || \ -(printf(__FILE__ ":%d: %s failed:\n\tresult: %s\n\texpect: %s\n", __LINE__, \ -m, tm_str((r)), tm_str((x))), err++, 0) ) - -#define TEST(r, f, x, m) ( \ -((r) = (f)) == (x) || \ -(printf(__FILE__ ":%d: %s failed (" m ")\n", __LINE__, #f, r, x), err++, 0) ) - -int main(void) -{ - struct tm tm, *tm_p; - time_t t; - int err=0; - - putenv("TZ=GMT"); - tzset(); - - t=0; tm_p = gmtime(&t); - TEST_TM(*tm_p, TM_EPOCH, "gmtime(0)"); - - tm = TM_Y2038_1S; - t = mktime(&tm); - tm = *(gmtime(&t)); - TEST_TM(*tm_p, TM_Y2038_1S, "mktime/gmtime(Y2038-1)"); - - tm = TM_Y2038; - t = mktime(&tm); - tm = *(gmtime(&t)); - TEST_TM(*tm_p, TM_Y2038, "mktime/gmtime(Y2038)"); - - /* FIXME: set a TZ var and check DST boundary conditions */ - - return err; -} diff --git a/test/time/tst-ctime.c b/test/time/tst-ctime.c deleted file mode 100644 index 91d827aa2..000000000 --- a/test/time/tst-ctime.c +++ /dev/null @@ -1,44 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* testcase for ctime(3) with large time - * Copyright (C) 2010 David A Ramos - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include -#include -#include -#include - -#define MAX_POSITIVE(type) (~0 & ~((type) 1 << (sizeof(type)*8 - 1))) - -int do_test(int argc, char **argv) { - char *correct = 0, *s; - int status; - - /* need a very high positive number (e.g., max - 1024) */ - time_t test = MAX_POSITIVE(time_t) - 1024; - - s = asctime(localtime(&test)); - - if (s) { - // copy static buffer to heap - correct = malloc(strlen(s)+1); - strcpy(correct, s); - } - - s = ctime(&test); - - printf("ANSI:\t%suClibc:\t%s", correct, s); - - if (s != correct && strcmp(correct, s)) - status = EXIT_FAILURE; - else - status = EXIT_SUCCESS; - - if (correct) - free(correct); - - return status; -} - -#include diff --git a/test/time/tst-ftime_l.c b/test/time/tst-ftime_l.c deleted file mode 100644 index 95017f1f8..000000000 --- a/test/time/tst-ftime_l.c +++ /dev/null @@ -1,136 +0,0 @@ -#include -#include -#include -#include -#include -#ifdef __UCLIBC_HAS_XLOCALE__ -#include -#include - - -int -main (void) -{ - locale_t l; - locale_t old; - struct tm tm; - char buf[1000]; - wchar_t wbuf[1000]; - int result = 0; - size_t n; - - l = newlocale (LC_ALL_MASK, "de_DE.ISO-8859-1", NULL); - if (l == NULL) - { - puts ("newlocale failed"); - exit (1); - } - - memset (&tm, '\0', sizeof (tm)); - - tm.tm_year = 102; - tm.tm_mon = 2; - tm.tm_mday = 1; - - if (strftime (buf, sizeof (buf), "%e %^B %Y", &tm) == 0) - { - puts ("initial strftime failed"); - exit (1); - } - if (strcmp (buf, " 1 MARCH 2002") != 0) - { - printf ("initial strftime: expected \"%s\", got \"%s\"\n", - " 1 MARCH 2002", buf); - result = 1; - } - else - printf ("got \"%s\"\n", buf); - - /* Now using the extended locale model. */ - if (strftime_l (buf, sizeof (buf), "%e %^B %Y", &tm, l) == 0) - { - puts ("strftime_l failed"); - result = 1; - } - else if (strcmp (buf, " 1 M\xc4RZ 2002") != 0) - { - printf ("strftime_l: expected \"%s\", got \"%s\"\n", - " 1 M\xc4RZ 2002", buf); - result = 1; - } - else - { - setlocale (LC_ALL, "de_DE.ISO-8859-1"); - printf ("got \"%s\"\n", buf); - setlocale (LC_ALL, "C"); - } - - /* And the wide character version. */ - if (wcsftime_l (wbuf, sizeof (wbuf) / sizeof (wbuf[0]), L"%e %^B %Y", &tm, l) - == 0) - { - puts ("wcsftime_l failed"); - result = 1; - } - else if (wcscmp (wbuf, L" 1 M\x00c4RZ 2002") != 0) - { - printf ("wcsftime_l: expected \"%ls\", got \"%ls\"\n", - L" 1 M\x00c4RZ 2002", wbuf); - result = 1; - } - else - { - setlocale (LC_ALL, "de_DE.ISO-8859-1"); - printf ("got \"%ls\"\n", wbuf); - setlocale (LC_ALL, "C"); - } - - old = uselocale (l); - - n = strftime (buf, sizeof (buf), "%e %^B %Y", &tm); - - /* Switch back. */ - (void) uselocale (old); - - if (n == 0) - { - puts ("strftime after first uselocale failed"); - result = 1; - } - else if (strcmp (buf, " 1 M\xc4RZ 2002") != 0) - { - printf ("strftime in non-C locale: expected \"%s\", got \"%s\"\n", - " 1 M\xc4RZ 2002", buf); - result = 1; - } - else - { - setlocale (LC_ALL, "de_DE.ISO-8859-1"); - printf ("got \"%s\"\n", buf); - setlocale (LC_ALL, "C"); - } - - if (strftime (buf, sizeof (buf), "%e %^B %Y", &tm) == 0) - { - puts ("strftime after second uselocale failed"); - result = 1; - } - else if (strcmp (buf, " 1 MARCH 2002") != 0) - { - printf ("initial strftime: expected \"%s\", got \"%s\"\n", - " 1 MARCH 2002", buf); - result = 1; - } - else - printf ("got \"%s\"\n", buf); - - return result; -} - -#else -int main(void) -{ - puts("Test requires WCHAR support; skipping"); - return 0; -} -#endif diff --git a/test/time/tst-futimens1.c b/test/time/tst-futimens1.c deleted file mode 100644 index 2c25bd4de..000000000 --- a/test/time/tst-futimens1.c +++ /dev/null @@ -1,105 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* testcase for futimens(2) - * Copyright (C) 2009 Bernhard Reutner-Fischer - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ -#include -#include -#include -#include -#include -#include -#include - -struct -{ - char *name; /* name of file to open */ - int flags; /* flags for file descriptor */ - const struct timespec ts[2]; - int err; /* expected errno */ -} tests [] = -{ - {"futimens.tst", (O_CREAT|O_TRUNC), {{0,0},{0,0}}, 0}, - {"futimens.tst", (O_CREAT|O_TRUNC), {{99,0},{0,0}}, 0}, - {"futimens.tst", (O_CREAT|O_TRUNC), {{0,99},{0,0}}, 0}, - {"futimens.tst", (O_CREAT|O_TRUNC), {{0,0},{99,0}}, 0}, - {"futimens.tst", (O_CREAT|O_TRUNC), {{0,0},{0,99}}, 0}, - {"futimens.tst", (O_CREAT|O_TRUNC), {{11,2},{3,4}}, 0}, -}; -int do_test(int argc, char **argv) { - char *name; - int i, errors; - errors = argc - argc + 0; - unsigned has_stat_nsec = 0; - { - struct stat probe; - /* Let's attempt an educated guess if this filesystem supports - * nanosecond mtime. */ - if ((!stat(".", &probe)) && probe.st_mtim.tv_nsec) - has_stat_nsec = 1; - else if ((!stat(argv[0], &probe)) && probe.st_mtim.tv_nsec) - has_stat_nsec = 1; - } - for (i=0; i < (int) (sizeof(tests)/sizeof(tests[0])); ++i) { - int err, fd; - struct stat sb; - name = tests[i].name; - if (*name != '.') - unlink(name); - fd = open(name, tests[i].flags, 0660); - if (fd < 0) - abort(); - errno = 0; - err = futimens(fd, tests[i].ts); - if ((errno && !err) || (!errno && err)) { - err = errno; - printf("FAILED test %d (errno and return value disagree)\n", i); - ++errors; - } else - err = errno; - if (err != tests[i].err) { - printf("FAILED test %d (expected errno %d, got %d)\n", - i, tests[i].err, err); - ++errors; - continue; - } - if (stat(name, &sb) < 0) { - printf("FAILED test %d (verification)\n", i); - ++errors; - continue; - } else { - unsigned wrong = tests[i].ts[0].tv_sec != sb.st_atim.tv_sec || - tests[i].ts[0].tv_nsec != sb.st_atim.tv_nsec || - tests[i].ts[1].tv_sec != sb.st_mtim.tv_sec || - tests[i].ts[1].tv_nsec != sb.st_mtim.tv_nsec; - if (wrong) { - if (tests[i].ts[0].tv_sec != sb.st_atim.tv_sec) { - printf("FAILED test %d (access time, sec: expected %ld, got %ld)\n", - i, tests[i].ts[0].tv_sec, sb.st_atim.tv_sec); - ++errors; - } - if (tests[i].ts[0].tv_nsec != sb.st_atim.tv_nsec) { - printf("FAILED test %d (access time, nsec: expected %ld, got %ld)\n", - i, tests[i].ts[0].tv_nsec, sb.st_atim.tv_nsec); - errors += has_stat_nsec; - } - - if (tests[i].ts[1].tv_sec != sb.st_mtim.tv_sec) { - printf("FAILED test %d (modification time, sec: expected %ld, got %ld)\n", - i, tests[i].ts[1].tv_sec, sb.st_mtim.tv_sec); - ++errors; - } - if (tests[i].ts[1].tv_nsec != sb.st_mtim.tv_nsec) { - printf("FAILED test %d (modification time, nsec: expected %ld, got %ld)\n", - i, tests[i].ts[1].tv_nsec, sb.st_mtim.tv_nsec); - errors += has_stat_nsec; - } - } - } - } - if (*name != '.') - unlink(name); - printf("%d errors.\n", errors); - return (!errors) ? EXIT_SUCCESS : EXIT_FAILURE; -} -#include diff --git a/test/time/tst-mktime.c b/test/time/tst-mktime.c deleted file mode 100644 index 416a85616..000000000 --- a/test/time/tst-mktime.c +++ /dev/null @@ -1,70 +0,0 @@ -#include -#include -#include -#include - -int -main (void) -{ - struct tm time_str, *tm; - time_t t; - char daybuf[20]; - int result; - - time_str.tm_year = 2001 - 1900; - time_str.tm_mon = 7 - 1; - time_str.tm_mday = 4; - time_str.tm_hour = 0; - time_str.tm_min = 0; - time_str.tm_sec = 1; - time_str.tm_isdst = -1; - - if (mktime (&time_str) == -1) - { - (void) puts ("-unknown-"); - result = 1; - } - else - { - (void) strftime (daybuf, sizeof (daybuf), "%A", &time_str); - (void) puts (daybuf); - result = strcmp (daybuf, "Wednesday") != 0; - } - - setenv ("TZ", "EST+5", 1); -#define EVENING69 1 * 60 * 60 + 2 * 60 + 29 - t = EVENING69; - tm = localtime (&t); - if (tm == NULL) - { - (void) puts ("localtime returned NULL"); - result = 1; - } - else - { - time_str = *tm; - t = mktime (&time_str); - if (t != EVENING69) - { - printf ("mktime returned %ld, expected %d\n", - (long) t, EVENING69); - result = 1; - } - else - (void) puts ("Dec 31 1969 EST test passed"); - - setenv ("TZ", "CET-1", 1); - t = mktime (&time_str); -#define EVENING69_CET (EVENING69 - (5 - -1) * 60 * 60) - if (t != EVENING69_CET) - { - printf ("mktime returned %ld, expected %ld\n", - (long) t, (long) EVENING69_CET); - result = 1; - } - else - (void) puts ("Dec 31 1969 CET test passed"); - } - - return result; -} diff --git a/test/time/tst-mktime2.c b/test/time/tst-mktime2.c deleted file mode 100644 index 6279218cb..000000000 --- a/test/time/tst-mktime2.c +++ /dev/null @@ -1,141 +0,0 @@ -/* Test program from Paul Eggert and Tony Leneis. */ -#include -#include -#include - -static time_t time_t_max; -static time_t time_t_min; - -/* Values we'll use to set the TZ environment variable. */ -static const char *tz_strings[] = - { - (const char *) 0, "GMT0", "JST-9", - "EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" - }; -#define N_STRINGS ((int) (sizeof (tz_strings) / sizeof (tz_strings[0]))) - -/* Fail if mktime fails to convert a date in the spring-forward gap. - Based on a problem report from Andreas Jaeger. */ -static void -spring_forward_gap (void) -{ - /* glibc (up to about 1998-10-07) failed this test. */ - struct tm tm; - - /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" - instead of "TZ=America/Vancouver" in order to detect the bug even - on systems that don't support the Olson extension, or don't have the - full zoneinfo tables installed. */ - setenv ("TZ", "PST8PDT,M4.1.0,M10.5.0", 1); - - tm.tm_year = 98; - tm.tm_mon = 3; - tm.tm_mday = 5; - tm.tm_hour = 2; - tm.tm_min = 0; - tm.tm_sec = 0; - tm.tm_isdst = -1; - if (mktime (&tm) == (time_t)-1) - exit (1); -} - -static void -mktime_test1 (time_t now) -{ - struct tm *lt = localtime (&now); - if (lt && mktime (lt) != now) - exit (2); -} - -static void -mktime_test (time_t now) -{ - mktime_test1 (now); - mktime_test1 ((time_t) (time_t_max - now)); - mktime_test1 ((time_t) (time_t_min + now)); -} - -static void -irix_6_4_bug (void) -{ - /* Based on code from Ariel Faigon. */ - struct tm tm; - tm.tm_year = 96; - tm.tm_mon = 3; - tm.tm_mday = 0; - tm.tm_hour = 0; - tm.tm_min = 0; - tm.tm_sec = 0; - tm.tm_isdst = -1; - mktime (&tm); - if (tm.tm_mon != 2 || tm.tm_mday != 31) - exit (3); -} - -static void -bigtime_test (int j) -{ - struct tm tm; - time_t now; - tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j; - tm.tm_isdst = -1; - now = mktime (&tm); - if (now != (time_t) -1) - { - struct tm *lt = localtime (&now); - if (! (lt - && lt->tm_year == tm.tm_year - && lt->tm_mon == tm.tm_mon - && lt->tm_mday == tm.tm_mday - && lt->tm_hour == tm.tm_hour - && lt->tm_min == tm.tm_min - && lt->tm_sec == tm.tm_sec - && lt->tm_yday == tm.tm_yday - && lt->tm_wday == tm.tm_wday - && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) - == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) - exit (4); - } -} - -static int -do_test (void) -{ - time_t t, delta; - int i, j; - - setenv ("TZ", "America/Sao_Paulo", 1); - /* This test makes some buggy mktime implementations loop. - Give up after 60 seconds; a mktime slower than that - isn't worth using anyway. */ - alarm (60); - - for (time_t_max = 1; 0 < time_t_max; time_t_max *= 2) - continue; - time_t_max--; - if ((time_t) -1 < 0) - for (time_t_min = -1; (time_t) (time_t_min * 2) < 0; time_t_min *= 2) - continue; - delta = time_t_max / 997; /* a suitable prime number */ - for (i = 0; i < N_STRINGS; i++) - { - if (tz_strings[i]) - setenv ("TZ", tz_strings[i], 1); - - for (t = 0; t <= time_t_max - delta; t += delta) - mktime_test (t); - mktime_test ((time_t) 1); - mktime_test ((time_t) (60 * 60)); - mktime_test ((time_t) (60 * 60 * 24)); - - for (j = 1; 0 < j; j *= 2) - bigtime_test (j); - bigtime_test (j - 1); - } - irix_6_4_bug (); - spring_forward_gap (); - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/time/tst-mktime3.c b/test/time/tst-mktime3.c deleted file mode 100644 index 60d0e0b32..000000000 --- a/test/time/tst-mktime3.c +++ /dev/null @@ -1,50 +0,0 @@ -/* Test program for mktime bugs with out-of-range tm_sec values. */ - -#include -#include -#include - -struct tm tests[] = -{ - { .tm_sec = -1, .tm_mday = 1, .tm_year = 104 }, - { .tm_sec = 65, .tm_min = 59, .tm_hour = 23, .tm_mday = 31, - .tm_mon = 11, .tm_year = 101 } -}; -struct tm expected[] = -{ - { .tm_sec = 59, .tm_min = 59, .tm_hour = 23, .tm_mday = 31, - .tm_mon = 11, .tm_year = 103, .tm_wday = 3, .tm_yday = 364 }, - { .tm_sec = 5, .tm_mday = 1, .tm_year = 102, .tm_wday = 2 } -}; - -int -main (void) -{ - setenv ("TZ", "UTC", 1); - int i; - for (i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i) - { - if (mktime (&tests[i]) < 0) - { - printf ("mktime %d failed\n", i); - return 1; - } -#define CHECK(name) \ - if (tests[i].name != expected[i].name) \ - { \ - printf ("test %d " #name " got %d expected %d\n", \ - i, tests[i].name, expected[i].name); \ - return 1; \ - } - CHECK (tm_sec) - CHECK (tm_min) - CHECK (tm_hour) - CHECK (tm_mday) - CHECK (tm_mon) - CHECK (tm_year) - CHECK (tm_wday) - CHECK (tm_yday) - CHECK (tm_isdst) - } - return 0; -} diff --git a/test/time/tst-posixtz.c b/test/time/tst-posixtz.c deleted file mode 100644 index ccba63e5b..000000000 --- a/test/time/tst-posixtz.c +++ /dev/null @@ -1,88 +0,0 @@ -#include -#include -#include -#include - -struct -{ - time_t when; - const char *tz; - const char *result; -} tests[] = -{ - { 909312849L, "AEST-10AEDST-11,M10.5.0,M3.5.0", - "1998/10/25 21:54:09 dst=1 zone=AEDST" }, - { 924864849L, "AEST-10AEDST-11,M10.5.0,M3.5.0", - "1999/04/23 20:54:09 dst=0 zone=AEST" }, - { 919973892L, "AEST-10AEDST-11,M10.5.0,M3.5.0", - "1999/02/26 07:18:12 dst=1 zone=AEDST" }, - { 909312849L, "EST+5EDT,M4.1.0/2,M10.5.0/2", - "1998/10/25 05:54:09 dst=0 zone=EST" }, - { 924864849L, "EST+5EDT,M4.1.0/2,M10.5.0/2", - "1999/04/23 06:54:09 dst=1 zone=EDT" }, - { 919973892L, "EST+5EDT,M4.1.0/2,M10.5.0/2", - "1999/02/25 15:18:12 dst=0 zone=EST" }, -}; - -int -main (void) -{ - int result = 0; - size_t cnt; - - for (cnt = 0; cnt < sizeof (tests) / sizeof (tests[0]); ++cnt) - { - char buf[100]; - struct tm *tmp; - - printf ("TZ = \"%s\", time = %ld => ", tests[cnt].tz, tests[cnt].when); - fflush (stdout); - - setenv ("TZ", tests[cnt].tz, 1); - - tmp = localtime (&tests[cnt].when); - - snprintf (buf, sizeof (buf), - "%04d/%02d/%02d %02d:%02d:%02d dst=%d zone=%s", - tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday, - tmp->tm_hour, tmp->tm_min, tmp->tm_sec, tmp->tm_isdst, - tzname[tmp->tm_isdst ? 1 : 0]); - - fputs (buf, stdout); - - if (strcmp (buf, tests[cnt].result) == 0) - puts (", OK"); - else - { - result = 1; - puts (", FAIL"); - } - } - - setenv ("TZ", "Universal", 1); - localtime (&tests[0].when); - printf ("TZ = \"Universal\" daylight %d tzname = { \"%s\", \"%s\" }", - daylight, tzname[0], tzname[1]); - if (! daylight) - puts (", OK"); - else - { - result = 1; - puts (", FAIL"); - } - - setenv ("TZ", "AEST-10AEDST-11,M10.5.0,M3.5.0", 1); - tzset (); - printf ("TZ = \"AEST-10AEDST-11,M10.5.0,M3.5.0\" daylight %d" - " tzname = { \"%s\", \"%s\" }", daylight, tzname[0], tzname[1]); - if (daylight - && strcmp (tzname[0], "AEST") == 0 && strcmp (tzname[1], "AEDST") == 0) - puts (", OK"); - else - { - result = 1; - puts (", FAIL"); - } - - return result; -} diff --git a/test/time/tst-strftime.c b/test/time/tst-strftime.c deleted file mode 100644 index 374fba426..000000000 --- a/test/time/tst-strftime.c +++ /dev/null @@ -1,111 +0,0 @@ -#include -#include -#include -#include - - -static struct -{ - const char *fmt; - size_t min; - size_t max; -} tests[] = - { - { "%2000Y", 2000, 4000 }, - { "%02000Y", 2000, 4000 }, - { "%_2000Y", 2000, 4000 }, - { "%-2000Y", 2000, 4000 }, - }; -#define ntests (sizeof (tests) / sizeof (tests[0])) - - -static int -do_test (void) -{ - size_t cnt; - int result = 0; - - time_t tnow = time (NULL); - struct tm *now = localtime (&tnow); - - for (cnt = 0; cnt < ntests; ++cnt) - { - size_t size = 0; - int res; - char *buf = NULL; - - do - { - size += 500; - buf = (char *) realloc (buf, size); - if (buf == NULL) - { - puts ("out of memory"); - exit (1); - } - - res = strftime (buf, size, tests[cnt].fmt, now); - if (res != 0) - break; - } - while (size < tests[cnt].max); - - if (res == 0) - { - printf ("%Zu: %s: res == 0 despite size == %Zu\n", - cnt, tests[cnt].fmt, size); - result = 1; - } - else if (size < tests[cnt].min) - { - printf ("%Zu: %s: size == %Zu was enough\n", - cnt, tests[cnt].fmt, size); - result = 1; - } - else - printf ("%Zu: %s: size == %Zu: OK\n", cnt, tests[cnt].fmt, size); - - free (buf); - } - - struct tm ttm = - { - /* Initialize the fields which are needed in the tests. */ - .tm_mday = 1, - .tm_hour = 2 - }; - const struct - { - const char *fmt; - const char *exp; - size_t n; - } ftests[] = - { - { "%-e", "1", 1 }, - { "%-k", "2", 1 }, - { "%-l", "2", 1 }, - }; -#define nftests (sizeof (ftests) / sizeof (ftests[0])) - for (cnt = 0; cnt < nftests; ++cnt) - { - char buf[100]; - size_t r = strftime (buf, sizeof (buf), ftests[cnt].fmt, &ttm); - if (r != ftests[cnt].n) - { - printf ("strftime(\"%s\") returned %zu not %zu\n", - ftests[cnt].fmt, r, ftests[cnt].n); - result = 1; - } - if (strcmp (buf, ftests[cnt].exp) != 0) - { - printf ("strftime(\"%s\") produced \"%s\" not \"%s\"\n", - ftests[cnt].fmt, buf, ftests[cnt].exp); - result = 1; - } - } - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/time/tst-strptime.c b/test/time/tst-strptime.c deleted file mode 100644 index 32001d47e..000000000 --- a/test/time/tst-strptime.c +++ /dev/null @@ -1,192 +0,0 @@ -/* Test for strptime. - Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1998. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - - -static const struct -{ - const char *locale; - const char *input; - const char *format; - int wday; - int yday; - int mon; - int mday; -} day_tests[] = -{ - { "C", "2000-01-01", "%Y-%m-%d", 6, 0, 0, 1 }, - { "C", "03/03/00", "%D", 5, 62, 2, 3 }, - { "C", "9/9/99", "%x", 4, 251, 8, 9 }, - { "C", "19990502123412", "%Y%m%d%H%M%S", 0, 121, 4, 2 }, - { "C", "2001 20 Mon", "%Y %U %a", 1, 140, 4, 21 }, - { "C", "2001 21 Mon", "%Y %W %a", 1, 140, 4, 21 }, - { "ja_JP.EUC-JP", "2000-01-01 08:12:21 AM", "%Y-%m-%d %I:%M:%S %p", - 6, 0, 0, 1 }, - { "en_US.ISO-8859-1", "2000-01-01 08:12:21 PM", "%Y-%m-%d %I:%M:%S %p", - 6, 0, 0, 1 }, - { "ja_JP.EUC-JP", "2001 20 \xb7\xee", "%Y %U %a", 1, 140, 4, 21 }, - { "ja_JP.EUC-JP", "2001 21 \xb7\xee", "%Y %W %a", 1, 140, 4, 21 }, -}; - - -static const struct -{ - const char *input; - const char *format; - const char *output; - int wday; - int yday; -} tm_tests [] = -{ - {"17410105012000", "%H%M%S%d%m%Y", "2000-01-05 17:41:01", 3, 4} -}; - - - -static int -test_tm (void) -{ - struct tm tm; - size_t i; - int result = 0; - char buf[100]; - - for (i = 0; i < sizeof (tm_tests) / sizeof (tm_tests[0]); ++i) - { - memset (&tm, '\0', sizeof (tm)); - - char *ret = strptime (tm_tests[i].input, tm_tests[i].format, &tm); - if (ret == NULL) - { - printf ("strptime returned NULL for `%s'\n", tm_tests[i].input); - result = 1; - continue; - } - else if (*ret != '\0') - { - printf ("not all of `%s' read\n", tm_tests[i].input); - result = 1; - } - strftime (buf, sizeof (buf), "%F %T", &tm); - printf ("strptime (\"%s\", \"%s\", ...)\n" - "\tshould be: %s, wday = %d, yday = %3d\n" - "\t is: %s, wday = %d, yday = %3d\n", - tm_tests[i].input, tm_tests[i].format, - tm_tests[i].output, - tm_tests[i].wday, tm_tests[i].yday, - buf, tm.tm_wday, tm.tm_yday); - - if (strcmp (buf, tm_tests[i].output) != 0) - { - printf ("Time and date are not correct.\n"); - result = 1; - } - if (tm.tm_wday != tm_tests[i].wday) - { - printf ("weekday for `%s' incorrect: %d instead of %d\n", - tm_tests[i].input, tm.tm_wday, tm_tests[i].wday); - result = 1; - } - if (tm.tm_yday != tm_tests[i].yday) - { - printf ("yearday for `%s' incorrect: %d instead of %d\n", - tm_tests[i].input, tm.tm_yday, tm_tests[i].yday); - result = 1; - } - } - - return result; -} - - -int -main (int argc, char *argv[]) -{ - struct tm tm; - size_t i; - int result = 0; - - for (i = 0; i < sizeof (day_tests) / sizeof (day_tests[0]); ++i) - { - memset (&tm, '\0', sizeof (tm)); - - if (setlocale (LC_ALL, day_tests[i].locale) == NULL) - { - printf ("cannot set locale %s: %m\n", day_tests[i].locale); - exit (EXIT_FAILURE); - } - - char *ret = strptime (day_tests[i].input, day_tests[i].format, &tm); - if (ret == NULL) - { - printf ("strptime returned NULL for `%s'\n", day_tests[i].input); - result = 1; - continue; - } - else if (*ret != '\0') - { - printf ("not all of `%s' read\n", day_tests[i].input); - result = 1; - } - - printf ("strptime (\"%s\", \"%s\", ...)\n" - "\tshould be: wday = %d, yday = %3d, mon = %2d, mday = %2d\n" - "\t is: wday = %d, yday = %3d, mon = %2d, mday = %2d\n", - day_tests[i].input, day_tests[i].format, - day_tests[i].wday, day_tests[i].yday, - day_tests[i].mon, day_tests[i].mday, - tm.tm_wday, tm.tm_yday, tm.tm_mon, tm.tm_mday); - - if (tm.tm_wday != day_tests[i].wday) - { - printf ("weekday for `%s' incorrect: %d instead of %d\n", - day_tests[i].input, tm.tm_wday, day_tests[i].wday); - result = 1; - } - if (tm.tm_yday != day_tests[i].yday) - { - printf ("yearday for `%s' incorrect: %d instead of %d\n", - day_tests[i].input, tm.tm_yday, day_tests[i].yday); - result = 1; - } - if (tm.tm_mon != day_tests[i].mon) - { - printf ("month for `%s' incorrect: %d instead of %d\n", - day_tests[i].input, tm.tm_mon, day_tests[i].mon); - result = 1; - } - if (tm.tm_mday != day_tests[i].mday) - { - printf ("monthday for `%s' incorrect: %d instead of %d\n", - day_tests[i].input, tm.tm_mday, day_tests[i].mday); - result = 1; - } - } - - setlocale (LC_ALL, "C"); - - result |= test_tm (); - - return result; -} diff --git a/test/time/tst-strptime2.c b/test/time/tst-strptime2.c deleted file mode 100644 index 73552bb8f..000000000 --- a/test/time/tst-strptime2.c +++ /dev/null @@ -1,59 +0,0 @@ -#include -#include -#include - - -static const struct -{ - const char *fmt; - long int gmtoff; -} tests[] = - { - { "1113472456 +1000", 36000 }, - { "1113472456 -1000", -36000 }, - { "1113472456 +10", 36000 }, - { "1113472456 -10", -36000 }, - { "1113472456 +1030", 37800 }, - { "1113472456 -1030", -37800 }, - { "1113472456 +0030", 1800 }, - { "1113472456 -0030", -1800 }, - { "1113472456 -1330", LONG_MAX }, - { "1113472456 +1330", LONG_MAX }, - { "1113472456 -1060", LONG_MAX }, - { "1113472456 +1060", LONG_MAX }, - { "1113472456 1030", LONG_MAX }, - }; -#define ntests (sizeof (tests) / sizeof (tests[0])) - - -int -main (void) -{ - int result = 0; - - for (int i = 0; i < ntests; ++i) - { - struct tm tm; - - if (strptime (tests[i].fmt, "%s %z", &tm) == NULL) - { - if (tests[i].gmtoff != LONG_MAX) - { - printf ("round %d: strptime unexpectedly failed\n", i); - result = 1; - } - continue; - } - - if (tm.tm_gmtoff != tests[i].gmtoff) - { - printf ("round %d: tm_gmtoff is %ld\n", i, (long int) tm.tm_gmtoff); - result = 1; - } - } - - if (result == 0) - puts ("all OK"); - - return 0; -} diff --git a/test/time/tst-timerfd.c b/test/time/tst-timerfd.c deleted file mode 100644 index 5562ed74f..000000000 --- a/test/time/tst-timerfd.c +++ /dev/null @@ -1,71 +0,0 @@ -/* vi: set sw=4 ts=4 sts=4: */ -/* - * timerfd test for uClibc - * Copyright (C) 2012 by Kevin Cernekee - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static int -do_test(void) -{ - int fd, ret, result = 0; - struct itimerspec s; - uint64_t val; - time_t start, now; - - fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK); - if (fd < 0) { - perror("timerfd() failed"); - result = 1; - } - s.it_value.tv_sec = 1; - s.it_value.tv_nsec = 0; - s.it_interval.tv_sec = 0; - s.it_interval.tv_nsec = 0; - timerfd_settime(fd, 0, &s, NULL); - start = time(NULL); - - /* this should return immediately with EAGAIN due to TFD_NONBLOCK */ - ret = read(fd, &val, sizeof(val)); - if (ret != -1 || errno != EAGAIN) { - error(0, 0, "first read() returned %d", ret); - result = 1; - } - - /* let the timer expire, then check it again */ - do { - now = time(NULL); - } while (now - start < 2); - - ret = read(fd, &val, sizeof(val)); - if (ret != sizeof(val)) { - error(0, 0, "second read() returned %d", ret); - result = 1; - } - - /* we are expecting a single expiration, since it_interval is 0 */ - if (val != 1) { - error(0, 0, "wrong number of expirations: %" PRIx64, val); - result = 1; - } - - return result; -} - -#define TIMEOUT 5 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/time/tst-timezone.c b/test/time/tst-timezone.c deleted file mode 100644 index e89be0b06..000000000 --- a/test/time/tst-timezone.c +++ /dev/null @@ -1,169 +0,0 @@ -/* Copyright (C) 1998, 1999, 2000, 2005 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 1998. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include - -int failed = 0; - -struct test_times -{ - const char *name; - int daylight; - int timezone; - const char *tzname[2]; -}; - -static const struct test_times tests[] = -{ - { "Europe/Amsterdam", 1, -3600, { "CET", "CEST" }}, - { "Europe/Berlin", 1, -3600, { "CET", "CEST" }}, - { "Europe/London", 1, 0, { "GMT", "BST" }}, - { "Universal", 0, 0, {"UTC", "UTC" }}, - { "Australia/Melbourne", 1, -36000, { "EST", "EST" }}, - { "America/Sao_Paulo", 1, 10800, {"BRT", "BRST" }}, - { "America/Chicago", 1, 21600, {"CST", "CDT" }}, - { "America/Indiana/Indianapolis", 1, 18000, {"EST", "EDT" }}, - { "America/Los_Angeles", 1, 28800, {"PST", "PDT" }}, - { "Asia/Tokyo", 1, -32400, {"JST", "JDT" }}, - { "Pacific/Auckland", 1, -43200, { "NZST", "NZDT" }}, - { NULL, 0, 0 } -}; - -/* This string will be used for `putenv' calls. */ -char envstring[100]; - -static void -print_tzvars (void) -{ - printf ("tzname[0]: %s\n", tzname[0]); - printf ("tzname[1]: %s\n", tzname[1]); - printf ("daylight: %d\n", daylight); - printf ("timezone: %ld\n", timezone); -} - - -static void -check_tzvars (const char *name, int dayl, int timez, const char *const tznam[]) -{ - int i; - - if (daylight != dayl) - { - printf ("*** Timezone: %s, daylight is: %d but should be: %d\n", - name, daylight, dayl); - ++failed; - } - if (timezone != timez) - { - printf ("*** Timezone: %s, timezone is: %ld but should be: %d\n", - name, timezone, timez); - ++failed; - } - for (i = 0; i <= 1; ++i) - if (strcmp (tzname[i], tznam[i]) != 0) - { - printf ("*** Timezone: %s, tzname[%d] is: %s but should be: %s\n", - name, i, tzname[i], tznam[i]); - ++failed; - } -} - - -int -main (int argc, char ** argv) -{ - time_t t; - const struct test_times *pt; - char buf[BUFSIZ]; - - /* This should be: Fri May 15 01:02:16 1998 (UTC). */ - t = 895194136; - printf ("We use this date: %s\n", asctime (gmtime (&t))); - - for (pt = tests; pt->name != NULL; ++pt) - { - /* Start with a known state */ - printf ("Checking timezone %s\n", pt->name); - sprintf (buf, "TZ=%s", pt->name); - if (putenv (buf)) - { - puts ("putenv failed."); - failed = 1; - } - tzset (); - print_tzvars (); - check_tzvars (pt->name, pt->daylight, pt->timezone, pt->tzname); - - /* calling localtime shouldn't make a difference */ - localtime (&t); - print_tzvars (); - check_tzvars (pt->name, pt->daylight, pt->timezone, pt->tzname); - } - - /* From a post of Scott Harrington to the timezone - mailing list. */ - { - struct tm tmBuf = {0, 0, 0, 10, 3, 98, 0, 0, -1}; - char buf[200]; - strcpy (envstring, "TZ=Europe/London"); - putenv (envstring); - t = mktime (&tmBuf); - snprintf (buf, sizeof (buf), "TZ=%s %ld %d %d %d %d %d %d %d %d %d", - getenv ("TZ"), t, - tmBuf.tm_sec, tmBuf.tm_min, tmBuf.tm_hour, - tmBuf.tm_mday, tmBuf.tm_mon, tmBuf.tm_year, - tmBuf.tm_wday, tmBuf.tm_yday, tmBuf.tm_isdst); - fputs (buf, stdout); - puts (" should be"); - puts ("TZ=Europe/London 892162800 0 0 0 10 3 98 5 99 1"); - if (strcmp (buf, "TZ=Europe/London 892162800 0 0 0 10 3 98 5 99 1") != 0) - { - failed = 1; - fputs (" FAILED ***", stdout); - } - } - - printf("\n"); - - { - struct tm tmBuf = {0, 0, 0, 10, 3, 98, 0, 0, -1}; - char buf[200]; - strcpy (envstring, "TZ=GMT"); - /* No putenv call needed! */ - t = mktime (&tmBuf); - snprintf (buf, sizeof (buf), "TZ=%s %ld %d %d %d %d %d %d %d %d %d", - getenv ("TZ"), t, - tmBuf.tm_sec, tmBuf.tm_min, tmBuf.tm_hour, - tmBuf.tm_mday, tmBuf.tm_mon, tmBuf.tm_year, - tmBuf.tm_wday, tmBuf.tm_yday, tmBuf.tm_isdst); - fputs (buf, stdout); - puts (" should be"); - puts ("TZ=GMT 892166400 0 0 0 10 3 98 5 99 0"); - if (strcmp (buf, "TZ=GMT 892166400 0 0 0 10 3 98 5 99 0") != 0) - { - failed = 1; - fputs (" FAILED ***", stdout); - } - } - - return failed ? EXIT_FAILURE : EXIT_SUCCESS; -} diff --git a/test/time/tst_wcsftime.c b/test/time/tst_wcsftime.c deleted file mode 100644 index 5631d952a..000000000 --- a/test/time/tst_wcsftime.c +++ /dev/null @@ -1,65 +0,0 @@ -#include -#include -#include -#include -#include - -#define NUM_OF_DATES 7 -#define NUM_OF_LOCALES 3 -#define BUF_SIZE 256 - -int -main (void) -{ - wchar_t buf[BUF_SIZE]; - struct tm *tp; - time_t time_list[NUM_OF_DATES] = { - 500, 68200000, 694223999, - 694224000, 704900000, 705000000, - 705900000 - }; - char *locale_list[NUM_OF_LOCALES] = { - "C", - "fr_FR.ISO-8859-1", - "ja_JP.UTF-8" - }; - int result = 0, ddd, lll; - size_t n; - - for (lll = 0; lll < NUM_OF_LOCALES; lll++) { - printf ("\nUsing locale: %s\n", locale_list[lll]); - char* set = setlocale(LC_ALL, locale_list[lll]); - if (set == NULL) { - printf ("FAILED!\n\n"); - continue; - } else - printf ("\n"); - for (ddd = 0; ddd < NUM_OF_DATES; ddd++) { - tp = localtime(&time_list[ddd]); - printf ("%ld corresponds to ", time_list[ddd]); - - n = wcsftime (buf, sizeof (buf) / sizeof (buf[0]), - L"%H:%M:%S %Y-%m-%d%n", tp); - if (n != 21) { - result = 1; - printf ("FAILED!\n"); - } - - printf ("%ls", buf); - - wcsftime (buf, sizeof (buf) / sizeof (buf[0]), - L"%tor, as %%D %%T: %D %T%n", tp); - printf ("%ls", buf); - - wcsftime (buf, sizeof (buf) / sizeof (buf[0]), L"%A (%a)%n", tp); - printf ("The weekday was %ls", buf); - - wcsftime (buf, sizeof (buf) / sizeof (buf[0]), L"%B (%b) %Y%n", tp); - /* glibc bug? forgets aigu from french february février - * See s/printf (/wprintf (L/g */ - //wprintf (L"Month was %ls", buf); - printf ("Month was %ls", buf); - } - } - return result; -} diff --git a/test/tls/Makefile b/test/tls/Makefile deleted file mode 100644 index 607fec2c9..000000000 --- a/test/tls/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# uClibc TLS tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -top_builddir=../../ -top_srcdir=../../ -include ../Rules.mak --include Makefile.in -include ../Test.mak diff --git a/test/tls/Makefile.in b/test/tls/Makefile.in deleted file mode 100644 index 9f1037869..000000000 --- a/test/tls/Makefile.in +++ /dev/null @@ -1,161 +0,0 @@ -# uClibc TLS tests -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - -TESTS := tst-tls1 tst-tls2 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 \ - tst-tls8 tst-tls9 tst-tls10 tst-tls11 tst-tls12 tst-tls13 \ - tst-tls14 tst-tls15 tst-tls16 tst-tls17 tst-tls18 tst-tls-at-ctor \ - tst-tls1-static tst-tls2-static tst-tls9-static -TESTS_DISABLED := tst-tls1-static tst-tls2-static tst-tls9-static - -# test always fails for every architecture, -# guessing some unimplemented check or feature -TESTS_DISABLED += tst-tls16 - -#all these tests require shared libraries -ifeq ($(HAVE_SHARED),) -TESTS_DISABLED := $(TESTS) -endif - -# All these tests need tls.h, which is not installed with glibc -GLIBC_TESTS_DISABLED := $(addsuffix _glibc,$(filter-out $(TESTS_DISABLED),$(TESTS))) - - -PTDIR := $(top_builddir)libpthread/nptl -SYSDEPS_DIR := $(top_srcdir)libc/sysdeps - -EXTRA_CFLAGS := -DNOT_IN_libc=1 \ - -std=gnu99 -I. \ - -I$(SYSDEPS_DIR)/linux \ - -I$(SYSDEPS_DIR)/linux/$(TARGET_ARCH) \ - -I$(PTDIR) \ - -I$(PTDIR)/sysdeps/unix/sysv/linux/$(TARGET_ARCH) \ - -I$(PTDIR)/sysdeps/$(TARGET_ARCH) \ - -I$(PTDIR)/sysdeps/unix/sysv/linux \ - -I$(PTDIR)/sysdeps/pthread \ - -I$(PTDIR)/sysdeps/pthread/bits \ - -I$(PTDIR)/sysdeps/generic \ - -I$(top_builddir)ldso/include \ - -I$(top_builddir)ldso/ldso/$(TARGET_ARCH) \ - -I$(top_builddir)include \ - -include $(top_builddir)include/libc-symbols.h - -tlsmod17a-suffixes := 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 -tlsmod18a-suffixes := 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 -CFLAGS_tst-tlsmod1.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod2.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod3.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod4.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod5.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod6.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod7.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod8.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod9.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod10.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod11.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod12.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod13.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod13a.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod14a.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod14b.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod15a.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod15b.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod16a.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod16b.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod17a.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod17b.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod18a.so := -fPIC -DSHARED -shared -CFLAGS_tst-tlsmod-at-ctor.so := -fPIC -DSHARED -shared - -LDFLAGS_tst-tlsmod1.so := -shared -static-libgcc -L$(top_builddir)lib -LDFLAGS_tst-tlsmod2.so := -shared -static-libgcc -L$(top_builddir)lib -LDFLAGS_tst-tlsmod3.so := -shared -static-libgcc -L$(top_builddir)lib \ - tst-tlsmod2.so -LDFLAGS_tst-tlsmod4.so := -shared -static-libgcc -L$(top_builddir)lib -LDFLAGS_tst-tlsmod5.so := -shared -static-libgcc -L$(top_builddir)lib -LDFLAGS_tst-tlsmod6.so := -shared -static-libgcc -L$(top_builddir)lib -LDFLAGS_tst-tlsmod7.so := -shared -static-libgcc -L$(top_builddir)lib -LDFLAGS_tst-tlsmod8.so := -shared -static-libgcc -L$(top_builddir)lib \ - tst-tlsmod7.so -LDFLAGS_tst-tlsmod9.so := -shared -static-libgcc -L$(top_builddir)lib \ - tst-tlsmod8.so -LDFLAGS_tst-tlsmod10.so := -shared -static-libgcc -L$(top_builddir)lib \ - tst-tlsmod9.so -LDFLAGS_tst-tlsmod11.so := -shared -static-libgcc -L$(top_builddir)lib -LDFLAGS_tst-tlsmod12.so := -shared -static-libgcc -L$(top_builddir)lib \ - tst-tlsmod11.so -LDFLAGS_tst-tlsmod13.so := -shared -static-libgcc -L$(top_builddir)lib -LDFLAGS_tst-tlsmod13a.so := -shared -static-libgcc -L$(top_builddir)lib \ - tst-tlsmod13.so -LDFLAGS_tst-tlsmod14a.so := -shared -static-libgcc -L$(top_builddir)lib -LDFLAGS_tst-tlsmod14b.so := -shared -static-libgcc -L$(top_builddir)lib -LDFLAGS_tst-tlsmod15a.so := -shared -static-libgcc -L$(top_builddir)lib -LDFLAGS_tst-tlsmod15b.so := -shared -static-libgcc -L$(top_builddir)lib -LDFLAGS_tst-tlsmod16a.so := -shared -static-libgcc -L$(top_builddir)lib -LDFLAGS_tst-tlsmod16b.so := -shared -static-libgcc -L$(top_builddir)lib -LDFLAGS_tst-tlsmod17a.so := -shared -static-libgcc -L$(top_builddir)lib -LDFLAGS_tst-tlsmod17b.so := -shared -static-libgcc -L$(top_builddir)lib \ - $(patsubst %,tst-tlsmod17a%.so,$(tlsmod17a-suffixes)) -LDFLAGS_tst-tlsmod18a.so := -shared -static-libgcc -L$(top_builddir)lib -LDFLAGS_tst-tlsmod-at-ctor.so := -shared -static-libgcc -L$(top_builddir)lib - -LDFLAGS_tst-tls3 := tst-tlsmod1.so tst-tlsmod4.so -LDFLAGS_tst-tls4 := -ldl -LDFLAGS_tst-tls5 := -ldl -LDFLAGS_tst-tls6 := -ldl -LDFLAGS_tst-tls7 := -ldl -LDFLAGS_tst-tls8 := -ldl -LDFLAGS_tst-tls9 := -ldl -LDFLAGS_tst-tls10 := -Wl,-rpath-link=. tst-tlsmod8.so tst-tlsmod7.so -LDFLAGS_tst-tls11 := -Wl,-rpath-link=. tst-tlsmod9.so tst-tlsmod10.so -LDFLAGS_tst-tls12 := -Wl,-rpath-link=. tst-tlsmod11.so tst-tlsmod12.so -LDFLAGS_tst-tls13 := -ldl -Wl,-rpath-link=. -LDFLAGS_tst-tls14 := -ldl -Wl,-rpath-link=. tst-tlsmod14a.so -LDFLAGS_tst-tls15 := -ldl -Wl,-rpath-link=. -LDFLAGS_tst-tls16 := -ldl -Wl,-rpath-link=. -LDFLAGS_tst-tls17 := -ldl -Wl,-rpath-link=. -LDFLAGS_tst-tls18 := -ldl -Wl,-rpath-link=. -LDFLAGS_tst-tls-at-ctor := tst-tlsmod-at-ctor.so - -tst-tlsmod3.so: tst-tlsmod2.so -tst-tlsmod4.so: tst-tlsmod3.so -tst-tlsmod6.so: tst-tlsmod5.so -tst-tlsmod8.so: tst-tlsmod7.so -tst-tlsmod9.so: tst-tlsmod8.so -tst-tlsmod10.so: tst-tlsmod9.so -tst-tlsmod12.so: tst-tlsmod11.so -tst-tlsmod13a.so: tst-tlsmod13.so -tst-tlsmod14b.so: tst-tlsmod14a.so -tst-tlsmod16b.so: tst-tlsmod16a.so - -tst-tls3: tst-tlsmod1.so tst-tlsmod4.so -tst-tls4: tst-tlsmod2.so -tst-tls5: tst-tlsmod2.so -tst-tls6: tst-tlsmod2.so -tst-tls7: tst-tlsmod2.so tst-tlsmod3.so -tst-tls8: tst-tlsmod2.so tst-tlsmod3.so tst-tlsmod4.so -tst-tls9: tst-tlsmod5.so tst-tlsmod6.so -tst-tls10: tst-tlsmod7.so tst-tlsmod8.so -tst-tls11: tst-tlsmod9.so tst-tlsmod10.so -tst-tls12: tst-tlsmod11.so tst-tlsmod12.so -tst-tls13: tst-tlsmod13.so tst-tlsmod13a.so -tst-tls14: tst-tlsmod14a.so tst-tlsmod14b.so -tst-tls15: tst-tlsmod15b.so -tst-tls16: tst-tlsmod16a.so tst-tlsmod16b.so -tst-tls17: tst-tlsmod17b.so -tst-tlsmod17b.so: $(patsubst %,tst-tlsmod17a%.so,$(tlsmod17a-suffixes)) -tst-tlsmod17a%.so: tst-tlsmod17a.c - $(Q)$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_tst-tlsmod17a.so) $< -o $@ \ - -DN=$* -Wl,-soname,$@ $(LDFLAGS) $(EXTRA_LIBS) \ - $(LDFLAGS_tst-tlsmod17a.so) -tst-tls18: $(patsubst %,tst-tlsmod18a%.so,$(tlsmod18a-suffixes)) -tst-tlsmod18a%.so: tst-tlsmod18a.c - $(Q)$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_tst-tlsmod18a.so) $< -o $@ \ - -DN=$* -Wl,-soname,$@ $(LDFLAGS) $(EXTRA_LIBS) \ - $(LDFLAGS_tst-tlsmod18a.so) -tst-tls-at-ctor: tst-tlsmod-at-ctor.so - -ifeq ($(TARGET_ARCH),mips) -RET_tst-tls15 := 1 -endif - -WRAPPER := env LD_LIBRARY_PATH="$$PWD:.:$(LD_LIBRARY_PATH)" diff --git a/test/tls/README b/test/tls/README deleted file mode 100644 index 06c9eb743..000000000 --- a/test/tls/README +++ /dev/null @@ -1,8 +0,0 @@ -These tests were imported from 'glibc/elf' and are responsible for testing -the TLS functionality of the dynamic loader. The file 'tls-macros-mips.h' -is a copy of 'glibc/sysdeps/mips/tls-macros.h'. Dependency and link orders -are critical and should NOT be changed. Even if you think you know what -you are doing, do not touch the Makefile without posting to the uClibc -development mailing list. - --Steve diff --git a/test/tls/tls-macros-alpha.h b/test/tls/tls-macros-alpha.h deleted file mode 100644 index 78820ecac..000000000 --- a/test/tls/tls-macros-alpha.h +++ /dev/null @@ -1,25 +0,0 @@ -register void *__gp __asm__("$29"); - -# define TLS_LE(x) \ - ({ int *__l; \ - __asm__ ("call_pal 158\n\tlda $0," #x "($0)\t\t!tprel" : "=v"(__l)); \ - __l; }) - -# define TLS_IE(x) \ - ({ char *__tp; unsigned long __o; \ - __asm__ ("call_pal 158\n\tldq %1," #x "($gp)\t\t!gottprel" \ - : "=v"(__tp), "=r"(__o) : "r"(__gp)); \ - (int *)(__tp + __o); }) - -# define TLS_LD(x) \ - ({ extern void *__tls_get_addr(void *); int *__l; void *__i; \ - __asm__ ("lda %0," #x "($gp)\t\t!tlsldm" : "=r" (__i) : "r"(__gp)); \ - __i = __tls_get_addr(__i); \ - __asm__ ("lda %0, " #x "(%1)\t\t!dtprel" : "=r"(__l) : "r"(__i)); \ - __l; }) - -# define TLS_GD(x) \ - ({ extern void *__tls_get_addr(void *); void *__i; \ - __asm__ ("lda %0," #x "($gp)\t\t!tlsgd" : "=r" (__i) : "r"(__gp)); \ - (int *) __tls_get_addr(__i); }) - diff --git a/test/tls/tls-macros-arc.h b/test/tls/tls-macros-arc.h deleted file mode 100644 index 4b2d6f8ad..000000000 --- a/test/tls/tls-macros-arc.h +++ /dev/null @@ -1,28 +0,0 @@ -/* For now */ -#define TLS_LD(x) TLS_IE(x) - -#define TLS_GD(x) \ - ({ int *__result; \ - __asm__ ("add r0, pcl, @" #x "@tlsgd \n" \ - ".tls_gd_ld " #x "`bl __tls_get_addr@plt \n" \ - "mov %0, r0 \n" \ - : "=&r" (__result) \ - ::"r0","r1","r2","r3","r4","r5","r6","r7", \ - "r8","r9","r10","r11","r12"); \ - __result; }) - -#define TLS_LE(x) \ - ({ int *__result; \ - void *tp = __builtin_thread_pointer(); \ - __asm__ ("add %0, %1, @" #x "@tpoff \n" \ - : "=r" (__result) : "r"(tp)); \ - __result; }) - -#define TLS_IE(x) \ - ({ int *__result; \ - void *tp = __builtin_thread_pointer(); \ - __asm__ ("ld %0, [pcl, @" #x "@tlsie] \n" \ - "add %0, %1, %0 \n" \ - : "=&r" (__result) : "r" (tp)); \ - __result; }) - diff --git a/test/tls/tls-macros-arm.h b/test/tls/tls-macros-arm.h deleted file mode 100644 index 13d0f9752..000000000 --- a/test/tls/tls-macros-arm.h +++ /dev/null @@ -1,51 +0,0 @@ -#define TLS_LE(x) \ - ({ int *__result; \ - void *tp = __builtin_thread_pointer (); \ - __asm__ ("ldr %0, 1f; " \ - "add %0, %1, %0; " \ - "b 2f; " \ - "1: .word " #x "(tpoff); " \ - "2: " \ - : "=&r" (__result) : "r" (tp)); \ - __result; }) - -#define TLS_IE(x) \ - ({ int *__result; \ - void *tp = __builtin_thread_pointer (); \ - __asm__ ("ldr %0, 1f; " \ - "3: ldr %0, [pc, %0];" \ - "add %0, %1, %0; " \ - "b 2f; " \ - "1: .word " #x "(gottpoff) + (. - 3b - 8); " \ - "2: " \ - : "=&r" (__result) : "r" (tp)); \ - __result; }) - -#define TLS_LD(x) \ - ({ char *__result; \ - int __offset; \ - extern void *__tls_get_addr (void *); \ - __asm__ ("ldr %0, 2f; " \ - "1: add %0, pc, %0; " \ - "b 3f; " \ - "2: .word " #x "(tlsldm) + (. - 1b - 8); " \ - "3: " \ - : "=r" (__result)); \ - __result = (char *)__tls_get_addr (__result); \ - __asm__ ("ldr %0, 1f; " \ - "b 2f; " \ - "1: .word " #x "(tlsldo); " \ - "2: " \ - : "=r" (__offset)); \ - (int *) (__result + __offset); }) - -#define TLS_GD(x) \ - ({ int *__result; \ - extern void *__tls_get_addr (void *); \ - __asm__ ("ldr %0, 2f; " \ - "1: add %0, pc, %0; " \ - "b 3f; " \ - "2: .word " #x "(tlsgd) + (. - 1b - 8); " \ - "3: " \ - : "=r" (__result)); \ - (int *)__tls_get_addr (__result); }) diff --git a/test/tls/tls-macros-i386.h b/test/tls/tls-macros-i386.h deleted file mode 100644 index 6690753a7..000000000 --- a/test/tls/tls-macros-i386.h +++ /dev/null @@ -1,76 +0,0 @@ -#define TLS_LE(x) \ - ({ int *__l; \ - __asm__ ("movl %%gs:0,%0\n\t" \ - "subl $" #x "@tpoff,%0" \ - : "=r" (__l)); \ - __l; }) - -#ifdef __PIC__ -# define TLS_IE(x) \ - ({ int *__l; \ - __asm__ ("movl %%gs:0,%0\n\t" \ - "subl " #x "@gottpoff(%%ebx),%0" \ - : "=r" (__l)); \ - __l; }) -#else -# define TLS_IE(x) \ - ({ int *__l; \ - __asm__ ("call 1f\n\t" \ - ".subsection 1\n" \ - "1:\tmovl (%%esp), %%ebx\n\t" \ - "ret\n\t" \ - ".previous\n\t" \ - "addl $_GLOBAL_OFFSET_TABLE_, %%ebx\n\t" \ - "movl %%gs:0,%0\n\t" \ - "subl " #x "@gottpoff(%%ebx),%0" \ - : "=r" (__l)); \ - __l; }) -#endif - -#ifdef __PIC__ -# define TLS_LD(x) \ - ({ int *__l, __c, __d; \ - __asm__ ("leal " #x "@tlsldm(%%ebx),%%eax\n\t" \ - "call ___tls_get_addr@plt\n\t" \ - "leal " #x "@dtpoff(%%eax), %%eax" \ - : "=a" (__l), "=&c" (__c), "=&d" (__d)); \ - __l; }) -#else -# define TLS_LD(x) \ - ({ int *__l, __b, __c, __d; \ - __asm__ ("call 1f\n\t" \ - ".subsection 1\n" \ - "1:\tmovl (%%esp), %%ebx\n\t" \ - "ret\n\t" \ - ".previous\n\t" \ - "addl $_GLOBAL_OFFSET_TABLE_, %%ebx\n\t" \ - "leal " #x "@tlsldm(%%ebx),%%eax\n\t" \ - "call ___tls_get_addr@plt\n\t" \ - "leal " #x "@dtpoff(%%eax), %%eax" \ - : "=a" (__l), "=&b" (__b), "=&c" (__c), "=&d" (__d)); \ - __l; }) -#endif - -#ifdef __PIC__ -# define TLS_GD(x) \ - ({ int *__l, __c, __d; \ - __asm__ ("leal " #x "@tlsgd(%%ebx),%%eax\n\t" \ - "call ___tls_get_addr@plt\n\t" \ - "nop" \ - : "=a" (__l), "=&c" (__c), "=&d" (__d)); \ - __l; }) -#else -# define TLS_GD(x) \ - ({ int *__l, __c, __d; \ - __asm__ ("call 1f\n\t" \ - ".subsection 1\n" \ - "1:\tmovl (%%esp), %%ebx\n\t" \ - "ret\n\t" \ - ".previous\n\t" \ - "addl $_GLOBAL_OFFSET_TABLE_, %%ebx\n\t" \ - "leal " #x "@tlsgd(%%ebx),%%eax\n\t" \ - "call ___tls_get_addr@plt\n\t" \ - "nop" \ - : "=a" (__l), "=&c" (__c), "=&d" (__d)); \ - __l; }) -#endif diff --git a/test/tls/tls-macros-ia64.h b/test/tls/tls-macros-ia64.h deleted file mode 100644 index 2584020a7..000000000 --- a/test/tls/tls-macros-ia64.h +++ /dev/null @@ -1,63 +0,0 @@ -#define TLS_LE(x) \ - ({ void *__l; \ - __asm__ ("mov r2=r13\n\t" \ - ";;\n\t" \ - "addl %0=@tprel(" #x "),r2\n\t" \ - : "=r" (__l) : : "r2" ); __l; }) - -#define TLS_IE(x) \ - ({ void *__l; \ - register long __gp __asm__ ("gp"); \ - __asm__ (";;\n\t" \ - "addl r16=@ltoff(@tprel(" #x ")),gp\n\t" \ - ";;\n\t" \ - "ld8 r17=[r16]\n\t" \ - ";;\n\t" \ - "add %0=r13,r17\n\t" \ - ";;\n\t" \ - : "=r" (__l) : "r" (__gp) : "r16", "r17" ); __l; }) - -#define __TLS_CALL_CLOBBERS \ - "r2", "r3", "r8", "r9", "r10", "r11", "r14", "r15", "r16", "r17", \ - "r18", "r19", "r20", "r21", "r22", "r23", "r24", "r25", "r26", \ - "r27", "r28", "r29", "r30", "r31", \ - "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", \ - "f6", "f7", "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \ - "b6", "b7", \ - "out0", "out1", "out2", "out3", "out4", "out5", "out6", "out7" - -#define TLS_LD(x) \ - ({ void *__l; \ - register long __gp __asm__ ("gp"); \ - __asm__ (";;\n\t" \ - "mov loc0=gp\n\t" \ - "addl r16=@ltoff(@dtpmod(" #x ")),gp\n\t" \ - "addl out1=@dtprel(" #x "),r0\n\t" \ - ";;\n\t" \ - "ld8 out0=[r16]\n\t" \ - "br.call.sptk.many b0=__tls_get_addr" \ - ";;\n\t" \ - "mov gp=loc0\n\t" \ - "mov %0=r8\n\t" \ - ";;\n\t" \ - : "=r" (__l) : "r" (__gp) : "loc0", __TLS_CALL_CLOBBERS); \ - __l; }) - -#define TLS_GD(x) \ - ({ void *__l; \ - register long __gp __asm__ ("gp"); \ - __asm__ (";;\n\t" \ - "mov loc0=gp\n\t" \ - "addl r16=@ltoff(@dtpmod(" #x ")),gp\n\t" \ - "addl r17=@ltoff(@dtprel(" #x ")),gp\n\t" \ - ";;\n\t" \ - "ld8 out0=[r16]\n\t" \ - "ld8 out1=[r17]\n\t" \ - "br.call.sptk.many b0=__tls_get_addr" \ - ";;\n\t" \ - "mov gp=loc0\n\t" \ - "mov %0=r8\n\t" \ - ";;\n\t" \ - : "=r" (__l) : "r" (__gp) : "loc0", __TLS_CALL_CLOBBERS); \ - __l; }) - diff --git a/test/tls/tls-macros-metag.h b/test/tls/tls-macros-metag.h deleted file mode 100644 index 5533ecd76..000000000 --- a/test/tls/tls-macros-metag.h +++ /dev/null @@ -1,38 +0,0 @@ -#define TLS_GD(x) \ - ({ void *__result; \ - extern void *__tls_get_addr (void *); \ - __asm__ ("MOV %0, A1LbP\n\t" \ - "ADD %0, %0, #(" #x "@TLSGD)" \ - : "=d" (__result)); \ - (int *)__tls_get_addr (__result); }) - -#define TLS_LD(x) \ - ({ void *__result; \ - extern void *__tls_get_addr (void *); \ - __asm__ ("MOV %0, A1LbP\n\t" \ - "ADD %0, %0, #(" #x "@TLSLDM)" \ - : "=d" (__result)); \ - __result = __tls_get_addr (__result); \ - __asm__ ("ADDT %0,%0,#HI(" #x "@TLSLDO)\n\t" \ - "ADD %0,%0,#LO(" #x "@TLSLDO)" \ - : "+d" (__result)); \ - __result; }) - -#define TLS_IE(x) \ - ({ void *__result; \ - unsigned long __rel; \ - extern void *__metag_load_tp (void); \ - __asm__ ("GETD %0,[A1LbP+#(" #x "@TLSIE)]" \ - : "=d" (__rel)); \ - __result = __metag_load_tp(); \ - __result + __rel; }) - -#define TLS_LE(x) \ - ({ void *__result; \ - extern void *__metag_load_tp (void); \ - __result = __metag_load_tp(); \ - __asm__ ("ADDT %0,%0,#HI(" #x "@TLSLE)\n\t" \ - "ADD %0,%0,#LO(" #x "@TLSLE)" \ - : "+d" (__result)); \ - __result; }) - diff --git a/test/tls/tls-macros-mips.h b/test/tls/tls-macros-mips.h deleted file mode 100644 index eed0938f2..000000000 --- a/test/tls/tls-macros-mips.h +++ /dev/null @@ -1,64 +0,0 @@ -/* Macros to support TLS testing in times of missing compiler support. */ - -#include -#include - -#define __STRING2(X) __STRING(X) -#define ADDU __STRING2(PTR_ADDU) -#define ADDIU __STRING2(PTR_ADDIU) -#define LW __STRING2(PTR_L) - -/* Load the GOT pointer, which may not be in $28 in a non-PIC - (abicalls pic0) function. */ -#ifndef __PIC__ -# if _MIPS_SIM != _ABI64 -# define LOAD_GP "move %[tmp], $28\n\tla $28, __gnu_local_gp\n\t" -# else -# define LOAD_GP "move %[tmp], $28\n\tdla $28, __gnu_local_gp\n\t" -# endif -# define UNLOAD_GP "\n\tmove $28, %[tmp]" -#else -# define LOAD_GP -# define UNLOAD_GP -#endif - -# define TLS_GD(x) \ - ({ void *__result, *__tmp; \ - extern void *__tls_get_addr (void *); \ - __asm__ (LOAD_GP ADDIU " %0, $28, %%tlsgd(" #x ")" \ - UNLOAD_GP \ - : "=r" (__result), [tmp] "=&r" (__tmp)); \ - (int *)__tls_get_addr (__result); }) -# define TLS_LD(x) \ - ({ void *__result, *__tmp; \ - extern void *__tls_get_addr (void *); \ - __asm__ (LOAD_GP ADDIU " %0, $28, %%tlsldm(" #x ")" \ - UNLOAD_GP \ - : "=r" (__result), [tmp] "=&r" (__tmp)); \ - __result = __tls_get_addr (__result); \ - __asm__ ("lui $3,%%dtprel_hi(" #x ")\n\t" \ - "addiu $3,$3,%%dtprel_lo(" #x ")\n\t" \ - ADDU " %0,%0,$3" \ - : "+r" (__result) : : "$3"); \ - __result; }) -# define TLS_IE(x) \ - ({ void *__result, *__tmp; \ - __asm__ (".set push\n\t.set mips32r2\n\t" \ - "rdhwr\t%0,$29\n\t.set pop" \ - : "=v" (__result)); \ - __asm__ (LOAD_GP LW " $3,%%gottprel(" #x ")($28)\n\t" \ - ADDU " %0,%0,$3" \ - UNLOAD_GP \ - : "+r" (__result), [tmp] "=&r" (__tmp) \ - : : "$3"); \ - __result; }) -# define TLS_LE(x) \ - ({ void *__result; \ - __asm__ (".set push\n\t.set mips32r2\n\t" \ - "rdhwr\t%0,$29\n\t.set pop" \ - : "=v" (__result)); \ - __asm__ ("lui $3,%%tprel_hi(" #x ")\n\t" \ - "addiu $3,$3,%%tprel_lo(" #x ")\n\t" \ - ADDU " %0,%0,$3" \ - : "+r" (__result) : : "$3"); \ - __result; }) diff --git a/test/tls/tls-macros-powerpc.h b/test/tls/tls-macros-powerpc.h deleted file mode 100644 index ef293bb2f..000000000 --- a/test/tls/tls-macros-powerpc.h +++ /dev/null @@ -1,87 +0,0 @@ -#define __TLS_CALL_CLOBBERS \ - "0", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", \ - "lr", "ctr", "cr0", "cr1", "cr5", "cr6", "cr7" - -/* PowerPC32 Local Exec TLS access. */ -#define TLS_LE(x) \ - ({ int *__result; \ - __asm__ ("addi %0,2," #x "@tprel" \ - : "=r" (__result)); \ - __result; }) - -/* PowerPC32 Initial Exec TLS access. */ -#ifdef HAVE_ASM_PPC_REL16 -# define TLS_IE(x) \ - ({ int *__result; \ - __asm__ ("bcl 20,31,1f\n1:\t" \ - "mflr %0\n\t" \ - "addis %0,%0,_GLOBAL_OFFSET_TABLE_-1b@ha\n\t" \ - "addi %0,%0,_GLOBAL_OFFSET_TABLE_-1b@l\n\t" \ - "lwz %0," #x "@got@tprel(%0)\n\t" \ - "add %0,%0," #x "@tls" \ - : "=b" (__result) : \ - : "lr"); \ - __result; }) -#else -# define TLS_IE(x) \ - ({ int *__result; \ - __asm__ ("bl _GLOBAL_OFFSET_TABLE_@local-4\n\t" \ - "mflr %0\n\t" \ - "lwz %0," #x "@got@tprel(%0)\n\t" \ - "add %0,%0," #x "@tls" \ - : "=b" (__result) : \ - : "lr"); \ - __result; }) -#endif - -/* PowerPC32 Local Dynamic TLS access. */ -#ifdef HAVE_ASM_PPC_REL16 -# define TLS_LD(x) \ - ({ int *__result; \ - __asm__ ("bcl 20,31,1f\n1:\t" \ - "mflr 3\n\t" \ - "addis 3,3,_GLOBAL_OFFSET_TABLE_-1b@ha\n\t" \ - "addi 3,3,_GLOBAL_OFFSET_TABLE_-1b@l\n\t" \ - "addi 3,3," #x "@got@tlsld\n\t" \ - "bl __tls_get_addr@plt\n\t" \ - "addi %0,3," #x "@dtprel" \ - : "=r" (__result) : \ - : __TLS_CALL_CLOBBERS); \ - __result; }) -#else -# define TLS_LD(x) \ - ({ int *__result; \ - __asm__ ("bl _GLOBAL_OFFSET_TABLE_@local-4\n\t" \ - "mflr 3\n\t" \ - "addi 3,3," #x "@got@tlsld\n\t" \ - "bl __tls_get_addr@plt\n\t" \ - "addi %0,3," #x "@dtprel" \ - : "=r" (__result) : \ - : __TLS_CALL_CLOBBERS); \ - __result; }) -#endif - -/* PowerPC32 General Dynamic TLS access. */ -#ifdef HAVE_ASM_PPC_REL16 -# define TLS_GD(x) \ - ({ register int *__result __asm__ ("r3"); \ - __asm__ ("bcl 20,31,1f\n1:\t" \ - "mflr 3\n\t" \ - "addis 3,3,_GLOBAL_OFFSET_TABLE_-1b@ha\n\t" \ - "addi 3,3,_GLOBAL_OFFSET_TABLE_-1b@l\n\t" \ - "addi 3,3," #x "@got@tlsgd\n\t" \ - "bl __tls_get_addr@plt" \ - : : \ - : __TLS_CALL_CLOBBERS); \ - __result; }) -#else -# define TLS_GD(x) \ - ({ register int *__result __asm__ ("r3"); \ - __asm__ ("bl _GLOBAL_OFFSET_TABLE_@local-4\n\t" \ - "mflr 3\n\t" \ - "addi 3,3," #x "@got@tlsgd\n\t" \ - "bl __tls_get_addr@plt" \ - : : \ - : __TLS_CALL_CLOBBERS); \ - __result; }) -#endif diff --git a/test/tls/tls-macros-sh.h b/test/tls/tls-macros-sh.h deleted file mode 100644 index f84399cd8..000000000 --- a/test/tls/tls-macros-sh.h +++ /dev/null @@ -1,143 +0,0 @@ -#define TLS_LE(x) \ - ({ int *__l; void *__tp; \ - __asm__ ("stc gbr,%1\n\t" \ - "mov.l 1f,%0\n\t" \ - "bra 2f\n\t" \ - " add %1,%0\n\t" \ - ".align 2\n\t" \ - "1: .long " #x "@tpoff\n\t" \ - "2:" \ - : "=r" (__l), "=r" (__tp)); \ - __l; }) - -#ifdef __PIC__ -# define TLS_IE(x) \ - ({ int *__l; void *__tp; \ - register void *__gp __asm__("r12"); \ - __asm__ ("mov.l 1f,r0\n\t" \ - "stc gbr,%1\n\t" \ - "mov.l @(r0,r12),%0\n\t" \ - "bra 2f\n\t" \ - " add %1,%0\n\t" \ - ".align 2\n\t" \ - "1: .long " #x "@gottpoff\n\t" \ - "2:" \ - : "=r" (__l), "=r" (__tp) : "r" (__gp) : "r0"); \ - __l; }) -#else -# define TLS_IE(x) \ - ({ int *__l; void *__tp; \ - __asm__ ("mov.l r12,@-r15\n\t" \ - "mova 0f,r0\n\t" \ - "mov.l 0f,r12\n\t" \ - "add r0,r12\n\t" \ - "mov.l 1f,r0\n\t" \ - "stc gbr,%1\n\t" \ - "mov.l @(r0,r12),%0\n\t" \ - "bra 2f\n\t" \ - " add %1,%0\n\t" \ - ".align 2\n\t" \ - "1: .long " #x "@gottpoff\n\t" \ - "0: .long _GLOBAL_OFFSET_TABLE_\n\t" \ - "2: mov.l @r15+,r12" \ - : "=r" (__l), "=r" (__tp) : : "r0"); \ - __l; }) -#endif - -#ifdef __PIC__ -# define TLS_LD(x) \ - ({ int *__l; \ - register void *__gp __asm__("r12"); \ - __asm__ ("mov.l 1f,r4\n\t" \ - "mova 2f,r0\n\t" \ - "mov.l 2f,r1\n\t" \ - "add r0,r1\n\t" \ - "jsr @r1\n\t" \ - " add r12,r4\n\t" \ - "bra 4f\n\t" \ - " nop\n\t" \ - ".align 2\n\t" \ - "1: .long " #x "@tlsldm\n\t" \ - "2: .long __tls_get_addr@plt\n\t" \ - "4: mov.l 3f,%0\n\t" \ - "bra 5f\n\t" \ - " add r0,%0\n\t" \ - ".align 2\n\t" \ - "3: .long " #x "@dtpoff\n\t" \ - "5:" \ - : "=r" (__l) : "r" (__gp) : "r0", "r1", "r2", "r3", "r4", "r5", \ - "r6", "r7", "pr", "t"); \ - __l; }) -#else -# define TLS_LD(x) \ - ({ int *__l; \ - __asm__ ("mov.l r12,@-r15\n\t" \ - "mova 0f,r0\n\t" \ - "mov.l 0f,r12\n\t" \ - "add r0,r12\n\t" \ - "mov.l 1f,r4\n\t" \ - "mova 2f,r0\n\t" \ - "mov.l 2f,r1\n\t" \ - "add r0,r1\n\t" \ - "jsr @r1\n\t" \ - " add r12,r4\n\t" \ - "bra 4f\n\t" \ - " nop\n\t" \ - ".align 2\n\t" \ - "1: .long " #x "@tlsldm\n\t" \ - "2: .long __tls_get_addr@plt\n\t" \ - "0: .long _GLOBAL_OFFSET_TABLE_\n\t" \ - "4: mov.l 3f,%0\n\t" \ - "bra 5f\n\t" \ - " add r0,%0\n\t" \ - ".align 2\n\t" \ - "3: .long " #x "@dtpoff\n\t" \ - "5: mov.l @r15+,r12" \ - : "=r" (__l) : : "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", \ - "pr", "t"); \ - __l; }) -#endif - -#ifdef __PIC__ -# define TLS_GD(x) \ - ({ int *__l; \ - register void *__gp __asm__("r12"); \ - __asm__ ("mov.l 1f,r4\n\t" \ - "mova 2f,r0\n\t" \ - "mov.l 2f,r1\n\t" \ - "add r0,r1\n\t" \ - "jsr @r1\n\t" \ - " add r12,r4\n\t" \ - "bra 3f\n\t" \ - " mov r0,%0\n\t" \ - ".align 2\n\t" \ - "1: .long " #x "@tlsgd\n\t" \ - "2: .long __tls_get_addr@plt\n\t" \ - "3:" \ - : "=r" (__l) : "r" (__gp) : "r0", "r1", "r2", "r3", "r4", "r5", \ - "r6", "r7", "pr", "t"); \ - __l; }) -#else -# define TLS_GD(x) \ - ({ int *__l; \ - __asm__ ("mov.l r12,@-r15\n\t" \ - "mova 0f,r0\n\t" \ - "mov.l 0f,r12\n\t" \ - "add r0,r12\n\t" \ - "mov.l 1f,r4\n\t" \ - "mova 2f,r0\n\t" \ - "mov.l 2f,r1\n\t" \ - "add r0,r1\n\t" \ - "jsr @r1\n\t" \ - " add r12,r4\n\t" \ - "bra 3f\n\t" \ - " mov r0,%0\n\t" \ - ".align 2\n\t" \ - "1: .long " #x "@tlsgd\n\t" \ - "2: .long __tls_get_addr@plt\n\t" \ - "0: .long _GLOBAL_OFFSET_TABLE_\n\t" \ - "3: mov.l @r15+,r12" \ - : "=r" (__l) : : "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", \ - "pr", "t"); \ - __l; }) -#endif diff --git a/test/tls/tls-macros-sparc.h b/test/tls/tls-macros-sparc.h deleted file mode 100644 index 710ced177..000000000 --- a/test/tls/tls-macros-sparc.h +++ /dev/null @@ -1,67 +0,0 @@ -#define TLS_LE(x) \ - ({ int *__l; \ - __asm__ ("sethi %%tle_hix22(" #x "), %0" : "=r" (__l)); \ - __asm__ ("xor %1, %%tle_lox10(" #x "), %0" : "=r" (__l) : "r" (__l)); \ - __asm__ ("add %%g7, %1, %0" : "=r" (__l) : "r" (__l)); \ - __l; }) - -#ifdef __PIC__ -# define TLS_LOAD_PIC \ - ({ register long pc __asm__ ("%o7"); \ - long got; \ - __asm__ ("sethi %%hi(_GLOBAL_OFFSET_TABLE_-4), %1\n\t" \ - "call .+8\n\t" \ - "add %1, %%lo(_GLOBAL_OFFSET_TABLE_+4), %1\n\t" \ - "add %1, %0, %1\n\t" \ - : "=r" (pc), "=r" (got)); \ - got; }) -#else -# define TLS_LOAD_PIC \ - ({ long got; \ - __asm__ (".hidden _GLOBAL_OFFSET_TABLE_\n\t" \ - "sethi %%hi(_GLOBAL_OFFSET_TABLE_), %0\n\t" \ - "or %0, %%lo(_GLOBAL_OFFSET_TABLE_), %0" \ - : "=r" (got)); \ - got; }) -#endif - -#define TLS_IE(x) \ - ({ int *__l; \ - __asm__ ("sethi %%tie_hi22(" #x "), %0" : "=r" (__l)); \ - __asm__ ("add %1, %%tie_lo10(" #x "), %0" : "=r" (__l) : "r" (__l)); \ - __asm__ ("ld [%1 + %2], %0, %%tie_ld(" #x ")" \ - : "=r" (__l) : "r" (TLS_LOAD_PIC), "r" (__l)); \ - __asm__ ("add %%g7, %1, %0, %%tie_add(" #x ")" : "=r" (__l) : "r" (__l)); \ - __l; }) - -#define TLS_LD(x) \ - ({ int *__l; register void *__o0 __asm__ ("%o0"); \ - long __o; \ - __asm__ ("sethi %%tldm_hi22(" #x "), %0" : "=r" (__l)); \ - __asm__ ("add %1, %%tldm_lo10(" #x "), %0" : "=r" (__l) : "r" (__l)); \ - __asm__ ("add %1, %2, %0, %%tldm_add(" #x ")" \ - : "=r" (__o0) : "r" (TLS_LOAD_PIC), "r" (__l)); \ - __asm__ ("call __tls_get_addr, %%tgd_call(" #x ")\n\t" \ - " nop" \ - : "=r" (__o0) : "0" (__o0) \ - : "g1", "g2", "g3", "g4", "g5", "g6", "o1", "o2", "o3", "o4", \ - "o5", "o7", "cc"); \ - __asm__ ("sethi %%tldo_hix22(" #x "), %0" : "=r" (__o)); \ - __asm__ ("xor %1, %%tldo_lox10(" #x "), %0" : "=r" (__o) : "r" (__o)); \ - __asm__ ("add %1, %2, %0, %%tldo_add(" #x ")" : "=r" (__l) \ - : "r" (__o0), "r" (__o)); \ - __l; }) - -#define TLS_GD(x) \ - ({ int *__l; register void *__o0 __asm__ ("%o0"); \ - __asm__ ("sethi %%tgd_hi22(" #x "), %0" : "=r" (__l)); \ - __asm__ ("add %1, %%tgd_lo10(" #x "), %0" : "=r" (__l) : "r" (__l)); \ - __asm__ ("add %1, %2, %0, %%tgd_add(" #x ")" \ - : "=r" (__o0) : "r" (TLS_LOAD_PIC), "r" (__l)); \ - __asm__ ("call __tls_get_addr, %%tgd_call(" #x ")\n\t" \ - " nop" \ - : "=r" (__o0) : "0" (__o0) \ - : "g1", "g2", "g3", "g4", "g5", "g6", "o1", "o2", "o3", "o4", \ - "o5", "o7", "cc"); \ - __o0; }) - diff --git a/test/tls/tls-macros-thumb.h b/test/tls/tls-macros-thumb.h deleted file mode 100644 index dfa6582a5..000000000 --- a/test/tls/tls-macros-thumb.h +++ /dev/null @@ -1,57 +0,0 @@ -#define TLS_LE(x) \ - ({ int *__result; \ - void *tp = __builtin_thread_pointer (); \ - __asm__ ("ldr %0, 1f; " \ - "add %0, %1, %0; " \ - "b 2f; " \ - ".align 2; " \ - "1: .word " #x "(tpoff); " \ - "2: " \ - : "=&r" (__result) : "r" (tp)); \ - __result; }) - -#define TLS_IE(x) \ - ({ int *__result; \ - int tmp; \ - void *tp = __builtin_thread_pointer (); \ - __asm__ ("ldr %0, 1f; " \ - "adr %1, 1f; " \ - "ldr %0, [%1, %0]; " \ - "add %0, %2, %0; " \ - "b 2f; " \ - ".align 2; " \ - "1: .word " #x "(gottpoff); " \ - "2: " \ - : "=&r" (__result), "=&r"(tmp) : "r" (tp)); \ - __result; }) - -#define TLS_LD(x) \ - ({ char *__result; \ - int __offset; \ - extern void *__tls_get_addr (void *); \ - __asm__ ("ldr %0, 2f; " \ - ".align 2; " \ - "1: add %0, pc, %0; " \ - "b 3f; " \ - "2: .word " #x "(tlsldm) + (. - 1b - 4); " \ - "3: " \ - : "=r" (__result)); \ - __result = (char *)__tls_get_addr (__result); \ - __asm__ ("ldr %0, 1f; " \ - "b 2f; " \ - "1: .word " #x "(tlsldo); " \ - "2: " \ - : "=r" (__offset)); \ - (int *) (__result + __offset); }) - -#define TLS_GD(x) \ - ({ int *__result; \ - extern void *__tls_get_addr (void *); \ - __asm__ ("ldr %0, 2f; " \ - ".align 2; " \ - "1: add %0, pc, %0; " \ - "b 3f; " \ - "2: .word " #x "(tlsgd) + (. - 1b - 4); " \ - "3: " \ - : "=r" (__result)); \ - (int *)__tls_get_addr (__result); }) diff --git a/test/tls/tls-macros-x86_64.h b/test/tls/tls-macros-x86_64.h deleted file mode 100644 index b8a8b71f4..000000000 --- a/test/tls/tls-macros-x86_64.h +++ /dev/null @@ -1,40 +0,0 @@ -#define TLS_LE(x) \ - ({ int *__l; \ - __asm__ ("mov %%fs:0,%0\n\t" \ - "lea " #x "@tpoff(%0), %0" \ - : "=r" (__l)); \ - __l; }) - -#define TLS_IE(x) \ - ({ int *__l; \ - __asm__ ("mov %%fs:0,%0\n\t" \ - "add " #x "@gottpoff(%%rip),%0" \ - : "=r" (__l)); \ - __l; }) - -#define TLS_LD(x) \ - ({ int *__l, __c, __d; \ - __asm__ ("leaq " #x "@tlsld(%%rip),%%rdi\n\t" \ - "call __tls_get_addr@plt\n\t" \ - "leaq " #x "@dtpoff(%%rax), %%rax" \ - : "=a" (__l), "=&c" (__c), "=&d" (__d) \ - : : "rdi", "rsi", "r8", "r9", "r10", "r11"); \ - __l; }) - -#ifdef __ILP32__ -# define TLS_GD_PREFIX -#else -# define TLS_GD_PREFIX ".byte 0x66\n\t" -#endif - -#define TLS_GD(x) \ - ({ int *__l, __c, __d; \ - __asm__ (TLS_GD_PREFIX \ - "leaq " #x "@tlsgd(%%rip),%%rdi\n\t" \ - ".word 0x6666\n\t" \ - "rex64\n\t" \ - "call __tls_get_addr@plt" \ - : "=a" (__l), "=&c" (__c), "=&d" (__d) \ - : : "rdi", "rsi", "r8", "r9", "r10", "r11"); \ - __l; }) - diff --git a/test/tls/tls-macros-xtensa.h b/test/tls/tls-macros-xtensa.h deleted file mode 100644 index 179dc5e57..000000000 --- a/test/tls/tls-macros-xtensa.h +++ /dev/null @@ -1,61 +0,0 @@ -#if defined(__XTENSA_WINDOWED_ABI__) -#define TLS_GD(x) \ - ({ int *__l; \ - __asm__ ("movi a8, " #x "@TLSFUNC\n\t" \ - "movi a10, " #x "@TLSARG\n\t" \ - "callx8.tls a8, " #x "@TLSCALL\n\t" \ - "mov %0, a10\n\t" \ - : "=r" (__l) \ - : \ - : "a8", "a9", "a10", "a11", "a12", "a13", "a14", "a15"); \ - __l; }) - -#define TLS_LD(x) \ - ({ int *__l; \ - __asm__ ("movi a8, _TLS_MODULE_BASE_@TLSFUNC\n\t" \ - "movi a10, _TLS_MODULE_BASE_@TLSARG\n\t" \ - "callx8.tls a8, _TLS_MODULE_BASE_@TLSCALL\n\t" \ - "movi %0, " #x "@TPOFF\n\t" \ - "add %0, %0, a10\n\t" \ - : "=r" (__l) \ - : \ - : "a8", "a9", "a10", "a11", "a12", "a13", "a14", "a15"); \ - __l; }) -#elif defined(__XTENSA_CALL0_ABI__) -#define TLS_GD(x) \ - ({ int *__l; \ - __asm__ ("movi a0, " #x "@TLSFUNC\n\t" \ - "movi a2, " #x "@TLSARG\n\t" \ - "callx0.tls a0, " #x "@TLSCALL\n\t" \ - "mov %0, a2\n\t" \ - : "=r" (__l) \ - : \ - : "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "a11");\ - __l; }) - -#define TLS_LD(x) \ - ({ int *__l; \ - __asm__ ("movi a0, _TLS_MODULE_BASE_@TLSFUNC\n\t" \ - "movi a2, _TLS_MODULE_BASE_@TLSARG\n\t" \ - "callx0.tls a0, _TLS_MODULE_BASE_@TLSCALL\n\t" \ - "movi %0, " #x "@TPOFF\n\t" \ - "add %0, %0, a2\n\t" \ - : "=r" (__l) \ - : \ - : "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "a11");\ - __l; }) -#else -#error Unsupported Xtensa ABI -#endif - -#define TLS_IE(x) TLS_LE(x) - -#define TLS_LE(x) \ - ({ int *__l; \ - int __t; \ - __asm__ ("rur %0, threadptr\n\t" \ - "movi %1, " #x "@TPOFF\n\t" \ - "add %0, %0, %1\n\t" \ - : "=r" (__l), "=r" (__t) ); \ - __l; }); \ - diff --git a/test/tls/tls-macros.h b/test/tls/tls-macros.h deleted file mode 100644 index 0300dbaec..000000000 --- a/test/tls/tls-macros.h +++ /dev/null @@ -1,74 +0,0 @@ -/* Macros to support TLS testing in times of missing compiler support. */ - -#define COMMON_INT_DEF(x) \ - __asm__ (".tls_common " #x ",4,4") -/* XXX Until we get compiler support we don't need declarations. */ -#define COMMON_INT_DECL(x) - -/* XXX This definition will probably be machine specific, too. */ -#define VAR_INT_DEF(x) \ - __asm__ (".section .tdata\n\t" \ - ".globl " #x "\n" \ - ".balign 4\n" \ - #x ":\t.long 0\n\t" \ - ".size " #x ",4\n\t" \ - ".previous") -/* XXX Until we get compiler support we don't need declarations. */ -#define VAR_INT_DECL(x) - -#ifdef __alpha__ -#include -#endif - -#ifdef __arc__ -#include -#endif - -#ifdef __arm__ -#ifdef __thumb__ -#include -#else -#include -#endif -#endif - -#ifdef __i386__ -#include -#endif - -#ifdef __ia64__ -#include -#endif - -#ifdef __metag__ -#include -#endif - -#ifdef __mips__ -#include -#endif - -#ifdef __powerpc__ -#include -#endif - -#ifdef __sh__ -#include -#endif - -#ifdef __sparc__ -#include -#endif - -#ifdef __x86_64__ -#include -#endif - -#ifdef __xtensa__ -#include -#endif - -#if !defined TLS_LE || !defined TLS_IE \ - || !defined TLS_LD || !defined TLS_GD -# error "No support for this architecture so far." -#endif diff --git a/test/tls/tst-tls-at-ctor.c b/test/tls/tst-tls-at-ctor.c deleted file mode 100644 index 53aece181..000000000 --- a/test/tls/tst-tls-at-ctor.c +++ /dev/null @@ -1,21 +0,0 @@ -#include -#include -#include - -#define TLS_VAR_INIT_VALUE 99 - -#ifdef USE_TLS -extern __thread int tls_var; -#endif - -int main(void) -{ - int ret = EXIT_SUCCESS; -#ifdef USE_TLS - if (tls_var != TLS_VAR_INIT_VALUE) { - printf("tls_var = %d - Expected value = %d\n", tls_var, TLS_VAR_INIT_VALUE); - ret = EXIT_FAILURE; - } -#endif - return ret; -} diff --git a/test/tls/tst-tls1-static.c b/test/tls/tst-tls1-static.c deleted file mode 100644 index a01008073..000000000 --- a/test/tls/tst-tls1-static.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-tls1.c" diff --git a/test/tls/tst-tls1.c b/test/tls/tst-tls1.c deleted file mode 100644 index f5ac6d2bc..000000000 --- a/test/tls/tst-tls1.c +++ /dev/null @@ -1,92 +0,0 @@ -/* glibc test for TLS in ld.so. */ -#undef _LIBC -#include - -#include - -#ifdef USE_TLS -# include "tls-macros.h" - - -/* Two common 'int' variables in TLS. */ -COMMON_INT_DEF(foo); -COMMON_INT_DEF(bar); -#endif - - -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ -#ifdef USE_TLS - int result = 0; - int *ap, *bp; - - - /* Set the variable using the local exec model. */ - puts ("set bar to 1 (LE)"); - ap = TLS_LE (bar); - *ap = 1; - - - /* Get variables using initial exec model. */ - fputs ("get sum of foo and bar (IE)", stdout); - ap = TLS_IE (foo); - bp = TLS_IE (bar); - printf (" = %d\n", *ap + *bp); - result |= *ap + *bp != 1; - if (*ap != 0) - { - printf ("foo = %d\n", *ap); - result = 1; - } - if (*bp != 1) - { - printf ("bar = %d\n", *bp); - result = 1; - } - - - /* Get variables using local dynamic model. */ - fputs ("get sum of foo and bar (LD)", stdout); - ap = TLS_LD (foo); - bp = TLS_LD (bar); - printf (" = %d\n", *ap + *bp); - result |= *ap + *bp != 1; - if (*ap != 0) - { - printf ("foo = %d\n", *ap); - result = 1; - } - if (*bp != 1) - { - printf ("bar = %d\n", *bp); - result = 1; - } - - - /* Get variables using generic dynamic model. */ - fputs ("get sum of foo and bar (GD)", stdout); - ap = TLS_GD (foo); - bp = TLS_GD (bar); - printf (" = %d\n", *ap + *bp); - result |= *ap + *bp != 1; - if (*ap != 0) - { - printf ("foo = %d\n", *ap); - result = 1; - } - if (*bp != 1) - { - printf ("bar = %d\n", *bp); - result = 1; - } - - return result; -#else - return 0; -#endif -} - - -#include "../test-skeleton.c" diff --git a/test/tls/tst-tls10.c b/test/tls/tst-tls10.c deleted file mode 100644 index fc0677072..000000000 --- a/test/tls/tst-tls10.c +++ /dev/null @@ -1,40 +0,0 @@ -#include "tst-tls10.h" - -#ifdef USE_TLS__THREAD -__thread int dummy __attribute__((visibility ("hidden"))) = 12; -__thread struct A local = { 1, 2, 3 }; -#endif - -#define CHECK(N, S) \ - p = f##N##a (); \ - if (p->a != S || p->b != S + 1 || p->c != S + 2) \ - abort () - -int -main (void) -{ - struct A *p; - if (local.a != 1 || local.b != 2 || local.c != 3) - abort (); -#ifdef USE_TLS__THREAD - if (a1.a != 4 || a1.b != 5 || a1.c != 6) - abort (); - if (a2.a != 22 || a2.b != 23 || a2.c != 24) - abort (); - if (a3.a != 10 || a3.b != 11 || a3.c != 12) - abort (); - if (a4.a != 25 || a4.b != 26 || a4.c != 27) - abort (); - check1 (); - check2 (); - if (f1a () != &a1 || f2a () != &a2 || f3a () != &a3 || f4a () != &a4) - abort (); - CHECK (5, 16); - CHECK (6, 19); - if (f7a () != &a2 || f8a () != &a4) - abort (); - CHECK (9, 28); - CHECK (10, 31); -#endif - exit (0); -} diff --git a/test/tls/tst-tls10.h b/test/tls/tst-tls10.h deleted file mode 100644 index 1be6adc29..000000000 --- a/test/tls/tst-tls10.h +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include - -#if defined USE_TLS && defined HAVE___THREAD \ - && defined HAVE_TLS_MODEL_ATTRIBUTE -# define USE_TLS__THREAD - -struct A -{ - char a; - int b; - long long c; -}; - -extern __thread struct A a1, a2, a3, a4; -extern struct A *f1a (void); -extern struct A *f2a (void); -extern struct A *f3a (void); -extern struct A *f4a (void); -extern struct A *f5a (void); -extern struct A *f6a (void); -extern struct A *f7a (void); -extern struct A *f8a (void); -extern struct A *f9a (void); -extern struct A *f10a (void); -extern int f1b (void); -extern int f2b (void); -extern int f3b (void); -extern int f4b (void); -extern int f5b (void); -extern int f6b (void); -extern int f7b (void); -extern int f8b (void); -extern int f9b (void); -extern int f10b (void); -extern void check1 (void); -extern void check2 (void); -#endif diff --git a/test/tls/tst-tls11.c b/test/tls/tst-tls11.c deleted file mode 100644 index 816cf5cc2..000000000 --- a/test/tls/tst-tls11.c +++ /dev/null @@ -1,27 +0,0 @@ -#include "tst-tls10.h" - -#define CHECK(N, S) \ - p = f##N##a (); \ - if (p->a != S || p->b != S + 1 || p->c != S + 2) \ - abort () - -int -main (void) -{ -#ifdef USE_TLS__THREAD - struct A *p; - check1 (); - check2 (); - CHECK (1, 4); - CHECK (2, 22); - CHECK (3, 10); - CHECK (4, 25); - CHECK (5, 16); - CHECK (6, 19); - CHECK (7, 22); - CHECK (8, 25); - CHECK (9, 28); - CHECK (10, 31); -#endif - exit (0); -} diff --git a/test/tls/tst-tls12.c b/test/tls/tst-tls12.c deleted file mode 100644 index 84aa7d35c..000000000 --- a/test/tls/tst-tls12.c +++ /dev/null @@ -1,18 +0,0 @@ -#include "tst-tls10.h" - -#define CHECK(N, S) \ - p = &a##N; \ - if (p->a != S || p->b != S + 1 || p->c != S + 2) \ - abort () - -int -main (void) -{ -#ifdef USE_TLS__THREAD - struct A *p; - check1 (); - CHECK (1, 4); - CHECK (2, 7); -#endif - exit (0); -} diff --git a/test/tls/tst-tls13.c b/test/tls/tst-tls13.c deleted file mode 100644 index 4cb74e76b..000000000 --- a/test/tls/tst-tls13.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Check unloading modules with data in static TLS block. */ -#include -#include -#include - - -static int -do_test (void) -{ - int i; - for (i = 0; i < 1000;) - { - printf ("round %d\n",++i); - - void *h = dlopen ("tst-tlsmod13a.so", RTLD_LAZY); - if (h == NULL) - { - printf ("cannot load: %s\n", dlerror ()); - exit (1); - } - - dlclose (h); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#define TIMEOUT 50 -#include "../test-skeleton.c" diff --git a/test/tls/tst-tls14.c b/test/tls/tst-tls14.c deleted file mode 100644 index 428fd5293..000000000 --- a/test/tls/tst-tls14.c +++ /dev/null @@ -1,66 +0,0 @@ -/* Check alignment of TLS variable. */ -#include -#include -#include -#include - -#include - -#if USE_TLS && HAVE___THREAD - -#define AL 4096 -struct foo -{ - int i; -} __attribute ((aligned (AL))); - -static __thread struct foo f; -static struct foo g; - - -extern int in_dso1 (void); - - -static int -do_test (void) -{ - int result = 0; - - int fail = (((uintptr_t) &f) & (AL - 1)) != 0; - printf ("&f = %p %s\n", &f, fail ? "FAIL" : "OK"); - result |= fail; - - fail = (((uintptr_t) &g) & (AL - 1)) != 0; - printf ("&g = %p %s\n", &g, fail ? "FAIL" : "OK"); - result |= fail; - - result |= in_dso1 (); - - void *h = dlopen ("tst-tlsmod14b.so", RTLD_LAZY); - if (h == NULL) - { - printf ("cannot open tst-tlsmod14b.so: %m\n"); - exit (1); - } - - int (*fp) (void) = (int (*) (void)) dlsym (h, "in_dso2"); - if (fp == NULL) - { - puts ("cannot find in_dso2"); - exit (1); - } - - result |= fp (); - - return result; -} - -#define TEST_FUNCTION do_test () - -#else - -#define TEST_FUNCTION 0 - -#endif - -#include "../test-skeleton.c" diff --git a/test/tls/tst-tls15.c b/test/tls/tst-tls15.c deleted file mode 100644 index 2c2df251b..000000000 --- a/test/tls/tst-tls15.c +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include -#include - -static int -do_test (void) -{ - void *h = dlopen ("tst-tlsmod15a.so", RTLD_NOW); - if (h != NULL) - { - puts ("unexpectedly succeeded to open tst-tlsmod15a.so"); - exit (1); - } - - h = dlopen ("tst-tlsmod15b.so", RTLD_NOW); - if (h == NULL) - { - puts ("failed to open tst-tlsmod15b.so"); - exit (1); - } - - int (*fp) (void) = (int (*) (void)) dlsym (h, "in_dso"); - if (fp == NULL) - { - puts ("cannot find in_dso"); - exit (1); - } - - return fp (); -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/tls/tst-tls16.c b/test/tls/tst-tls16.c deleted file mode 100644 index 17912dc30..000000000 --- a/test/tls/tst-tls16.c +++ /dev/null @@ -1,53 +0,0 @@ -#include -#include -#include - -static int -do_test (void) -{ - void *h = dlopen ("tst-tlsmod16a.so", RTLD_LAZY | RTLD_GLOBAL); - if (h == NULL) - { - puts ("unexpectedly failed to open tst-tlsmod16a.so"); - exit (1); - } - - void *p = dlsym (h, "tlsvar"); - - /* This dlopen should indeed fail, because tlsvar was assigned to - dynamic TLS, and the new module requests it to be in static TLS. - However, there's a possibility that dlopen succeeds if the - variable is, for whatever reason, assigned to static TLS, or if - the module fails to require static TLS, or even if TLS is not - supported. */ - h = dlopen ("tst-tlsmod16b.so", RTLD_NOW | RTLD_GLOBAL); - if (h == NULL) - { - return 0; - } - - puts ("unexpectedly succeeded to open tst-tlsmod16b.so"); - - - void *(*fp) (void) = (void *(*) (void)) dlsym (h, "in_dso"); - if (fp == NULL) - { - puts ("cannot find in_dso"); - exit (1); - } - - /* If the dlopen passes, at least make sure the address returned by - dlsym is the same as that returned by the initial-exec access. - If the variable was assigned to dynamic TLS during dlsym, this - portion will fail. */ - if (fp () != p) - { - puts ("returned values do not match"); - exit (1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/tls/tst-tls17.c b/test/tls/tst-tls17.c deleted file mode 100644 index c1bc7d8f4..000000000 --- a/test/tls/tst-tls17.c +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include -#include - -static int -do_test (void) -{ - void *h = dlopen ("tst-tlsmod17b.so", RTLD_LAZY); - if (h == NULL) - { - puts ("unexpectedly failed to open tst-tlsmod17b.so"); - exit (1); - } - - int (*fp) (void) = (int (*) (void)) dlsym (h, "tlsmod17b"); - if (fp == NULL) - { - puts ("cannot find tlsmod17b"); - exit (1); - } - - if (fp ()) - exit (1); - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/tls/tst-tls18.c b/test/tls/tst-tls18.c deleted file mode 100644 index 00dcdff4e..000000000 --- a/test/tls/tst-tls18.c +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include -#include - -static int -do_test (void) -{ - char modname[sizeof "tst-tlsmod18aXX.so"]; - void *h[20]; - for (int i = 0; i < 20; i++) - { - snprintf (modname, sizeof modname, "tst-tlsmod18a%d.so", i); - h[i] = dlopen (modname, RTLD_LAZY); - if (h[i] == NULL) - { - printf ("unexpectedly failed to open %s", modname); - exit (1); - } - } - - for (int i = 0; i < 20; i++) - { - int (*fp) (void) = (int (*) (void)) dlsym (h[i], "test"); - if (fp == NULL) - { - printf ("cannot find test in tst-tlsmod18a%d.so", i); - exit (1); - } - - if (fp ()) - exit (1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/test/tls/tst-tls2-static.c b/test/tls/tst-tls2-static.c deleted file mode 100644 index 55ffa5744..000000000 --- a/test/tls/tst-tls2-static.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-tls2.c" diff --git a/test/tls/tst-tls2.c b/test/tls/tst-tls2.c deleted file mode 100644 index 417489968..000000000 --- a/test/tls/tst-tls2.c +++ /dev/null @@ -1,91 +0,0 @@ -/* glibc test for TLS in ld.so. */ -#include - -#include - -#ifdef USE_TLS -# include "tls-macros.h" - - -/* Two 'int' variables in TLS. */ -VAR_INT_DEF(foo); -VAR_INT_DEF(bar); -#endif - - -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ -#ifdef USE_TLS - int result = 0; - int *ap, *bp; - - - /* Set the variable using the local exec model. */ - puts ("set bar to 1 (LE)"); - ap = TLS_LE (bar); - *ap = 1; - - - /* Get variables using initial exec model. */ - fputs ("get sum of foo and bar (IE)", stdout); - ap = TLS_IE (foo); - bp = TLS_IE (bar); - printf (" = %d\n", *ap + *bp); - result |= *ap + *bp != 1; - if (*ap != 0) - { - printf ("foo = %d\n", *ap); - result = 1; - } - if (*bp != 1) - { - printf ("bar = %d\n", *bp); - result = 1; - } - - - /* Get variables using local dynamic model. */ - fputs ("get sum of foo and bar (LD)", stdout); - ap = TLS_LD (foo); - bp = TLS_LD (bar); - printf (" = %d\n", *ap + *bp); - result |= *ap + *bp != 1; - if (*ap != 0) - { - printf ("foo = %d\n", *ap); - result = 1; - } - if (*bp != 1) - { - printf ("bar = %d\n", *bp); - result = 1; - } - - - /* Get variables using generic dynamic model. */ - fputs ("get sum of foo and bar (GD)", stdout); - ap = TLS_GD (foo); - bp = TLS_GD (bar); - printf (" = %d\n", *ap + *bp); - result |= *ap + *bp != 1; - if (*ap != 0) - { - printf ("foo = %d\n", *ap); - result = 1; - } - if (*bp != 1) - { - printf ("bar = %d\n", *bp); - result = 1; - } - - return result; -#else - return 0; -#endif -} - - -#include "../test-skeleton.c" diff --git a/test/tls/tst-tls3.c b/test/tls/tst-tls3.c deleted file mode 100644 index 84be43575..000000000 --- a/test/tls/tst-tls3.c +++ /dev/null @@ -1,76 +0,0 @@ -/* glibc test for TLS in ld.so. */ -#include - -#include - -#ifdef USE_TLS -# include "tls-macros.h" - - -/* One define int variable, two externs. */ -COMMON_INT_DECL(foo); -VAR_INT_DECL(bar); -VAR_INT_DEF(baz); -#endif - - -extern int in_dso (void); - - -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ -#ifdef USE_TLS - int result = 0; - int *ap, *bp, *cp; - - - /* Set the variable using the local exec model. */ - puts ("set baz to 3 (LE)"); - ap = TLS_LE (baz); - *ap = 3; - - - /* Get variables using initial exec model. */ - puts ("set variables foo and bar (IE)"); - ap = TLS_IE (foo); - *ap = 1; - bp = TLS_IE (bar); - *bp = 2; - - - /* Get variables using local dynamic model. */ - fputs ("get sum of foo, bar (GD) and baz (LD)", stdout); - ap = TLS_GD (foo); - bp = TLS_GD (bar); - cp = TLS_LD (baz); - printf (" = %d\n", *ap + *bp + *cp); - result |= *ap + *bp + *cp != 6; - if (*ap != 1) - { - printf ("foo = %d\n", *ap); - result = 1; - } - if (*bp != 2) - { - printf ("bar = %d\n", *bp); - result = 1; - } - if (*cp != 3) - { - printf ("baz = %d\n", *cp); - result = 1; - } - - - result |= in_dso (); - - return result; -#else - return 0; -#endif -} - - -#include "../test-skeleton.c" diff --git a/test/tls/tst-tls4.c b/test/tls/tst-tls4.c deleted file mode 100644 index f92ee53ce..000000000 --- a/test/tls/tst-tls4.c +++ /dev/null @@ -1,56 +0,0 @@ -#include -#include -#include - -#include - - -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ -#ifdef USE_TLS - static const char modname[] = "tst-tlsmod2.so"; - int result = 0; - int *foop; - int (*fp) (int, int *); - void *h; - - h = dlopen (modname, RTLD_LAZY); - if (h == NULL) - { - printf ("cannot open '%s': %s\n", modname, dlerror ()); - exit (1); - } - - fp = dlsym (h, "in_dso"); - if (fp == NULL) - { - printf ("cannot get symbol 'in_dso': %s\n", dlerror ()); - exit (1); - } - - result |= fp (0, NULL); - - foop = dlsym (h, "foo"); - if (foop == NULL) - { - printf ("cannot get symbol 'foo' the second time: %s\n", dlerror ()); - exit (1); - } - if (*foop != 16) - { - puts ("foo != 16"); - result = 1; - } - - dlclose (h); - - return result; -#else - return 0; -#endif -} - - -#include "../test-skeleton.c" diff --git a/test/tls/tst-tls5.c b/test/tls/tst-tls5.c deleted file mode 100644 index a571d2cd3..000000000 --- a/test/tls/tst-tls5.c +++ /dev/null @@ -1,72 +0,0 @@ -#include -#include -#include - -#include - - -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ -#ifdef USE_TLS - static const char modname[] = "tst-tlsmod2.so"; - int result = 0; - int *foop; - int *foop2; - int (*fp) (int, int *); - void *h; - - h = dlopen (modname, RTLD_LAZY); - if (h == NULL) - { - printf ("cannot open '%s': %s\n", modname, dlerror ()); - exit (1); - } - - foop = dlsym (h, "foo"); - if (foop == NULL) - { - printf ("cannot get symbol 'foo': %s\n", dlerror ()); - exit (1); - } - - *foop = 42; - - fp = dlsym (h, "in_dso"); - if (fp == NULL) - { - printf ("cannot get symbol 'in_dso': %s\n", dlerror ()); - exit (1); - } - - result |= fp (42, foop); - - foop2 = dlsym (h, "foo"); - if (foop2 == NULL) - { - printf ("cannot get symbol 'foo' the second time: %s\n", dlerror ()); - exit (1); - } - - if (foop != foop2) - { - puts ("address of 'foo' different the second time"); - result = 1; - } - else if (*foop != 16) - { - puts ("foo != 16"); - result = 1; - } - - dlclose (h); - - return result; -#else - return 0; -#endif -} - - -#include "../test-skeleton.c" diff --git a/test/tls/tst-tls6.c b/test/tls/tst-tls6.c deleted file mode 100644 index 0ebc50737..000000000 --- a/test/tls/tst-tls6.c +++ /dev/null @@ -1,107 +0,0 @@ -#include -#include -#include - -#include -#include -#ifdef __UCLIBC__ -#include "dl-elf.h" -#include "dl-hash.h" -#endif - - -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ -#ifdef USE_TLS - static const char modname[] = "tst-tlsmod2.so"; - int result = 0; - int *foop; - int *foop2; - int (*fp) (int, int *); - void *h; - int i; - int modid = -1; - - for (i = 0; i < 10; ++i) - { - h = dlopen (modname, RTLD_LAZY); - if (h == NULL) - { - printf ("cannot open '%s': %s\n", modname, dlerror ()); - exit (1); - } - - /* Dirty test code here: we peek into a private data structure. - We make sure that the module gets assigned the same ID every - time. The value of the first round is used. */ -#ifdef __UCLIBC__ - if (modid == -1) - modid = ((struct dyn_elf *) h)->dyn->l_tls_modid; - else if (((struct dyn_elf *)h)->dyn->l_tls_modid != (size_t) modid) - { - printf ("round %d: modid now %zu, initially %d\n", - i, - ((struct dyn_elf *)h)->dyn->l_tls_modid, - modid); - result = 1; - } -#else - if (modid == -1) - modid = ((struct link_map *) h)->l_tls_modid; - else if (((struct link_map *) h)->l_tls_modid != modid) - { - printf ("round %d: modid now %zd, initially %d\n", - i, ((struct link_map *) h)->l_tls_modid, modid); - result = 1; - } -#endif - - foop = dlsym (h, "foo"); - if (foop == NULL) - { - printf ("cannot get symbol 'foo': %s\n", dlerror ()); - exit (1); - } - - *foop = 42 + i; - - fp = dlsym (h, "in_dso"); - if (fp == NULL) - { - printf ("cannot get symbol 'in_dso': %s\n", dlerror ()); - exit (1); - } - - result |= fp (42 + i, foop); - - foop2 = dlsym (h, "foo"); - if (foop2 == NULL) - { - printf ("cannot get symbol 'foo' the second time: %s\n", dlerror ()); - exit (1); - } - - if (foop != foop2) - { - puts ("address of 'foo' different the second time"); - result = 1; - } - else if (*foop != 16) - { - puts ("foo != 16"); - result = 1; - } - - dlclose (h); - } - - return result; -#else - return 0; -#endif -} - - -#include "../test-skeleton.c" diff --git a/test/tls/tst-tls7.c b/test/tls/tst-tls7.c deleted file mode 100644 index 2dde9afa4..000000000 --- a/test/tls/tst-tls7.c +++ /dev/null @@ -1,78 +0,0 @@ -#include -#include -#include - -#include -#include -#ifdef __UCLIBC__ -#include "dl-elf.h" -#include "dl-hash.h" -#endif - - -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ -#ifdef USE_TLS - static const char modname[] = "tst-tlsmod3.so"; - int result = 0; - int (*fp) (void); - void *h; - int i; - int modid = -1; - - for (i = 0; i < 10; ++i) - { - h = dlopen (modname, RTLD_LAZY); - if (h == NULL) - { - printf ("cannot open '%s': %s\n", modname, dlerror ()); - exit (1); - } - - /* Dirty test code here: we peek into a private data structure. - We make sure that the module gets assigned the same ID every - time. The value of the first round is used. */ -#ifdef __UCLIBC__ - if (modid == -1) - modid = ((struct dyn_elf *) h)->dyn->l_tls_modid; - else if (((struct dyn_elf *)h)->dyn->l_tls_modid != (size_t) modid) - { - printf ("round %d: modid now %zu, initially %d\n", - i, - ((struct dyn_elf *)h)->dyn->l_tls_modid, - modid); - result = 1; - } -#else - if (modid == -1) - modid = ((struct link_map *) h)->l_tls_modid; - else if (((struct link_map *) h)->l_tls_modid != (size_t) modid) - { - printf ("round %d: modid now %zu, initially %d\n", - i, ((struct link_map *) h)->l_tls_modid, modid); - result = 1; - } -#endif - - fp = dlsym (h, "in_dso2"); - if (fp == NULL) - { - printf ("cannot get symbol 'in_dso2': %s\n", dlerror ()); - exit (1); - } - - result |= fp (); - - dlclose (h); - } - - return result; -#else - return 0; -#endif -} - - -#include "../test-skeleton.c" diff --git a/test/tls/tst-tls8.c b/test/tls/tst-tls8.c deleted file mode 100644 index 140de438e..000000000 --- a/test/tls/tst-tls8.c +++ /dev/null @@ -1,229 +0,0 @@ -#include -#include -#include - -#include -#include -#ifdef __UCLIBC__ -#include "dl-elf.h" -#include "dl-hash.h" -#endif - - -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ -#ifdef USE_TLS - static const char modname1[] = "tst-tlsmod3.so"; - static const char modname2[] = "tst-tlsmod4.so"; - int result = 0; - int (*fp1) (void); - int (*fp2) (int, int *); - void *h1; - void *h2; - int i; - size_t modid1 = (size_t) -1; - size_t modid2 = (size_t) -1; - int *bazp; - - for (i = 0; i < 10; ++i) - { - h1 = dlopen (modname1, RTLD_LAZY); - if (h1 == NULL) - { - printf ("cannot open '%s': %s\n", modname1, dlerror ()); - exit (1); - } - - /* Dirty test code here: we peek into a private data structure. - We make sure that the module gets assigned the same ID every - time. The value of the first round is used. */ -#ifdef __UCLIBC__ - if (modid1 == (size_t) -1) - modid1 = ((struct dyn_elf *) h1)->dyn->l_tls_modid; - else if (((struct dyn_elf *)h1)->dyn->l_tls_modid != (size_t) modid1) - { - printf ("round %d: modid now %zd, initially %zd\n", - i, - ((struct dyn_elf *)h1)->dyn->l_tls_modid, - modid1); - result = 1; - } -#else - if (modid1 == (size_t) -1) - modid1 = ((struct link_map *) h1)->l_tls_modid; - else if (((struct link_map *) h1)->l_tls_modid != modid1) - { - printf ("round %d: modid now %zd, initially %zd\n", - i, ((struct link_map *) h1)->l_tls_modid, modid1); - result = 1; - } -#endif - - fp1 = dlsym (h1, "in_dso2"); - if (fp1 == NULL) - { - printf ("cannot get symbol 'in_dso2' in %s\n", modname1); - exit (1); - } - - result |= fp1 (); - - - - h2 = dlopen (modname2, RTLD_LAZY); - if (h2 == NULL) - { - printf ("cannot open '%s': %s\n", modname2, dlerror ()); - exit (1); - } - - /* Dirty test code here: we peek into a private data structure. - We make sure that the module gets assigned the same ID every - time. The value of the first round is used. */ -#ifdef __UCLIBC__ - if (modid2 == (size_t) -1) - modid2 = ((struct dyn_elf *)h2)->dyn->l_tls_modid; - else if (((struct dyn_elf *)h2)->dyn->l_tls_modid - != (size_t) modid2) - { - printf ("round %d: modid now %zd, initially %zd\n", - i, - ((struct dyn_elf *)h2)->dyn->l_tls_modid, - modid2); - result = 1; - } -#else - if (modid2 == (size_t) -1) - modid2 = ((struct link_map *) h2)->l_tls_modid; - else if (((struct link_map *) h2)->l_tls_modid != modid2) - { - printf ("round %d: modid now %zd, initially %zd\n", - i, ((struct link_map *) h2)->l_tls_modid, modid2); - result = 1; - } -#endif - - bazp = dlsym (h2, "baz"); - if (bazp == NULL) - { - printf ("cannot get symbol 'baz' in %s\n", modname2); - exit (1); - } - - *bazp = 42 + i; - - fp2 = dlsym (h2, "in_dso"); - if (fp2 == NULL) - { - printf ("cannot get symbol 'in_dso' in %s\n", modname2); - exit (1); - } - - result |= fp2 (42 + i, bazp); - - dlclose (h1); - dlclose (h2); - - - h1 = dlopen (modname1, RTLD_LAZY); - if (h1 == NULL) - { - printf ("cannot open '%s': %s\n", modname1, dlerror ()); - exit (1); - } - - /* Dirty test code here: we peek into a private data structure. - We make sure that the module gets assigned the same ID every - time. The value of the first round is used. */ -#ifdef __UCLIBC__ - if (((struct dyn_elf *)h1)->dyn->l_tls_modid - != modid1) - { - printf ("round %d: modid now %zd, initially %zd\n", - i, - ((struct dyn_elf *)h1)->dyn->l_tls_modid, - modid1); - result = 1; - } -#else - if (((struct link_map *) h1)->l_tls_modid != modid1) - { - printf ("round %d: modid now %zd, initially %zd\n", - i, ((struct link_map *) h1)->l_tls_modid, modid1); - result = 1; - } -#endif - - fp1 = dlsym (h1, "in_dso2"); - if (fp1 == NULL) - { - printf ("cannot get symbol 'in_dso2' in %s\n", modname1); - exit (1); - } - - result |= fp1 (); - - - - h2 = dlopen (modname2, RTLD_LAZY); - if (h2 == NULL) - { - printf ("cannot open '%s': %s\n", modname2, dlerror ()); - exit (1); - } - - /* Dirty test code here: we peek into a private data structure. - We make sure that the module gets assigned the same ID every - time. The value of the first round is used. */ -#ifdef __UCLIBC__ - if (((struct dyn_elf *)h2)->dyn->l_tls_modid - != modid2) - { - printf ("round %d: modid now %zd, initially %zd\n", - i, - ((struct dyn_elf *)h2)->dyn->l_tls_modid, - modid2); - result = 1; - } -#else - if (((struct link_map *) h2)->l_tls_modid != modid2) - { - printf ("round %d: modid now %zd, initially %zd\n", - i, ((struct link_map *) h2)->l_tls_modid, modid2); - result = 1; - } -#endif - - bazp = dlsym (h2, "baz"); - if (bazp == NULL) - { - printf ("cannot get symbol 'baz' in %s\n", modname2); - exit (1); - } - - *bazp = 62 + i; - - fp2 = dlsym (h2, "in_dso"); - if (fp2 == NULL) - { - printf ("cannot get symbol 'in_dso' in %s\n", modname2); - exit (1); - } - - result |= fp2 (62 + i, bazp); - - /* This time the dlclose calls are in reverse order. */ - dlclose (h2); - dlclose (h1); - } - - return result; -#else - return 0; -#endif -} - - -#include "../test-skeleton.c" diff --git a/test/tls/tst-tls9-static.c b/test/tls/tst-tls9-static.c deleted file mode 100644 index 51812ccc7..000000000 --- a/test/tls/tst-tls9-static.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-tls9.c" diff --git a/test/tls/tst-tls9.c b/test/tls/tst-tls9.c deleted file mode 100644 index e317696df..000000000 --- a/test/tls/tst-tls9.c +++ /dev/null @@ -1,42 +0,0 @@ -#include -#include -#include - -#include -#include - -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ -#ifdef USE_TLS - static const char modname1[] = "tst-tlsmod5.so"; - static const char modname2[] = "tst-tlsmod6.so"; - int result = 0; - - void *h1 = dlopen (modname1, RTLD_LAZY); - if (h1 == NULL) - { - printf ("cannot open '%s': %s\n", modname1, dlerror ()); - result = 1; - } - void *h2 = dlopen (modname2, RTLD_LAZY); - if (h2 == NULL) - { - printf ("cannot open '%s': %s\n", modname2, dlerror ()); - result = 1; - } - - if (h1 != NULL) - dlclose (h1); - if (h2 != NULL) - dlclose (h2); - - return result; -#else - return 0; -#endif -} - - -#include "../test-skeleton.c" diff --git a/test/tls/tst-tlsmod-at-ctor.c b/test/tls/tst-tlsmod-at-ctor.c deleted file mode 100644 index bd04b5081..000000000 --- a/test/tls/tst-tlsmod-at-ctor.c +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include - -#define TLS_VAR_INIT_VALUE 99 - -#ifdef USE_TLS -__thread int tls_var __attribute__((tls_model("global-dynamic"))); -static __thread int local_tls_var __attribute__((tls_model("local-dynamic"))); -#endif - -void __attribute__((constructor)) libtls_ctor(void); -void libtls_ctor(void) -{ - printf("libtls: constructor!\n"); -#ifdef USE_TLS - local_tls_var = TLS_VAR_INIT_VALUE; - tls_var = local_tls_var; -#endif -} - -void __attribute__((destructor)) libtls_dtor(void); -void libtls_dtor(void) -{ - printf("libtls: destructor!\n"); -} diff --git a/test/tls/tst-tlsmod1.c b/test/tls/tst-tlsmod1.c deleted file mode 100644 index b4954ca3e..000000000 --- a/test/tls/tst-tlsmod1.c +++ /dev/null @@ -1,68 +0,0 @@ -#include - -#include - -#ifdef USE_TLS -#include "tls-macros.h" - - -/* One define int variable, two externs. */ -COMMON_INT_DEF(foo); -VAR_INT_DEF(bar); -VAR_INT_DECL(baz); -#endif - -extern int in_dso (void); - -int -in_dso (void) -{ - int result = 0; -#ifdef USE_TLS - int *ap, *bp, *cp; - - /* Get variables using initial exec model. */ - fputs ("get sum of foo and bar (IE)", stdout); - __asm__ ("" ::: "memory"); - ap = TLS_IE (foo); - bp = TLS_IE (bar); - printf (" = %d\n", *ap + *bp); - result |= *ap + *bp != 3; - if (*ap != 1) - { - printf ("foo = %d\n", *ap); - result = 1; - } - if (*bp != 2) - { - printf ("bar = %d\n", *bp); - result = 1; - } - - - /* Get variables using generic dynamic model. */ - fputs ("get sum of foo and bar and baz (GD)", stdout); - ap = TLS_GD (foo); - bp = TLS_GD (bar); - cp = TLS_GD (baz); - printf (" = %d\n", *ap + *bp + *cp); - result |= *ap + *bp + *cp != 6; - if (*ap != 1) - { - printf ("foo = %d\n", *ap); - result = 1; - } - if (*bp != 2) - { - printf ("bar = %d\n", *bp); - result = 1; - } - if (*cp != 3) - { - printf ("baz = %d\n", *cp); - result = 1; - } -#endif - - return result; -} diff --git a/test/tls/tst-tlsmod10.c b/test/tls/tst-tlsmod10.c deleted file mode 100644 index 32e54f3c0..000000000 --- a/test/tls/tst-tlsmod10.c +++ /dev/null @@ -1 +0,0 @@ -#include "tst-tlsmod8.c" diff --git a/test/tls/tst-tlsmod11.c b/test/tls/tst-tlsmod11.c deleted file mode 100644 index 9938b5753..000000000 --- a/test/tls/tst-tlsmod11.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "tst-tls10.h" - -#ifdef USE_TLS__THREAD -__thread struct A a1 = { 4, 5, 6 }; -__thread struct A a2 = { 7, 8, 9 }; -#endif diff --git a/test/tls/tst-tlsmod12.c b/test/tls/tst-tlsmod12.c deleted file mode 100644 index 4602709a1..000000000 --- a/test/tls/tst-tlsmod12.c +++ /dev/null @@ -1,14 +0,0 @@ -#include "tst-tls10.h" - -#ifdef USE_TLS__THREAD -extern __thread struct A a2 __attribute__((tls_model("initial-exec"))); - -void -check1 (void) -{ - if (a1.a != 4 || a1.b != 5 || a1.c != 6) - abort (); - if (a2.a != 7 || a2.b != 8 || a2.c != 9) - abort (); -} -#endif diff --git a/test/tls/tst-tlsmod13.c b/test/tls/tst-tlsmod13.c deleted file mode 100644 index beca89f6f..000000000 --- a/test/tls/tst-tlsmod13.c +++ /dev/null @@ -1,14 +0,0 @@ -#include - -#if defined USE_TLS && defined HAVE___THREAD \ - && defined HAVE_TLS_MODEL_ATTRIBUTE -__thread int a[2] __attribute__ ((tls_model ("initial-exec"))); -#else -int a[2]; -#endif - -int -foo (void) -{ - return a[0]; -} diff --git a/test/tls/tst-tlsmod13a.c b/test/tls/tst-tlsmod13a.c deleted file mode 100644 index 14b12b032..000000000 --- a/test/tls/tst-tlsmod13a.c +++ /dev/null @@ -1,16 +0,0 @@ -#include - -#if defined USE_TLS && defined HAVE___THREAD \ - && defined HAVE_TLS_MODEL_ATTRIBUTE -__thread int b[2] __attribute__ ((tls_model ("initial-exec"))); -#else -int b[2]; -#endif - -extern int foo (void); - -int -bar (void) -{ - return foo () + b[0]; -} diff --git a/test/tls/tst-tlsmod14a.c b/test/tls/tst-tlsmod14a.c deleted file mode 100644 index 0bb393d9c..000000000 --- a/test/tls/tst-tlsmod14a.c +++ /dev/null @@ -1,41 +0,0 @@ -#include -#include - -#include - -#if USE_TLS && HAVE___THREAD - -#define AL 4096 -struct foo -{ - int i; -} __attribute ((aligned (AL))); - -static __thread struct foo f; -static struct foo g; - - -#ifndef FCT -# define FCT in_dso1 -#endif - - -int -FCT (void) -{ - puts (__func__); - - int result = 0; - - int fail = (((uintptr_t) &f) & (AL - 1)) != 0; - printf ("&f = %p %s\n", &f, fail ? "FAIL" : "OK"); - result |= fail; - - fail = (((uintptr_t) &g) & (AL - 1)) != 0; - printf ("&g = %p %s\n", &g, fail ? "FAIL" : "OK"); - result |= fail; - - return result; -} - -#endif diff --git a/test/tls/tst-tlsmod14b.c b/test/tls/tst-tlsmod14b.c deleted file mode 100644 index 24d9ceaf7..000000000 --- a/test/tls/tst-tlsmod14b.c +++ /dev/null @@ -1,2 +0,0 @@ -#define FCT in_dso2 -#include "tst-tlsmod14a.c" diff --git a/test/tls/tst-tlsmod15a.c b/test/tls/tst-tlsmod15a.c deleted file mode 100644 index 66c707129..000000000 --- a/test/tls/tst-tlsmod15a.c +++ /dev/null @@ -1,6 +0,0 @@ -extern int nonexistent_dummy_var; -int * -foo (void) -{ - return &nonexistent_dummy_var; -} diff --git a/test/tls/tst-tlsmod15b.c b/test/tls/tst-tlsmod15b.c deleted file mode 100644 index 4f63eab14..000000000 --- a/test/tls/tst-tlsmod15b.c +++ /dev/null @@ -1,17 +0,0 @@ -#include "tst-tls10.h" - -#ifdef USE_TLS__THREAD -__thread int mod15b_var __attribute__((tls_model("initial-exec"))); - -int -in_dso (void) -{ - return mod15b_var; -} -#else -int -in_dso (void) -{ - return 0; -} -#endif diff --git a/test/tls/tst-tlsmod16a.c b/test/tls/tst-tlsmod16a.c deleted file mode 100644 index 847c8090f..000000000 --- a/test/tls/tst-tlsmod16a.c +++ /dev/null @@ -1,7 +0,0 @@ -#include - -#if defined HAVE___THREAD && defined HAVE_TLS_MODEL_ATTRIBUTE -int __thread tlsvar; -#else -int tlsvar; -#endif diff --git a/test/tls/tst-tlsmod16b.c b/test/tls/tst-tlsmod16b.c deleted file mode 100644 index 308e6bae9..000000000 --- a/test/tls/tst-tlsmod16b.c +++ /dev/null @@ -1,13 +0,0 @@ -#include - -#if defined HAVE___THREAD && defined HAVE_TLS_MODEL_ATTRIBUTE -extern __thread int tlsvar __attribute__((tls_model("initial-exec"))); -#else -extern int tlsvar; -#endif - -void * -in_dso (void) -{ - return &tlsvar; -} diff --git a/test/tls/tst-tlsmod17a.c b/test/tls/tst-tlsmod17a.c deleted file mode 100644 index 4d3965005..000000000 --- a/test/tls/tst-tlsmod17a.c +++ /dev/null @@ -1,23 +0,0 @@ -#include - -#ifndef N -#define N 0 -#endif -#define CONCAT1(s, n) s##n -#define CONCAT(s, n) CONCAT1(s, n) - -__thread int CONCAT (v, N) = 4; - -int -CONCAT (tlsmod17a, N) (void) -{ - int *p = &CONCAT (v, N); - /* GCC assumes &var is never NULL, add optimization barrier. */ - __asm__ __volatile__ ("" : "+r" (p)); - if (p == NULL || *p != 4) - { - printf ("fail %d %p\n", N, p); - return 1; - } - return 0; -} diff --git a/test/tls/tst-tlsmod17b.c b/test/tls/tst-tlsmod17b.c deleted file mode 100644 index 617882873..000000000 --- a/test/tls/tst-tlsmod17b.c +++ /dev/null @@ -1,15 +0,0 @@ -#define P(N) extern int tlsmod17a##N (void); -#define PS P(0) P(1) P(2) P(3) P(4) P(5) P(6) P(7) P(8) P(9) \ - P(10) P(12) P(13) P(14) P(15) P(16) P(17) P(18) P(19) -PS -#undef P - -int -tlsmod17b (void) -{ - int res = 0; -#define P(N) res |= tlsmod17a##N (); - PS -#undef P - return res; -} diff --git a/test/tls/tst-tlsmod18a.c b/test/tls/tst-tlsmod18a.c deleted file mode 100644 index e0ae65a88..000000000 --- a/test/tls/tst-tlsmod18a.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -#ifndef N -# define N 0 -#endif - -static __thread int var = 4; - -int -test (void) -{ - int *p = &var; - /* GCC assumes &var is never NULL, add optimization barrier. */ - __asm__ __volatile__ ("" : "+r" (p)); - if (p == NULL || *p != 4) - { - printf ("fail %d %p\n", N, p); - return 1; - } - return 0; -} diff --git a/test/tls/tst-tlsmod2.c b/test/tls/tst-tlsmod2.c deleted file mode 100644 index 4547c9716..000000000 --- a/test/tls/tst-tlsmod2.c +++ /dev/null @@ -1,38 +0,0 @@ -#include - -#include - -#ifdef USE_TLS -#include "tls-macros.h" - - -COMMON_INT_DEF(foo); - - -int -in_dso (int n, int *caller_foop) -{ - int *foop; - int result = 0; - - puts ("foo"); /* Make sure PLT is used before macros. */ - __asm__ ("" ::: "memory"); - - foop = TLS_GD (foo); - - if (caller_foop != NULL && foop != caller_foop) - { - printf ("callers address of foo differs: %p vs %p\n", caller_foop, foop); - result = 1; - } - else if (*foop != n) - { - printf ("foo != %d\n", n); - result = 1; - } - - *foop = 16; - - return result; -} -#endif diff --git a/test/tls/tst-tlsmod3.c b/test/tls/tst-tlsmod3.c deleted file mode 100644 index 12505f623..000000000 --- a/test/tls/tst-tlsmod3.c +++ /dev/null @@ -1,41 +0,0 @@ -#include - -#include - -#ifdef USE_TLS -# include "tls-macros.h" - -extern int in_dso (int n, int *caller_foop); - -COMMON_INT_DEF(comm_n); - - - - -int -in_dso2 (void) -{ - int *foop; - int result = 0; - static int n; - int *np; - - puts ("foo"); /* Make sure PLT is used before macros. */ - __asm__ ("" ::: "memory"); - - foop = TLS_GD (foo); - np = TLS_GD (comm_n); - - if (n != *np) - { - printf ("n = %d != comm_n = %d\n", n, *np); - result = 1; - } - - result |= in_dso (*foop = 42 + n++, foop); - - *foop = 16; - - return result; -} -#endif diff --git a/test/tls/tst-tlsmod4.c b/test/tls/tst-tlsmod4.c deleted file mode 100644 index 4893cdae7..000000000 --- a/test/tls/tst-tlsmod4.c +++ /dev/null @@ -1,38 +0,0 @@ -#include - -#include - -#ifdef USE_TLS -# include "tls-macros.h" - - -COMMON_INT_DEF(baz); - - -int -in_dso (int n, int *caller_bazp) -{ - int *bazp; - int result = 0; - - puts ("foo"); /* Make sure PLT is used before macros. */ - __asm__ ("" ::: "memory"); - - bazp = TLS_GD (baz); - - if (caller_bazp != NULL && bazp != caller_bazp) - { - printf ("callers address of baz differs: %p vs %p\n", caller_bazp, bazp); - result = 1; - } - else if (*bazp != n) - { - printf ("baz != %d\n", n); - result = 1; - } - - *bazp = 16; - - return result; -} -#endif diff --git a/test/tls/tst-tlsmod5.c b/test/tls/tst-tlsmod5.c deleted file mode 100644 index 2ec69e13b..000000000 --- a/test/tls/tst-tlsmod5.c +++ /dev/null @@ -1,7 +0,0 @@ -#include - -#ifdef USE_TLS -#include "tls-macros.h" - -COMMON_INT_DEF(foo); -#endif diff --git a/test/tls/tst-tlsmod6.c b/test/tls/tst-tlsmod6.c deleted file mode 100644 index 0fda51b22..000000000 --- a/test/tls/tst-tlsmod6.c +++ /dev/null @@ -1,7 +0,0 @@ -#include - -#ifdef USE_TLS -#include "tls-macros.h" - -COMMON_INT_DEF(bar); -#endif diff --git a/test/tls/tst-tlsmod7.c b/test/tls/tst-tlsmod7.c deleted file mode 100644 index 944b97f9c..000000000 --- a/test/tls/tst-tlsmod7.c +++ /dev/null @@ -1,103 +0,0 @@ -#include "tst-tls10.h" - -#ifdef USE_TLS__THREAD -__thread int dummy __attribute__((visibility ("hidden"))) = 12; -__thread struct A a1 = { 4, 5, 6 }; -__thread struct A a2 = { 7, 8, 9 }; -__thread struct A a3 __attribute__((tls_model("initial-exec"))) - = { 10, 11, 12 }; -__thread struct A a4 __attribute__((tls_model("initial-exec"))) - = { 13, 14, 15 }; -static __thread struct A local1 = { 16, 17, 18 }; -static __thread struct A local2 __attribute__((tls_model("initial-exec"))) - = { 19, 20, 21 }; - -void -check1 (void) -{ - if (a1.a != 4 || a1.b != 5 || a1.c != 6) - abort (); - if (a2.a != 22 || a2.b != 23 || a2.c != 24) - abort (); - if (a3.a != 10 || a3.b != 11 || a3.c != 12) - abort (); - if (a4.a != 25 || a4.b != 26 || a4.c != 27) - abort (); - if (local1.a != 16 || local1.b != 17 || local1.c != 18) - abort (); - if (local2.a != 19 || local2.b != 20 || local2.c != 21) - abort (); -} - -struct A * -f1a (void) -{ - return &a1; -} - -struct A * -f2a (void) -{ - return &a2; -} - -struct A * -f3a (void) -{ - return &a3; -} - -struct A * -f4a (void) -{ - return &a4; -} - -struct A * -f5a (void) -{ - return &local1; -} - -struct A * -f6a (void) -{ - return &local2; -} - -int -f1b (void) -{ - return a1.a; -} - -int -f2b (void) -{ - return a2.b; -} - -int -f3b (void) -{ - return a3.c; -} - -int -f4b (void) -{ - return a4.a; -} - -int -f5b (void) -{ - return local1.b; -} - -int -f6b (void) -{ - return local2.c; -} -#endif diff --git a/test/tls/tst-tlsmod8.c b/test/tls/tst-tlsmod8.c deleted file mode 100644 index c1822fc0c..000000000 --- a/test/tls/tst-tlsmod8.c +++ /dev/null @@ -1,72 +0,0 @@ -#include "tst-tls10.h" - -#ifdef USE_TLS__THREAD -__thread long long dummy __attribute__((visibility ("hidden"))) = 12; -__thread struct A a2 = { 22, 23, 24 }; -__thread struct A a4 __attribute__((tls_model("initial-exec"))) - = { 25, 26, 27 }; -static __thread struct A local1 = { 28, 29, 30 }; -static __thread struct A local2 __attribute__((tls_model("initial-exec"))) - = { 31, 32, 33 }; - -void -check2 (void) -{ - if (a2.a != 22 || a2.b != 23 || a2.c != 24) - abort (); - if (a4.a != 25 || a4.b != 26 || a4.c != 27) - abort (); - if (local1.a != 28 || local1.b != 29 || local1.c != 30) - abort (); - if (local2.a != 31 || local2.b != 32 || local2.c != 33) - abort (); -} - -struct A * -f7a (void) -{ - return &a2; -} - -struct A * -f8a (void) -{ - return &a4; -} - -struct A * -f9a (void) -{ - return &local1; -} - -struct A * -f10a (void) -{ - return &local2; -} - -int -f7b (void) -{ - return a2.b; -} - -int -f8b (void) -{ - return a4.a; -} - -int -f9b (void) -{ - return local1.b; -} - -int -f10b (void) -{ - return local2.c; -} -#endif diff --git a/test/tls/tst-tlsmod9.c b/test/tls/tst-tlsmod9.c deleted file mode 100644 index e124144e4..000000000 --- a/test/tls/tst-tlsmod9.c +++ /dev/null @@ -1,101 +0,0 @@ -#include "tst-tls10.h" - -#ifdef USE_TLS__THREAD -__thread int dummy __attribute__((visibility ("hidden"))) = 12; -__thread struct A a1 = { 4, 5, 6 }; -__thread struct A a3 __attribute__((tls_model("initial-exec"))) - = { 10, 11, 12 }; -extern __thread struct A a4 __attribute__((tls_model("initial-exec"))); -static __thread struct A local1 = { 16, 17, 18 }; -static __thread struct A local2 __attribute__((tls_model("initial-exec"))) - = { 19, 20, 21 }; - -void -check1 (void) -{ - if (a1.a != 4 || a1.b != 5 || a1.c != 6) - abort (); - if (a2.a != 22 || a2.b != 23 || a2.c != 24) - abort (); - if (a3.a != 10 || a3.b != 11 || a3.c != 12) - abort (); - if (a4.a != 25 || a4.b != 26 || a4.c != 27) - abort (); - if (local1.a != 16 || local1.b != 17 || local1.c != 18) - abort (); - if (local2.a != 19 || local2.b != 20 || local2.c != 21) - abort (); -} - -struct A * -f1a (void) -{ - return &a1; -} - -struct A * -f2a (void) -{ - return &a2; -} - -struct A * -f3a (void) -{ - return &a3; -} - -struct A * -f4a (void) -{ - return &a4; -} - -struct A * -f5a (void) -{ - return &local1; -} - -struct A * -f6a (void) -{ - return &local2; -} - -int -f1b (void) -{ - return a1.a; -} - -int -f2b (void) -{ - return a2.b; -} - -int -f3b (void) -{ - return a3.c; -} - -int -f4b (void) -{ - return a4.a; -} - -int -f5b (void) -{ - return local1.b; -} - -int -f6b (void) -{ - return local2.c; -} -#endif diff --git a/test/uclibcng-testrunner.sh b/test/uclibcng-testrunner.sh deleted file mode 100644 index 943c95086..000000000 --- a/test/uclibcng-testrunner.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/sh -#- -# Copyright (c) 2015 -# Thorsten "mirabilos" Glaser -# -# Provided that these terms and disclaimer and all copyright notices -# are retained or reproduced in an accompanying document, permission -# is granted to deal in this work without restriction, including un- -# limited rights to use, publicly perform, distribute, sell, modify, -# merge, give away, or sublicence. -# -# This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to -# the utmost extent permitted by applicable law, neither express nor -# implied; without malicious intent or gross negligence. In no event -# may a licensor, author or contributor be held liable for indirect, -# direct, other damage, loss, or other issues arising in any way out -# of dealing in the work, even if advised of the possibility of such -# damage or existence of a defect, except proven that it results out -# of said person's immediate fault when using the work as intended. -#- -# Testsuite runner - -die() { - echo >&2 E: "$*" - exit 1 -} - -test -s uclibcng-testrunner.in || die uclibcng-testrunner.in not found - -nfail=0 -npass=0 -while read expected_ret tst_src_name binary_name subdir cmd; do - printf '.... %s\r' "$binary_name" - (cd $subdir && eval "$cmd" >$binary_name.out 2>&1) - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include -#include -#include -#include -#include -#include -#include "clone_cruft.h" - -#define GOT1 (1 << 1) -#define GOT2 (1 << 2) -#define GOT3 (1 << 3) -#define ALLGOT (GOT1|GOT2|GOT3) - -static void child_handler(int sig) -{ - printf("I got a SIGCHLD\n"); -} - -static int clone_main(void *arg) -{ - unsigned long input = (unsigned long)arg; - int secs = (input / 10) * 4; - printf("Clone got %lu, sleeping for %i secs\n", input, secs); - sleep(secs); - return input + 20; -} - -int main(void) -{ - int clone1, clone2, clone3; - char clone1_stack[8192], clone2_stack[8192], clone3_stack[8192]; - int status, nostatus, result, wpid; - - signal(SIGCHLD, child_handler); - - if ((clone1 = do_clone(clone_main, clone1_stack, 0, (void*)11)) == -1) { - perror("Clone 1 failed"); - exit(-1); - } - if ((clone2 = do_clone(clone_main, clone2_stack, 0, (void*)22)) == -1) { - perror("Clone 2 failed"); - exit(-2); - } - if ((clone3 = do_clone(clone_main, clone3_stack, 0, (void*)33)) == -1) { - perror("Clone 3 failed"); - exit(-3); - } - - sleep(1); - printf("Parent: waiting for the clones to die.\n"); - nostatus = status = 0; - while (1) { - if ((wpid = waitpid(clone1, &result, WNOHANG|__WCLONE)) == -1) - nostatus |= GOT1; - if (wpid == clone1) { - status |= GOT1; - printf("Clone1 gave back %i\n", WEXITSTATUS(result)); - } - - if ((wpid = waitpid(clone2, &result, WNOHANG|__WCLONE)) == -1) - nostatus |= GOT2; - if (wpid == clone2) { - status |= GOT2; - printf("Clone2 gave back %i\n", WEXITSTATUS(result)); - } - - if ((wpid = waitpid(clone3, &result, WNOHANG|__WCLONE)) == -1) - nostatus |= GOT3; - if (wpid == clone3) { - status |= GOT3; - printf("Clone3 gave back %i\n", WEXITSTATUS(result)); - } - - if (status == ALLGOT || nostatus == ALLGOT) - break; - } - - if (status == ALLGOT) { - printf("Clones exited.\nGoodbye.\n"); - return EXIT_SUCCESS; - } else { - perror("Waiting for clones failed"); - return EXIT_FAILURE; - } -} - -/* -Local Variables: -c-file-style: "linux" -c-basic-offset: 4 -tab-width: 4 -End: -*/ diff --git a/test/unistd/clone_cruft.h b/test/unistd/clone_cruft.h deleted file mode 100644 index b6a395d06..000000000 --- a/test/unistd/clone_cruft.h +++ /dev/null @@ -1,24 +0,0 @@ -/* because people like to make things difficult */ - -#undef do_clone - -#define crappy_sizeof(s) (s == NULL ? 0 : sizeof(s)) - -#if defined __ia64__ - -extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base, - size_t __child_stack_size, int __flags, void *__arg, ...); -# define do_clone(fn, stack, flags, arg) \ - __clone2(fn, stack, crappy_sizeof(stack), flags, arg, NULL, NULL, NULL) - -#elif defined __hppa__ - -# define do_clone(fn, stack, flags, arg) \ - clone(fn, stack, flags, arg) - -#else - -# define do_clone(fn, stack, flags, arg) \ - clone(fn, stack+crappy_sizeof(stack), flags, arg) - -#endif diff --git a/test/unistd/errno.c b/test/unistd/errno.c deleted file mode 100644 index 5d4fc726a..000000000 --- a/test/unistd/errno.c +++ /dev/null @@ -1,29 +0,0 @@ -/* based originally on one the clone tests in the LTP */ - -#include -#include -#include -#include -#include "clone_cruft.h" - -__attribute__ ((__noreturn__)) -static int child_fn(void *arg) -{ - fprintf(stderr, "in child_fn\n"); - exit(1); -} - -int main(void) -{ - int r_clone, ret_errno; - - r_clone = do_clone(child_fn, NULL, 0, NULL); - ret_errno = errno; - if (ret_errno != EINVAL || r_clone != -1) { - fprintf(stderr, "clone: res=%d (wanted -1) errno=%d (wanted %d)\n", - r_clone, errno, EINVAL); - return 1; - } - - return 0; -} diff --git a/test/unistd/exec-null.c b/test/unistd/exec-null.c deleted file mode 100644 index 3df99f3ce..000000000 --- a/test/unistd/exec-null.c +++ /dev/null @@ -1,13 +0,0 @@ -/* make sure we handle argv[0] == NULL */ - -#include - -int main(int argc, char *argv[]) -{ - if (argc == 0) - return 0; - - char *exec_argv[1], *exec_envp[1]; - exec_argv[0] = exec_envp[0] = NULL; - return execve("./exec-null", exec_argv, exec_envp); -} diff --git a/test/unistd/fork.c b/test/unistd/fork.c deleted file mode 100644 index 6d132d6d8..000000000 --- a/test/unistd/fork.c +++ /dev/null @@ -1,91 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* - * fork test for uClibc - * Copyright (C) 2000-2006 by Erik Andersen - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include -#include -#include -#include -#include - -#define GOT1 (1 << 1) -#define GOT2 (1 << 2) -#define GOT3 (1 << 3) - -#ifdef __ARCH_USE_MMU__ - -static void child_handler(int sig) -{ - fprintf(stderr, "I got a SIGCHLD\n"); -} - -int main(void) -{ - pid_t pid1, pid2, pid3; - int status, result, wpid; - - signal(SIGCHLD, child_handler); - - if ((pid1 = fork()) == 0) { - fprintf(stderr, "The child process sleeps 2 seconds...\n"); - sleep(4); - fprintf(stderr, "Child exiting.\n"); - exit(-1); - } - if ((pid2 = fork()) == 0) { - fprintf(stderr, "The child process sleeps 3 seconds...\n"); - sleep(3); - fprintf(stderr, "Child exiting.\n"); - exit(-1); - } - if ((pid3 = fork()) == 0) { - fprintf(stderr, "The child process sleeps 4 seconds...\n"); - sleep(2); - fprintf(stderr, "Child exiting.\n"); - exit(-1); - } - - fprintf(stderr, "Parent: waiting for the child to die.\n"); - status = 0; - while (1) { - wpid = waitpid(pid1, &result, WNOHANG); - if (wpid == pid1) - status |= GOT1; - - wpid = waitpid(pid2, &result, WNOHANG); - if (wpid == pid2) - status |= GOT2; - - wpid = waitpid(pid3, &result, WNOHANG); - if (wpid == pid3) - status |= GOT3; - - if (status == (GOT1 | GOT2 | GOT3)) - break; - } - - fprintf(stderr, "Child process exited.\nGoodbye.\n"); - return EXIT_SUCCESS; -} - -#else - -int main(void) -{ - printf("Skipping test on non-mmu host!\n"); - return EXIT_SUCCESS; -} - -#endif - -/* -Local Variables: -c-file-style: "linux" -c-basic-offset: 4 -tab-width: 4 -End: -*/ diff --git a/test/unistd/getcwd.c b/test/unistd/getcwd.c deleted file mode 100644 index bcecec7be..000000000 --- a/test/unistd/getcwd.c +++ /dev/null @@ -1,39 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* - * fork test for uClibc - * Copyright (C) 2000-2006 by Erik Andersen - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include -#include -#include - -int main(void) -{ - char *foo; - char junk[12]; - char crap[100]; - foo = getcwd(NULL, 0); - printf("getcwd(NULL, 0)='%s'\n", foo); - if (foo) { free(foo); } - foo = getcwd(NULL, 100); - printf("\ngetcwd(NULL, 100)='%s'\n", foo); - if (foo) { free(foo); } - foo = getcwd(junk, sizeof(junk)); - printf("\nchar junk[12];\n"); - printf("getcwd(junk, sizeof(junk))='%s'\n", foo); - foo = getcwd(crap, sizeof(crap)); - printf("\nchar crap[100];\n"); - printf("getcwd(crap, sizeof(crap))='%s'\n", foo); - return EXIT_SUCCESS; -} - -/* -Local Variables: -c-file-style: "linux" -c-basic-offset: 4 -tab-width: 4 -End: -*/ diff --git a/test/unistd/getopt.c b/test/unistd/getopt.c deleted file mode 100644 index 401765cc8..000000000 --- a/test/unistd/getopt.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Getopt tests */ - -#include -#include -#include -#include - - -int main (int argc, char **argv) -{ - int c; - int digit_optind = 0; - - while (1) - { - int this_option_optind = optind ? optind : 1; - - c = getopt (argc, argv, "abc:d:0123456789"); - if (c == EOF) - break; - - switch (c) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - if (digit_optind != 0 && digit_optind != this_option_optind) - printf ("digits occur in two different argv-elements.\n"); - digit_optind = this_option_optind; - printf ("option %c\n", c); - break; - - case 'a': - printf ("option a\n"); - break; - - case 'b': - printf ("option b\n"); - break; - - case 'c': - printf ("option c with value `%s'\n", optarg); - break; - - case '?': - break; - - default: - printf ("?? getopt returned character code 0%o ??\n", c); - } - } - - if (optind < argc) - { - printf ("non-option ARGV-elements: "); - while (optind < argc) - printf ("%s ", argv[optind++]); - printf ("\n"); - } - exit (0); -} - diff --git a/test/unistd/getopt_long.c b/test/unistd/getopt_long.c deleted file mode 100644 index 4064e224d..000000000 --- a/test/unistd/getopt_long.c +++ /dev/null @@ -1,93 +0,0 @@ -/* Getopt tests */ - -#include -#include -#include -#include - - -int main (int argc, char **argv) -{ - int c; - int digit_optind = 0; - - while (1) - { - int this_option_optind = optind ? optind : 1; - int option_index = 0; - static struct option long_options[] = - { - {"add", 1, 0, 0}, - {"append", 0, 0, 0}, - {"delete", 1, 0, 0}, - {"verbose", 0, 0, 0}, - {"create", 0, 0, 0}, - {"file", 1, 0, 0}, - {0, 0, 0, 0} - }; - - c = getopt_long (argc, argv, "abc:d:0123456789", - long_options, &option_index); - if (c == EOF) - break; - - switch (c) - { - case 0: - printf ("option %s", long_options[option_index].name); - if (optarg) - printf (" with arg %s", optarg); - printf ("\n"); - break; - - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - if (digit_optind != 0 && digit_optind != this_option_optind) - printf ("digits occur in two different argv-elements.\n"); - digit_optind = this_option_optind; - printf ("option %c\n", c); - break; - - case 'a': - printf ("option a\n"); - break; - - case 'b': - printf ("option b\n"); - break; - - case 'c': - printf ("option c with value `%s'\n", optarg); - break; - - case 'd': - printf ("option d with value `%s'\n", optarg); - break; - - case '?': - break; - - default: - printf ("?? getopt returned character code 0%o ??\n", c); - } - } - - if (optind < argc) - { - printf ("non-option ARGV-elements: "); - while (optind < argc) - printf ("%s ", argv[optind++]); - printf ("\n"); - } - - exit (0); -} - diff --git a/test/unistd/tst-fallocate.c b/test/unistd/tst-fallocate.c deleted file mode 100644 index fc81781bb..000000000 --- a/test/unistd/tst-fallocate.c +++ /dev/null @@ -1,166 +0,0 @@ -#include -#include - -#ifndef TST_FALLOCATE64 -# define stat64 stat -# define fstat64 fstat -# else -# ifndef O_LARGEFILE -# error no O_LARGEFILE but you want to test with LFS enabled -# endif -#endif - -static void do_prepare(void); -static int do_test(void); -#define PREPARE(argc, argv) do_prepare () -#define TEST_FUNCTION do_test () -#include - -static int fd; -static void -do_prepare (void) -{ - fd = create_temp_file ("tst-fallocate.", NULL); - if (fd == -1) - { - printf ("cannot create temporary file: %m\n"); - exit (1); - } -} - - -static int -do_test (void) -{ - struct stat64 st; - int c; - char garbage[4096]; - blkcnt_t blksb4; - - if (fstat64 (fd, &st) != 0) - { - puts ("1st fstat failed"); - return 1; - } - - if (st.st_size != 0) - { - puts ("file not created with size 0"); - return 1; - } - - /* This is the default mode which is identical to posix_fallocate(). - Note: we need a few extra blocks for FALLOC_FL_PUNCH_HOLE below. - While block sizes vary, we'll assume eight 4K blocks for good measure. */ - if (fallocate (fd, 0, 8 * 4096, 128) != 0) - { - puts ("1st fallocate call failed"); - return 1; - } - - if (fstat64 (fd, &st) != 0) - { - puts ("2nd fstat failed"); - return 1; - } - - if (st.st_size != 8 * 4096 + 128) - { - printf ("file size after 1st fallocate call is %llu, expected %u\n", - (unsigned long long int) st.st_size, 8u * 4096u + 128u); - return 1; - } - - /* Without FALLOC_FL_KEEP_SIZE, this would increaste the size of the file. */ - if (fallocate (fd, FALLOC_FL_KEEP_SIZE, 0, 16 * 4096) != 0) - { - puts ("2nd fallocate call failed"); - return 1; - } - - if (fstat64 (fd, &st) != 0) - { - puts ("3rd fstat failed"); - return 1; - } - - if (st.st_size != 8 * 4096 + 128) - { - printf ("file size changed in 2nd fallocate call to %llu, expected %u\n", - (unsigned long long int) st.st_size, 8u * 4096u + 128u); - return 1; - } - - /* Let's fill up the first eight 4k blocks with 'x' to force some allocations. */ - - memset(garbage, 'x', 4096); - for(c=0; c < 8; c++) - if(write(fd, garbage, 4096) == -1) - { - puts ("write failed"); - return 1; - } - - if (fstat64 (fd, &st) != 0) - { - puts ("4th fstat failed"); - return 1; - } - - blksb4 = st.st_blocks; - - /* Let's punch a hole in the entire file, turning it effectively into a sparse file. */ - if (fallocate (fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 8 * 4096 + 128) != 0) - { - puts ("3rd fallocate call failed"); - return 1; - } - - if (fstat64 (fd, &st) != 0) - { - puts ("5th fstat failed"); - return 1; - } - - if (st.st_size != 8 * 4096 + 128) - { - printf ("file size after 3rd fallocate call is %llu, expected %u\n", - (unsigned long long int) st.st_size, 8u * 4096u + 128u); - return 1; - } - - /* The number of allocated blocks should decrease. I hope this works on - all filesystems! */ - if (st.st_blocks >= blksb4) - { - printf ("number of blocks after 3rd fallocate call is %lu, expected less than %lu\n", - (unsigned long int) st.st_blocks, blksb4); - return 1; - } - -#ifdef TST_FALLOCATE64 - /* We'll just do a mode = 0 test for fallocate64() */ - if (fallocate64 (fd, 0, 4097ULL, 4294967295ULL + 2ULL) != 0) - { - puts ("1st fallocate64 call failed"); - return 1; - } - - if (fstat64 (fd, &st) != 0) - { - puts ("6th fstat failed"); - return 1; - } - - if (st.st_size != 4097ULL + 4294967295ULL + 2ULL) - { - printf ("file size after 1st fallocate64 call is %llu, expected %llu\n", - (unsigned long long int) st.st_size, 4097ULL + 4294967295ULL + 2ULL); - return 1; - } -#endif - close (fd); - - return 0; -} - diff --git a/test/unistd/tst-fallocate64.c b/test/unistd/tst-fallocate64.c deleted file mode 100644 index 720428f8f..000000000 --- a/test/unistd/tst-fallocate64.c +++ /dev/null @@ -1,2 +0,0 @@ -#define TST_FALLOCATE64 -#include "tst-fallocate.c" diff --git a/test/unistd/tst-getconf.sh b/test/unistd/tst-getconf.sh deleted file mode 100755 index 3a2aa4ea7..000000000 --- a/test/unistd/tst-getconf.sh +++ /dev/null @@ -1,240 +0,0 @@ -#! /bin/sh - -basedir="." - -# make sure to use the same locale everywhere. -LC_ALL=C -export LC_ALL -LANG=C -export LANG - -for suffix in _glibc '' -do -binary=$basedir/getconf$suffix -logfile=$basedir/tst-getconf$suffix.out -rm -f $logfile - -result=0 -while read name; do - case "$name" in - "#"*) continue;; - esac - echo -n "getconf $name: " >> $logfile - $binary "$name" 2>> $logfile >> $logfile - if test $? -ne 0; then - echo "*** $name FAILED" >> $logfile - result=1 - fi -done <> $logfile - $binary "$name" / 2>> $logfile >> $logfile - if test $? -ne 0; then - echo "*** $name FAILED" >> $logfile - result=1 - fi -done < -#include - -#ifndef TST_POSIX_FALLOCATE64 -# define stat64 stat -# define fstat64 fstat -# else -# ifndef O_LARGEFILE -# error no O_LARGEFILE but you want to test with LFS enabled -# endif -#endif - -static void do_prepare (void); -#define PREPARE(argc, argv) do_prepare () -static int do_test (void); -#define TEST_FUNCTION do_test () -#include - -static int fd; -static void -do_prepare (void) -{ - fd = create_temp_file ("tst-posix_fallocate.", NULL); - if (fd == -1) - { - printf ("cannot create temporary file: %m\n"); - exit (1); - } -} - - -static int -do_test (void) -{ - struct stat64 st; - - if (fstat64 (fd, &st) != 0) - { - puts ("1st fstat failed"); - return 1; - } - - if (st.st_size != 0) - { - puts ("file not created with size 0"); - return 1; - } - - if (posix_fallocate (fd, 512, 768) != 0) - { - puts ("1st posix_fallocate call failed"); - return 1; - } - - if (fstat64 (fd, &st) != 0) - { - puts ("2nd fstat failed"); - return 1; - } - - if (st.st_size != 512 + 768) - { - printf ("file size after 1st posix_fallocate call is %llu, expected %u\n", - (unsigned long long int) st.st_size, 512u + 768u); - return 1; - } - - if (posix_fallocate (fd, 0, 1024) != 0) - { - puts ("2nd posix_fallocate call failed"); - return 1; - } - - if (fstat64 (fd, &st) != 0) - { - puts ("3rd fstat failed"); - return 1; - } - - if (st.st_size != 512 + 768) - { - puts ("file size changed in 2nd posix_fallocate"); - return 1; - } - - if (posix_fallocate (fd, 2048, 64) != 0) - { - puts ("3rd posix_fallocate call failed"); - return 1; - } - - if (fstat64 (fd, &st) != 0) - { - puts ("4th fstat failed"); - return 1; - } - - if (st.st_size != 2048 + 64) - { - printf ("file size after 3rd posix_fallocate call is %llu, expected %u\n", - (unsigned long long int) st.st_size, 2048u + 64u); - return 1; - } -#ifdef TST_POSIX_FALLOCATE64 - if (posix_fallocate64 (fd, 4097ULL, 4294967295ULL + 2ULL) != 0) - { - puts ("4th posix_fallocate call failed"); - return 1; - } - - if (fstat64 (fd, &st) != 0) - { - puts ("5th fstat failed"); - return 1; - } - - if (st.st_size != 4097ULL + 4294967295ULL + 2ULL) - { - printf ("file size after 4th posix_fallocate call is %llu, expected %llu\n", - (unsigned long long int) st.st_size, 4097ULL + 4294967295ULL + 2ULL); - return 1; - } -#endif - close (fd); - - return 0; -} diff --git a/test/unistd/tst-posix_fallocate64.c b/test/unistd/tst-posix_fallocate64.c deleted file mode 100644 index b1ee0ffdd..000000000 --- a/test/unistd/tst-posix_fallocate64.c +++ /dev/null @@ -1,2 +0,0 @@ -#define TST_POSIX_FALLOCATE64 -#include "tst-posix_fallocate.c" diff --git a/test/unistd/tst-preadwrite.c b/test/unistd/tst-preadwrite.c deleted file mode 100644 index 66a1c0aa3..000000000 --- a/test/unistd/tst-preadwrite.c +++ /dev/null @@ -1,104 +0,0 @@ -/* Tests for pread and pwrite. - Copyright (C) 1998, 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1998. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include - - -/* Allow testing of the 64-bit versions as well. */ -#ifndef PREAD -# define PREAD pread -# define PWRITE pwrite -#endif - -#define STRINGIFY(s) STRINGIFY2 (s) -#define STRINGIFY2(s) #s - -/* Prototype for our test function. */ -extern void do_prepare (int argc, char *argv[]); -extern int do_test (int argc, char *argv[]); - -/* We have a preparation function. */ -#define PREPARE do_prepare - -/* We might need a bit longer timeout. */ -#define TIMEOUT 20 /* sec */ - -/* This defines the `main' function and some more. */ -#include "../test-skeleton.c" - -/* These are for the temporary file we generate. */ -char *name; -int fd; - -void -do_prepare (int argc, char *argv[]) -{ - char name_len; - -#define FNAME FNAME2(TRUNCATE) -#define FNAME2(s) "/" STRINGIFY(s) "XXXXXX" - - name_len = strlen (test_dir); - name = malloc (name_len + sizeof (FNAME)); - if (name == NULL) - error (EXIT_FAILURE, errno, "cannot allocate file name"); - mempcpy (mempcpy (name, test_dir, name_len), FNAME, sizeof (FNAME)); - add_temp_file (name); - - /* Open our test file. */ - fd = mkstemp (name); - if (fd == -1) - error (EXIT_FAILURE, errno, "cannot open test file `%s'", name); -} - - -int -do_test (int argc, char *argv[]) -{ - char buf[1000]; - char res[1000]; - int i; - - memset (buf, '\0', sizeof (buf)); - memset (res, '\xff', sizeof (res)); - - if (write (fd, buf, sizeof (buf)) != sizeof (buf)) - error (EXIT_FAILURE, errno, "during write"); - - for (i = 100; i < 200; ++i) - buf[i] = i; - if (PWRITE (fd, buf + 100, 100, 100) != 100) - error (EXIT_FAILURE, errno, "during %s", STRINGIFY (PWRITE)); - - for (i = 450; i < 600; ++i) - buf[i] = i; - if (PWRITE (fd, buf + 450, 150, 450) != 150) - error (EXIT_FAILURE, errno, "during %s", STRINGIFY (PWRITE)); - - if (PREAD (fd, res, sizeof (buf) - 50, 50) != sizeof (buf) - 50) - error (EXIT_FAILURE, errno, "during %s", STRINGIFY (PREAD)); - - close (fd); - unlink (name); - - return memcmp (buf + 50, res, sizeof (buf) - 50); -} diff --git a/test/unistd/tst-preadwrite64.c b/test/unistd/tst-preadwrite64.c deleted file mode 100644 index a0ec021c6..000000000 --- a/test/unistd/tst-preadwrite64.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Tests for pread64 and pwrite64. - Copyright (C) 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1998. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#define PREAD pread64 -#define PWRITE pwrite64 - -#include "tst-preadwrite.c" diff --git a/test/unistd/tst-pselect.c b/test/unistd/tst-pselect.c deleted file mode 100644 index cab945119..000000000 --- a/test/unistd/tst-pselect.c +++ /dev/null @@ -1,51 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -// our SIGALRM handler -void handler(int signum) { - (void)signum; - puts("got signal\n"); -} - -static int -do_test (void) -{ - int rc; - sigset_t wait_mask, mask_sigchld; - struct sigaction act; - - // block SIGALRM. We want to handle it only when we're ready - sigemptyset(&mask_sigchld); - sigaddset(&mask_sigchld, SIGALRM); - sigprocmask(SIG_BLOCK, &mask_sigchld, &wait_mask); - sigdelset(&wait_mask, SIGALRM); - - // register a signal handler so we can see when the signal arrives - memset(&act, 0, sizeof(act)); - sigemptyset(&act.sa_mask); // just in case an empty set isn't all 0's (total paranoia) - act.sa_handler = handler; - sigaction(SIGALRM, &act, NULL); - - // send ourselves a SIGARLM. It will pend until we unblock that signal in pselect() - printf("sending ourselves a signal\n"); - kill(getpid(), SIGALRM); - - printf("signal is pending; calling pselect()\n"); - rc = pselect(0, NULL, NULL, NULL, NULL, &wait_mask); - if (rc != -1 || errno != EINTR) { - int e = errno; - printf("pselect() returned %d, errno %d (%s)\n", rc, e, strerror(e)); - exit(1); - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include diff --git a/test/unistd/tstgetopt.c b/test/unistd/tstgetopt.c deleted file mode 100644 index 1c1263e67..000000000 --- a/test/unistd/tstgetopt.c +++ /dev/null @@ -1,76 +0,0 @@ -#include -#include -#include -#include - -int -main (int argc, char **argv) -{ - static const struct option options[] = - { - {"required", required_argument, NULL, 'r'}, - {"optional", optional_argument, NULL, 'o'}, - {"none", no_argument, NULL, 'n'}, - {"color", no_argument, NULL, 'C'}, - {"colour", no_argument, NULL, 'C'}, - {NULL, 0, NULL, 0 } - }; - - int aflag = 0; - int bflag = 0; - char *cvalue = NULL; - int Cflag = 0; - int nflag = 0; - int idx; - int c; - int result = 0; - - while ((c = getopt_long (argc, argv, "abc:", options, NULL)) >= 0) - switch (c) - { - case 'a': - aflag = 1; - break; - case 'b': - bflag = 1; - break; - case 'c': - cvalue = optarg; - break; - case 'C': - ++Cflag; - break; - case '?': - fputs ("Unknown option.\n", stderr); - return 1; - default: - fprintf (stderr, "This should never happen!\n"); - return 1; - - case 'r': - printf ("--required %s\n", optarg); - result |= strcmp (optarg, "foobar") != 0; - break; - case 'o': - printf ("--optional %s\n", optarg); - result |= optarg == NULL || strcmp (optarg, "bazbug") != 0; - break; - case 'n': - puts ("--none"); - nflag = 1; - break; - } - - printf ("aflag = %d, bflag = %d, cvalue = %s, Cflags = %d, nflag = %d\n", - aflag, bflag, cvalue, Cflag, nflag); - - result |= (aflag != 1 || bflag != 1 || cvalue == NULL - || strcmp (cvalue, "foobar") != 0 || Cflag != 3 || nflag != 1); - - for (idx = optind; idx < argc; idx++) - printf ("Non-option argument %s\n", argv[idx]); - - result |= optind + 1 != argc || strcmp (argv[optind], "random") != 0; - - return result; -} diff --git a/test/unistd/vfork.c b/test/unistd/vfork.c deleted file mode 100644 index 295583945..000000000 --- a/test/unistd/vfork.c +++ /dev/null @@ -1,53 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* - * vfork test for uClibc - * Copyright (C) 2000-2006 by Erik Andersen - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include -#include -#include -#include -#include - - -int main(void) -{ - pid_t pid; - int status, wpid; - char *argv[] = { - "/bin/ls", - "-laF", - NULL, - }; - - clearenv(); - if ((pid = vfork()) == 0) { - printf("Hi. I'm the child process...\n"); - execvp(argv[0], argv); - _exit(0); - } - - printf("Hello. I'm the parent process.\n"); - while (1) { - wpid = wait(&status); - if (wpid > 0 && wpid != pid) { - continue; - } - if (wpid == pid) - break; - } - - printf("Child process exited.\nGoodbye.\n"); - return EXIT_SUCCESS; -} - -/* -Local Variables: -c-file-style: "linux" -c-basic-offset: 4 -tab-width: 4 -End: -*/ -- cgit v1.2.3