GCJ Error: undefined reference to `InterlockedIncrement@4'

Jon Beniston jon@sentinelware.freeserve.co.uk
Thu Feb 10 08:07:00 GMT 2000

----- Original Message -----
From: Mumit Khan <khan@NanoTech.Wisc.EDU>
To: Gust, Micron <MGust@rfc.com>
Cc: Cygwin@Sourceware.Cygnus.Com <cygwin@sourceware.cygnus.com>;
Sent: 09 February 2000 16:33
Subject: Re: GCJ Error: undefined reference to `InterlockedIncrement@4'

> "Gust, Micron" <MGust@RFC.com> writes:
> > I am having problems getting a very simple "Hello World" java class to
> > compile with gcj.
> >
> > When I try to compile the class file it gives me the error message
> > I've also tried compiling the .java file and I got the same error. Can
> > anyone tell me what I'm doing wrong?
> >
> > FYI: I have installed:
> > 1) The full version of Cygwin B20.1
> > 2) GCC version 2.95.2 for Cygwin B20.x
> > 3) Libgcj for Win32
> >
> > Error Messages:
> --------------------------------------------------------------------------
> > -----------------
> > bash-2.02$ gcj -mno-cygwin --main=Hello -o Hello Hello.class
> > /usr/local/lib/libgccgcj.a(_eh.o): In function `eh_context_initialize':
> >
> > 0x142): undefined reference to `InterlockedIncrement@4'
> > /usr/local/lib/libgccgcj.a(frame.o): In function
> >
> > 4a): undefined reference to `InterlockedIncrement@4'
> > collect2: ld returned 1 exit status
> --------------------------------------------------------------------------
> Looks like the gcj specs is incorrect, and not linking in libkernel32.a
> which contains the missing symbol.
> Make sure you read up on Jon Beniston's web page on libgcj:
>    Linkname: Libgcj for Win32
>    URL: http://www.cs.bris.ac.uk/~jb7216/libgcj/
> He mentions some problems with the specs, and possibly also with
> libkernel32.a, and provides an alternative/fixed one.
> Jon, can you elaborate on the problem with libkernel32.a so I can
> fix it? Note that there is no GetFileAttributeEx exported by the
> kernel interface, but rather GetFileAttributeEx{A,W} for ASCII
> and Unicode.


Well, there appears to be two problems as far as I can tell, but I'm far
from an expert on how GCC links things. Firstly, I the orignal spec file
that comes with gcc produces something like

   ...  libkernel32.a ... libgcc.a

The libgcc.a references InterlockedIncrement (Used by the thread safe
exception handling stuff, gthr-win32.c) which is not getting picked up
because it isnt referenced until after the inclusion of libkernel32.

One of the other problems someone was experiencing was solved by me giving
him the same copy of the libkernel32.a that I am using. I'm not sure if
there are some versioning issues here or perhaps if mine / his is mangled in
some way. The libkernel32.a that I use is available on the Web site.

Also, I've just found out that there are some problems with downloading .bz2
files from the site as the server is sending them as text/plain. I'll try to
address this ASAP, but I don't run the server. Until then, I suggest people
use the gzips.


> Regards,
> Mumit

Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com

More information about the Cygwin mailing list