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