[Ada] Bootstrapping mainline GNAT fails

Richard Kenner kenner@vlsi1.ultra.nyu.edu
Mon Mar 18 18:40:00 GMT 2002


    It's really hard to guess what is going on here. Especially since we
    don' t duplicate this bomb. I wonder what is different about your
    setup and ours?

I'm guessing this is compiling snames.adb and I think we *do* take the
exception here, which is a latent bug.

The real problem is that builtin setjmp/longjmp seems to be broken.

Zack, try compiling and running the following with the same compiler you
built gnat1 with:

int buf[20];

int
main ()
{
  char *p = (char *) alloca (20);

  strcpy (p, "test\n");

  if (__builtin_setjmp (buf))
    {
      printf (p);
      exit (0);
    }

  {
    int *q = (int *) alloca (p[2] * sizeof (int));
    int i;
    
    for (i = 0; i < p[2]; i++)
      q[i] = 0;

    while (1)
      sub2 ();
  }
}

sub2 ()
{
  __builtin_longjmp (buf, 1);
}




More information about the Gcc mailing list