Index: gcc/gmp/tests/mpz/t-io_raw.c |
diff --git a/gcc/gmp/tests/mpz/t-io_raw.c b/gcc/gmp/tests/mpz/t-io_raw.c |
deleted file mode 100644 |
index 4fd71e4be1c10b2ec1f0146f1305981167693fce..0000000000000000000000000000000000000000 |
--- a/gcc/gmp/tests/mpz/t-io_raw.c |
+++ /dev/null |
@@ -1,287 +0,0 @@ |
-/* Test mpz_inp_raw and mpz_out_raw. |
- |
-Copyright 2001 Free Software Foundation, Inc. |
- |
-This file is part of the GNU MP Library. |
- |
-The GNU MP Library is free software; you can redistribute it and/or modify |
-it under the terms of the GNU Lesser General Public License as published by |
-the Free Software Foundation; either version 3 of the License, or (at your |
-option) any later version. |
- |
-The GNU MP Library is distributed in the hope that it will be useful, but |
-WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
-or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public |
-License for more details. |
- |
-You should have received a copy of the GNU Lesser General Public License |
-along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */ |
- |
-#include "config.h" |
- |
-#include <stdio.h> |
-#include <stdlib.h> |
-#include <string.h> |
-#if HAVE_UNISTD_H |
-#include <unistd.h> |
-#endif |
- |
-#include "gmp.h" |
-#include "gmp-impl.h" |
-#include "tests.h" |
- |
-#define FILENAME "t-io_raw.tmp" |
- |
- |
-/* In the fopen, "b" selects binary mode on DOS systems, meaning no |
- conversion of '\n' to and from CRLF. It's believed systems without such |
- nonsense will simply ignore the "b", but in case that's not so a plain |
- "w+" is attempted if "w+b" fails. */ |
- |
-FILE * |
-fopen_wplusb_or_die (const char *filename) |
-{ |
- FILE *fp; |
- fp = fopen (filename, "w+b"); |
- if (fp == NULL) |
- fp = fopen (filename, "w+"); |
- |
- if (fp == NULL) |
- { |
- printf ("Cannot create file %s\n", filename); |
- abort (); |
- } |
- return fp; |
-} |
- |
-/* use 0x80 to check nothing bad happens with sign extension etc */ |
-#define BYTEVAL(i) (((i) + 1) | 0x80) |
- |
-void |
-check_in (void) |
-{ |
- int i, j, zeros, neg, error = 0; |
- mpz_t want, got; |
- size_t want_ret, got_ret; |
- mp_size_t size; |
- FILE *fp; |
- |
- mpz_init (want); |
- mpz_init (got); |
- |
- for (i = 0; i < 32; i++) |
- { |
- for (zeros = 0; zeros < 8; zeros++) |
- { |
- for (neg = 0; neg <= 1; neg++) |
- { |
- want_ret = i + zeros + 4; |
- |
- /* need this to get the twos complement right */ |
- ASSERT_ALWAYS (sizeof (size) >= 4); |
- |
- size = i + zeros; |
- if (neg) |
- size = -size; |
- |
- fp = fopen_wplusb_or_die (FILENAME); |
- for (j = 3; j >= 0; j--) |
- ASSERT_ALWAYS (putc ((size >> (j*8)) & 0xFF, fp) != EOF); |
- for (j = 0; j < zeros; j++) |
- ASSERT_ALWAYS (putc ('\0', fp) != EOF); |
- for (j = 0; j < i; j++) |
- ASSERT_ALWAYS (putc (BYTEVAL (j), fp) != EOF); |
- /* and some trailing garbage */ |
- ASSERT_ALWAYS (putc ('x', fp) != EOF); |
- ASSERT_ALWAYS (putc ('y', fp) != EOF); |
- ASSERT_ALWAYS (putc ('z', fp) != EOF); |
- ASSERT_ALWAYS (fflush (fp) == 0); |
- rewind (fp); |
- |
- got_ret = mpz_inp_raw (got, fp); |
- ASSERT_ALWAYS (! ferror(fp)); |
- ASSERT_ALWAYS (fclose (fp) == 0); |
- |
- MPZ_CHECK_FORMAT (got); |
- |
- if (got_ret != want_ret) |
- { |
- printf ("check_in: return value wrong\n"); |
- error = 1; |
- } |
- if (mpz_cmp (got, want) != 0) |
- { |
- printf ("check_in: result wrong\n"); |
- error = 1; |
- } |
- if (error) |
- { |
- printf (" i=%d zeros=%d neg=%d\n", i, zeros, neg); |
- printf (" got_ret %lu\n", (unsigned long) got_ret); |
- printf (" want_ret %lu\n", (unsigned long) want_ret); |
- mpz_trace (" got ", got); |
- mpz_trace (" want ", want); |
- abort (); |
- } |
- |
- mpz_neg (want, want); |
- } |
- } |
- mpz_mul_2exp (want, want, 8); |
- mpz_add_ui (want, want, (unsigned long) BYTEVAL (i)); |
- } |
- |
- mpz_clear (want); |
- mpz_clear (got); |
-} |
- |
- |
-void |
-check_out (void) |
-{ |
- int i, j, neg, error = 0; |
- mpz_t z; |
- char want[256], got[256], *p; |
- size_t want_len, got_ret, got_read; |
- mp_size_t size; |
- FILE *fp; |
- |
- mpz_init (z); |
- |
- for (i = 0; i < 32; i++) |
- { |
- for (neg = 0; neg <= 1; neg++) |
- { |
- want_len = i + 4; |
- |
- /* need this to get the twos complement right */ |
- ASSERT_ALWAYS (sizeof (size) >= 4); |
- |
- size = i; |
- if (neg) |
- size = -size; |
- |
- p = want; |
- for (j = 3; j >= 0; j--) |
- *p++ = size >> (j*8); |
- for (j = 0; j < i; j++) |
- *p++ = BYTEVAL (j); |
- ASSERT_ALWAYS (p <= want + sizeof (want)); |
- |
- fp = fopen_wplusb_or_die (FILENAME); |
- got_ret = mpz_out_raw (fp, z); |
- ASSERT_ALWAYS (fflush (fp) == 0); |
- rewind (fp); |
- got_read = fread (got, 1, sizeof(got), fp); |
- ASSERT_ALWAYS (! ferror(fp)); |
- ASSERT_ALWAYS (fclose (fp) == 0); |
- |
- if (got_ret != want_len) |
- { |
- printf ("check_out: wrong return value\n"); |
- error = 1; |
- } |
- if (got_read != want_len) |
- { |
- printf ("check_out: wrong number of bytes read back\n"); |
- error = 1; |
- } |
- if (memcmp (want, got, want_len) != 0) |
- { |
- printf ("check_out: wrong data\n"); |
- error = 1; |
- } |
- if (error) |
- { |
- printf (" i=%d neg=%d\n", i, neg); |
- mpz_trace (" z", z); |
- printf (" got_ret %lu\n", (unsigned long) got_ret); |
- printf (" got_read %lu\n", (unsigned long) got_read); |
- printf (" want_len %lu\n", (unsigned long) want_len); |
- printf (" want"); |
- for (j = 0; j < want_len; j++) |
- printf (" %02X", (unsigned) (unsigned char) want[j]); |
- printf ("\n"); |
- printf (" got "); |
- for (j = 0; j < want_len; j++) |
- printf (" %02X", (unsigned) (unsigned char) got[j]); |
- printf ("\n"); |
- abort (); |
- } |
- |
- mpz_neg (z, z); |
- } |
- mpz_mul_2exp (z, z, 8); |
- mpz_add_ui (z, z, (unsigned long) BYTEVAL (i)); |
- } |
- |
- mpz_clear (z); |
-} |
- |
- |
-void |
-check_rand (void) |
-{ |
- gmp_randstate_ptr rands = RANDS; |
- int i, error = 0; |
- mpz_t got, want; |
- size_t inp_ret, out_ret; |
- FILE *fp; |
- |
- mpz_init (want); |
- mpz_init (got); |
- |
- for (i = 0; i < 500; i++) |
- { |
- mpz_erandomb (want, rands, 10*BITS_PER_MP_LIMB); |
- mpz_negrandom (want, rands); |
- |
- fp = fopen_wplusb_or_die (FILENAME); |
- out_ret = mpz_out_raw (fp, want); |
- ASSERT_ALWAYS (fflush (fp) == 0); |
- rewind (fp); |
- inp_ret = mpz_inp_raw (got, fp); |
- ASSERT_ALWAYS (fclose (fp) == 0); |
- |
- MPZ_CHECK_FORMAT (got); |
- |
- if (inp_ret != out_ret) |
- { |
- printf ("check_rand: different inp/out return values\n"); |
- error = 1; |
- } |
- if (mpz_cmp (got, want) != 0) |
- { |
- printf ("check_rand: wrong result\n"); |
- error = 1; |
- } |
- if (error) |
- { |
- printf (" out_ret %lu\n", (unsigned long) out_ret); |
- printf (" inp_ret %lu\n", (unsigned long) inp_ret); |
- mpz_trace (" want", want); |
- mpz_trace (" got ", got); |
- abort (); |
- } |
- } |
- |
- mpz_clear (got); |
- mpz_clear (want); |
-} |
- |
- |
-int |
-main (void) |
-{ |
- tests_start (); |
- mp_trace_base = -16; |
- |
- check_in (); |
- check_out (); |
- check_rand (); |
- |
- unlink (FILENAME); |
- tests_end (); |
- |
- exit (0); |
-} |