Re: _Unwind_FindEnclosingFunction vs darwin

Andrew Haley <[email protected]>
Newsgroups gmane.comp.gcc.java.devel
Message-ID <[email protected]>
Jack Howarth wrote:

>    As I mentioned in http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41991#c36,
> the darwin unwinder maintainer looked at the crash of gcj(ecj1) when compiling
> java code on darwin10. He claims that the origin of the problem is the use of
> the FSF unwinder extension _Unwind_FindEnclosingFunction which is not implemented
> in the system unwinder on darwin10. It appears that for darwin10 and later we
> will have to replace the call to _Unwind_FindEnclosingFunction on darwin with
> code using dladdr() to discover if the function is known to the dynamic loader

That won't work.

> ...assuming that the use of _Unwind_FindEnclosingFunction is to tell if the code
> address is static of dynamic(JIT) code.

_Unwind_FindEnclosingFunction is trivial:

void *
_Unwind_FindEnclosingFunction (void *pc)
{
  struct dwarf_eh_bases bases;
  const struct dwarf_fde *fde = _Unwind_Find_FDE (pc-1, &bases);
  if (fde)
    return bases.func;
  else
    return NULL;
}

_Unwind_Find_FDE is a standard function.  Does Darwin support that?

Andrew.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.