/*
#notarget: cris*-*-elf
*/

#include <unistd.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (int argc, char *argv[])
{
  char buf[1024];
  char buf2[1024];

  /* This is a special feature handled in the simulator.  The "42"
     should be formed from getpid () if this was a real program.  */
  if (readlink ("/proc/42/exe", buf, sizeof (buf)) < 0)
    abort ();

  /* Don't use an abort in the following; it might cause the printf to
     not make it all the way to output and make debugging more
     difficult.  */

  /* We assume the program is called with no path, so we might need to
     prepend it.  */
  if (getcwd (buf2, sizeof (buf2)) != buf2)
    {
      perror ("getcwd");
      exit (1);
    }

  if (argv[0][0] == '/')
    {
#ifdef SYSROOTED
      if (strchr (argv[0] + 1, '/') != NULL)
	{
	  printf ("%s != %s\n", argv[0], strrchr (argv[0] + 1, '/'));
	  exit (1);
	}
#endif
      if (strcmp (argv[0], buf) != 0)
	{
	  printf ("%s != %s\n", buf, argv[0]);
	  exit (1);
	}
    }
  else if (argv[0][0] != '.')
    {
      if (buf2[strlen (buf2) - 1] != '/')
	strcat (buf2, "/");
      strcat (buf2, argv[0]);
      if (strcmp (buf2, buf) != 0)
	{
	  printf ("%s != %s\n", buf, buf2);
	  exit (1);
	}
    }
  else
    {
      strcat (buf2, argv[0] + 1);
      if (strcmp (buf, buf2) != 0)
	{
	  printf ("%s != %s\n", buf, buf2);
	  exit (1);
	}
    }

  printf ("pass\n");
  exit (0);
}


