Home | History | Annotate | Download | only in ld-plugin
      1 extern void abort (void);
      2 extern int inside_main;
      3 typedef __SIZE_TYPE__ size_t;
      4 
      5 #define TEST_ABORT if (inside_main) abort()
      6 
      7 void *
      8 my_memcpy (void *d, const void *s, size_t n)
      9 {
     10   char *dst = (char *) d;
     11   const char *src = (const char *) s;
     12   while (n--)
     13     *dst++ = *src++;
     14   return (char *) d;
     15 }
     16 
     17 void
     18 my_bcopy (const void *s, void *d, size_t n)
     19 {
     20   char *dst = (char *) d;
     21   const char *src = (const char *) s;
     22   if (src >= dst)
     23     while (n--)
     24       *dst++ = *src++;
     25   else
     26     {
     27       dst += n;
     28       src += n;
     29       while (n--)
     30         *--dst = *--src;
     31     }
     32 }
     33 
     34 void *
     35 my_memset (void *d, int c, size_t n)
     36 {
     37   char *dst = (char *) d;
     38   while (n--)
     39     *dst++ = c;
     40   return (char *) d;
     41 }
     42 
     43 void
     44 my_bzero (void *d, size_t n)
     45 {
     46   char *dst = (char *) d;
     47   while (n--)
     48     *dst++ = '\0';
     49 }
     50 
     51 void *
     52 memcpy (void *d, const void *s, size_t n)
     53 {
     54   void *result = my_memcpy (d, s, n);
     55   TEST_ABORT;
     56   return result;
     57 }
     58 
     59 void
     60 bcopy (const void *s, void *d, size_t n)
     61 {
     62   my_bcopy (s, d, n);
     63   TEST_ABORT;
     64 }
     65 
     66 void *
     67 memset (void *d, int c, size_t n)
     68 {
     69   void *result = my_memset (d, c, n);
     70   TEST_ABORT;
     71   return result;
     72 }
     73 
     74 void
     75 bzero (void *d, size_t n)
     76 {
     77   my_bzero (d, n);
     78   TEST_ABORT;
     79 }
     80