This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Calling java code from C/C++ code.


Hot damn! That did it!  I added an explicit link to libgcjgc, and the program
worked properly.

Thanks
Tim

"Boehm, Hans" wrote:

> It's essential that when the gc is loaded, the weak reference to data_start
> be bound to the definition from the main executable.
>
> The dlopen man page vaguely implies that this might happen if you link the
> main program with "-rdynamic", which I couldn't find on the ld man page.
>
> Probably the easiest workaround is to explicitly link against the GC library
> instead of using dlopen to load it.  A GNU ld expert might be able to
> suggest better solutions.
>
> Hans
>
> > -----Original Message-----
> > From: Timothy Wall [mailto:twall@oculustech.com]
> > Sent: Monday, March 05, 2001 1:49 PM
> > To: Boehm, Hans
> > Cc: Bryce McKinlay; java@gcc.gnu.org
> > Subject: Re: Calling java code from C/C++ code.
> >
> >
> > This is linux x86, RedHat 7.0, using gcc 3.0 branch from CVS,
> > and binutils
> > from the distribution.  The java code is very simple:
> >
> > public class test {
> >     public static void execute() {
> >         main(new String[0]);
> >     }
> >     public static void main(String[] args) {
> >         System.out.println("Hello, world");
> >         System.exit(0);
> >     }
> > }
> >
> > I believe dlopen loads the gc, using LD_LIBRARY_PATH to find
> > it.  I have no
> > idea how that affects the weak references.
> >
> > Tim
> >
> > "Boehm, Hans" wrote:
> >
> > > > -----Original Message-----
> > > > From: Timothy Wall [mailto:twall@oculustech.com]
> > > > (gdb) p GC_dump()
> > > > ***Static roots:
> > > > From 0x0 to 0x804a1d8
> > > >
> > > ...
> > > There's the problem.  The collector thinks that static data
> > for the main
> > > program starts at location 0, and hence it's trying to scan
> > memory from 0x0
> > > to 0x804a1d8.  Most of that isn't mapped.
> > >
> > > I assume your gcj installation works with a simple 100%
> > Java program?  This
> > > is Linux/X86?  Which distribution?
> > >
> > > Does the garbage collector itself get loaded with a dlopen?
> >  Does that
> > > affect processing of the weak references to __data_start
> > and data_start?
> > >
> > > Hans
> >


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]