fix ia64 longjmp() to work from alternate signal-stack

David Mosberger davidm@napali.hpl.hp.com
Tue Aug 31 16:14:00 GMT 2004


>>>>> On Tue, 31 Aug 2004 08:30:58 -0700, Ulrich Drepper <drepper@redhat.com> said:

  Uli> David Mosberger wrote:
  >> Were you able to get clarification on this issue already?

  Uli> Getting a formal answer will take a while.  One reply I got indicated
  Uli> that indeed the altstack is not switched.  So, the public siglongjmp
  Uli> interface need not handle this, just the exception handling stuff.  If
  Uli> it turns out that we want the siglongjmp code to handle this as well
  Uli> some day, we still can enable it.  For now, changing your patch to just
  Uli> implement the cancellation appropriately should go in.

So you want me to create an ia64-specific version of __libc_longjmp()
which will be sigaltstack-safe while everything else goes to
the old longjmp implementation, right?

The only callers of __libc_longjmp() I found are:

./linuxthreads/sysdeps/pthread/ptlongjmp.c:  __libc_longjmp (env, val);
./nptl/sysdeps/pthread/pt-longjmp.c:  __libc_longjmp (env, val);
./nptl/unwind.c:    __libc_longjmp ((struct __jmp_buf_tag *) buf->cancel_jmp_buf, 1);
./nptl/unwind.c:  __libc_longjmp ((struct __jmp_buf_tag *) ibuf->cancel_jmp_buf, 1);

so I think this would have the desired effect.

	--david



More information about the Libc-hacker mailing list