OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [builtins/] [strncat.c] - Diff between revs 297 and 338

Only display areas with differences | Details | Blame | View Log

Rev 297 Rev 338
/* Copyright (C) 2000, 2003  Free Software Foundation.
/* Copyright (C) 2000, 2003  Free Software Foundation.
 
 
   Ensure all expected transformations of builtin strncat occur and
   Ensure all expected transformations of builtin strncat occur and
   perform correctly.
   perform correctly.
 
 
   Written by Kaveh R. Ghazi, 11/27/2000.  */
   Written by Kaveh R. Ghazi, 11/27/2000.  */
 
 
extern void abort (void);
extern void abort (void);
typedef __SIZE_TYPE__ size_t;
typedef __SIZE_TYPE__ size_t;
extern char *strncat (char *, const char *, size_t);
extern char *strncat (char *, const char *, size_t);
extern char *strcpy (char *, const char *);
extern char *strcpy (char *, const char *);
extern void *memset (void *, int, size_t);
extern void *memset (void *, int, size_t);
extern int memcmp (const void *, const void *, size_t);
extern int memcmp (const void *, const void *, size_t);
int x = 123;
int x = 123;
 
 
/* Reset the destination buffer to a known state. */
/* Reset the destination buffer to a known state. */
#define RESET_DST_WITH(FILLER) \
#define RESET_DST_WITH(FILLER) \
  do { memset (dst, 'X', sizeof (dst)); strcpy (dst, (FILLER)); } while (0)
  do { memset (dst, 'X', sizeof (dst)); strcpy (dst, (FILLER)); } while (0)
 
 
void
void
main_test (void)
main_test (void)
{
{
  const char *const s1 = "hello world";
  const char *const s1 = "hello world";
  const char *const s2 = "";
  const char *const s2 = "";
  char dst[64], *d2;
  char dst[64], *d2;
 
 
  RESET_DST_WITH (s1);
  RESET_DST_WITH (s1);
  if (strncat (dst, "", 100) != dst || memcmp (dst, "hello world\0XXX", 15))
  if (strncat (dst, "", 100) != dst || memcmp (dst, "hello world\0XXX", 15))
    abort();
    abort();
  RESET_DST_WITH (s1);
  RESET_DST_WITH (s1);
  if (strncat (dst, s2, 100) != dst || memcmp (dst, "hello world\0XXX", 15))
  if (strncat (dst, s2, 100) != dst || memcmp (dst, "hello world\0XXX", 15))
    abort();
    abort();
  RESET_DST_WITH (s1); d2 = dst;
  RESET_DST_WITH (s1); d2 = dst;
  if (strncat (++d2, s2, 100) != dst+1 || d2 != dst+1
  if (strncat (++d2, s2, 100) != dst+1 || d2 != dst+1
      || memcmp (dst, "hello world\0XXX", 15))
      || memcmp (dst, "hello world\0XXX", 15))
    abort();
    abort();
  RESET_DST_WITH (s1); d2 = dst;
  RESET_DST_WITH (s1); d2 = dst;
  if (strncat (++d2+5, s2, 100) != dst+6 || d2 != dst+1
  if (strncat (++d2+5, s2, 100) != dst+6 || d2 != dst+1
      || memcmp (dst, "hello world\0XXX", 15))
      || memcmp (dst, "hello world\0XXX", 15))
    abort();
    abort();
  RESET_DST_WITH (s1); d2 = dst;
  RESET_DST_WITH (s1); d2 = dst;
  if (strncat (++d2+5, s1+11, 100) != dst+6 || d2 != dst+1
  if (strncat (++d2+5, s1+11, 100) != dst+6 || d2 != dst+1
      || memcmp (dst, "hello world\0XXX", 15))
      || memcmp (dst, "hello world\0XXX", 15))
    abort();
    abort();
  RESET_DST_WITH (s1); d2 = dst;
  RESET_DST_WITH (s1); d2 = dst;
  if (strncat (++d2+5, s1, 0) != dst+6 || d2 != dst+1
  if (strncat (++d2+5, s1, 0) != dst+6 || d2 != dst+1
      || memcmp (dst, "hello world\0XXX", 15))
      || memcmp (dst, "hello world\0XXX", 15))
    abort();
    abort();
  RESET_DST_WITH (s1); d2 = dst;
  RESET_DST_WITH (s1); d2 = dst;
  if (strncat (++d2+5, "", ++x) != dst+6 || d2 != dst+1 || x != 124
  if (strncat (++d2+5, "", ++x) != dst+6 || d2 != dst+1 || x != 124
      || memcmp (dst, "hello world\0XXX", 15))
      || memcmp (dst, "hello world\0XXX", 15))
    abort();
    abort();
 
 
  RESET_DST_WITH (s1);
  RESET_DST_WITH (s1);
  if (strncat (dst, "foo", 3) != dst || memcmp (dst, "hello worldfoo\0XXX", 18))
  if (strncat (dst, "foo", 3) != dst || memcmp (dst, "hello worldfoo\0XXX", 18))
    abort();
    abort();
  RESET_DST_WITH (s1);
  RESET_DST_WITH (s1);
  if (strncat (dst, "foo", 100) != dst || memcmp (dst, "hello worldfoo\0XXX", 18))
  if (strncat (dst, "foo", 100) != dst || memcmp (dst, "hello worldfoo\0XXX", 18))
    abort();
    abort();
  RESET_DST_WITH (s1);
  RESET_DST_WITH (s1);
  if (strncat (dst, s1, 100) != dst || memcmp (dst, "hello worldhello world\0XXX", 26))
  if (strncat (dst, s1, 100) != dst || memcmp (dst, "hello worldhello world\0XXX", 26))
    abort();
    abort();
  RESET_DST_WITH (s1); d2 = dst;
  RESET_DST_WITH (s1); d2 = dst;
  if (strncat (++d2, s1, 100) != dst+1 || d2 != dst+1
  if (strncat (++d2, s1, 100) != dst+1 || d2 != dst+1
      || memcmp (dst, "hello worldhello world\0XXX", 26))
      || memcmp (dst, "hello worldhello world\0XXX", 26))
    abort();
    abort();
  RESET_DST_WITH (s1); d2 = dst;
  RESET_DST_WITH (s1); d2 = dst;
  if (strncat (++d2+5, s1, 100) != dst+6 || d2 != dst+1
  if (strncat (++d2+5, s1, 100) != dst+6 || d2 != dst+1
      || memcmp (dst, "hello worldhello world\0XXX", 26))
      || memcmp (dst, "hello worldhello world\0XXX", 26))
    abort();
    abort();
  RESET_DST_WITH (s1); d2 = dst;
  RESET_DST_WITH (s1); d2 = dst;
  if (strncat (++d2+5, s1+5, 100) != dst+6 || d2 != dst+1
  if (strncat (++d2+5, s1+5, 100) != dst+6 || d2 != dst+1
      || memcmp (dst, "hello world world\0XXX", 21))
      || memcmp (dst, "hello world world\0XXX", 21))
    abort();
    abort();
 
 
  /* Test at least one instance of the __builtin_ style.  We do this
  /* Test at least one instance of the __builtin_ style.  We do this
     to ensure that it works and that the prototype is correct.  */
     to ensure that it works and that the prototype is correct.  */
  RESET_DST_WITH (s1);
  RESET_DST_WITH (s1);
  if (__builtin_strncat (dst, "", 100) != dst
  if (__builtin_strncat (dst, "", 100) != dst
      || memcmp (dst, "hello world\0XXX", 15))
      || memcmp (dst, "hello world\0XXX", 15))
    abort();
    abort();
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.