extern void abort (void);
extern int inside_main;

__attribute__ ((__noinline__))
char *
strstr(const char *s1, const char *s2)
{
  const char *p, *q;

#ifdef __OPTIMIZE__
  if (inside_main)
    abort ();
#endif

  /* deliberately dumb algorithm */
  for (; *s1; s1++)
    {
      p = s1, q = s2;
      while (*q && *p)
	{
	  if (*q != *p)
	    break;
	  p++, q++;
	}
      if (*q == 0)
	return (char *)s1;
    }
  return 0;
}
