diff options
| author | jruoho <jruoho@NetBSD.org> | 2011-07-07 11:04:30 +0000 |
|---|---|---|
| committer | jruoho <jruoho@NetBSD.org> | 2011-07-07 11:04:30 +0000 |
| commit | e67dbecf26353ecd86ebebf28e3e045c32044b9f (patch) | |
| tree | 69d9617d2ce1d0a06c520735a81df5493b47c61b /tests/lib/libc/stdlib | |
| parent | f5b97f94b5b3aaa5d5bfeb6c79adf2742415f50f (diff) | |
Improve the QEMU/amd64 detection.
Diffstat (limited to 'tests/lib/libc/stdlib')
| -rw-r--r-- | tests/lib/libc/stdlib/t_strtod.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/tests/lib/libc/stdlib/t_strtod.c b/tests/lib/libc/stdlib/t_strtod.c index 76c8322444d..8077c27cfe4 100644 --- a/tests/lib/libc/stdlib/t_strtod.c +++ b/tests/lib/libc/stdlib/t_strtod.c @@ -1,4 +1,4 @@ -/* $NetBSD: t_strtod.c,v 1.22 2011/07/04 22:33:29 mrg Exp $ */ +/* $NetBSD: t_strtod.c,v 1.23 2011/07/07 11:04:30 jruoho Exp $ */ /*- * Copyright (c) 2011 The NetBSD Foundation, Inc. @@ -32,7 +32,9 @@ /* Public domain, Otto Moerbeek <otto@drijf.net>, 2006. */ #include <sys/cdefs.h> -__RCSID("$NetBSD: t_strtod.c,v 1.22 2011/07/04 22:33:29 mrg Exp $"); +__RCSID("$NetBSD: t_strtod.c,v 1.23 2011/07/07 11:04:30 jruoho Exp $"); + +#include <sys/utsname.h> #include <errno.h> #include <math.h> @@ -161,12 +163,18 @@ ATF_TC_BODY(strtold_inf, tc) { #ifndef __vax__ # ifdef __HAVE_LONG_DOUBLE + + struct utsname utsname; + /* * See the closed PR lib/33262. * * This may also fail under QEMU; cf. PR misc/44767. */ - if (system("cpuctl identify 0 | grep -q QEMU") == 0) + ATF_REQUIRE(uname(&utsname) == 0); + + if (strcmp(utsname.machine, "amd64") == 0 && + system("cpuctl identify 0 | grep -q QEMU") == 0) atf_tc_expect_fail("PR misc/44767"); for (size_t i = 0; i < __arraycount(inf_strings); i++) { @@ -229,6 +237,8 @@ ATF_TC_BODY(strtold_nan, tc) { #ifndef __vax__ # ifdef __HAVE_LONG_DOUBLE + + struct utsname utsname; char *end; /* @@ -236,7 +246,10 @@ ATF_TC_BODY(strtold_nan, tc) * * This may also fail under QEMU; cf. PR misc/44767. */ - if (system("cpuctl identify 0 | grep -q QEMU") == 0) + ATF_REQUIRE(uname(&utsname) == 0); + + if (strcmp(utsname.machine, "amd64") == 0 && + system("cpuctl identify 0 | grep -q QEMU") == 0) atf_tc_expect_fail("PR misc/44767"); long double ld = strtold(nan_string, &end); @@ -260,13 +273,19 @@ ATF_TC_HEAD(strtod_round, tc) ATF_TC_BODY(strtod_round, tc) { #if defined(__i386__) || defined(__amd64__) || defined(__sparc__) + + struct utsname utsname; + /* * Test that strtod(3) honors the current rounding mode. * The used value is somewhere near 1 + DBL_EPSILON + FLT_EPSILON. * * May fail under QEMU; cf. PR misc/44767. */ - if (system("cpuctl identify 0 | grep -q QEMU") == 0) + ATF_REQUIRE(uname(&utsname) == 0); + + if (strcmp(utsname.machine, "amd64") == 0 && + system("cpuctl identify 0 | grep -q QEMU") == 0) atf_tc_expect_fail("PR misc/44767"); const char *val = |
