This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
Re: _Unwind_FindEnclosingFunction vs darwin
- From: Andrew Haley <aph at redhat dot com>
- To: Jack Howarth <howarth at bromo dot med dot uc dot edu>
- Cc: java at gcc dot gnu dot org
- Date: Fri, 18 Dec 2009 15:01:08 +0000
- Subject: Re: _Unwind_FindEnclosingFunction vs darwin
- References: <20091218144617.GA21353@bromo.med.uc.edu>
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.