[PATCH] Fix unwinding through SA_ONSTACK signal frames on IA-64

David Mosberger davidm@napali.hpl.hp.com
Thu Dec 18 18:34:00 GMT 2003


Jakub,

Been wondering about this for some time, but I guess I'll just have to
come out and ask: what exactly is your goal in patching up the
built-in GCC/ia64 unwinder?  That unwinder is completely broken (e.g.,
it fails to handle NaT bits, register rotation, and, as you found out,
alternate signal stacks).  In contrast, libunwind for ia64 has none of
those limitations and it's a single source code base that can be used
for both local unwinding (think exception handling) and remote
unwinding (think debugging) and it's at least as efficient as the GCC
built-in unwinder, if not substantially faster.

To enable bootstrapping, clearly it must be possible to build a
working C compiler without libunwind installed, but in my mind, that
hardly justifies spending the time to maintain a completely built-in
unwinder.

Just curious...

	--david

>>>>> On Thu, 18 Dec 2003 16:05:28 +0100, Jakub Jelinek <jakub@redhat.com> said:

  Jakub> Hi!  This patch fixes the attached cleanup-1{0,1}.c tests
  Jakub> working on IA-64 (and tst-cancelx2{0,1} NPTL tests).  I think
  Jakub> sigaltstack is rare enough that it is not worth polluting
  Jakub> lots of unwind-ia64.c with handling of it, instead the MD_*
  Jakub> macros just copy the backing store (emulate what would a
  Jakub> loadrs; change rbs; flushrs sequence do).

  Jakub> Ok to commit? What about 3.3?



More information about the Gcc-patches mailing list