Re: _Unwind_FindEnclosingFunction vs darwin

Jack Howarth <[email protected]>
Newsgroups gmane.comp.gcc.java.devel
Message-ID <[email protected]>
On Sat, Dec 19, 2009 at 05:26:10PM +0000, Andrew Haley wrote:
> >>
> >> The easiest thing would be to add
> >>
> >> #ifdef USING_DARWIN_CRT
> >> #undefine _Unwind_FindEnclosingFunction(PC)
> >> #define _Unwind_FindEnclosingFunction(PC) darwin10_Unwind_FindEnclosingFunction(PC)
> >> #endif
> >>
> >> to include/posix.h.
> >>
> >> Please make sure that darwin10_Unwind_FindEnclosingFunction is not exported from
> >> anywhere.  I'd just declare it static inline in include/posix.h.
> >>
> >> Andrew.
> > 
> > Andrew,
> >    The bigger question is were do we put the actual code for darwin10_Unwind_FindEnclosingFunction()
> > such that libgcj can access it.
> 
> Define it static inline in libjava/include/posix.h..
> 
> Andrew.

Andrew,
   Okay, so if I add...

static inline void *
_darwin10_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;
}

#ifdef USING_DARWIN_CRT
#undef _Unwind_FindEnclosingFunction
#define _Unwind_FindEnclosingFunction(PC) _darwin10_Unwind_FindEnclosingFunction(PC)
#endif

to libjava/include/posix.h, what is the correct way to access the missing declarations
for dwarf_eh_bases, dwarf_fde, fde and _Unwind_Find_FDE? Are we supposed to directly
include the *dw2* headers from the gcc subdirectory or duplicate their contents in this
header?
              Jack
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.