1 #include <string.h>
2
3 #if defined (STACK_SIZE)
4 #define MEMCPY_SIZE (STACK_SIZE / 3)
5 #else
6 #define MEMCPY_SIZE (1 << 17)
7 #endif
8
9
copy(void * o,const void * i,unsigned l)10 void *copy (void *o, const void *i, unsigned l)
11 {
12 return memcpy (o, i, l);
13 }
14
main()15 main ()
16 {
17 unsigned i;
18 unsigned char src[MEMCPY_SIZE];
19 unsigned char dst[MEMCPY_SIZE];
20
21 for (i = 0; i < MEMCPY_SIZE; i++)
22 src[i] = (unsigned char) i, dst[i] = 0;
23
24 (void) memcpy (dst, src, MEMCPY_SIZE / 128);
25
26 for (i = 0; i < MEMCPY_SIZE / 128; i++)
27 if (dst[i] != (unsigned char) i)
28 abort ();
29
30 (void) memset (dst, 1, MEMCPY_SIZE / 128);
31
32 for (i = 0; i < MEMCPY_SIZE / 128; i++)
33 if (dst[i] != 1)
34 abort ();
35
36 (void) memcpy (dst, src, MEMCPY_SIZE);
37
38 for (i = 0; i < MEMCPY_SIZE; i++)
39 if (dst[i] != (unsigned char) i)
40 abort ();
41
42 (void) memset (dst, 0, MEMCPY_SIZE);
43
44 for (i = 0; i < MEMCPY_SIZE; i++)
45 if (dst[i] != 0)
46 abort ();
47
48 (void) copy (dst, src, MEMCPY_SIZE / 128);
49
50 for (i = 0; i < MEMCPY_SIZE / 128; i++)
51 if (dst[i] != (unsigned char) i)
52 abort ();
53
54 (void) memset (dst, 0, MEMCPY_SIZE);
55
56 (void) copy (dst, src, MEMCPY_SIZE);
57
58 for (i = 0; i < MEMCPY_SIZE; i++)
59 if (dst[i] != (unsigned char) i)
60 abort ();
61
62 exit (0);
63 }
64