Patch to enable libgcj.dll for MinGW
Danny Smith
dannysmith@clear.net.nz
Wed Sep 7 21:37:00 GMT 2005
----- Original Message -----
From: "Andrew Haley"
Sent: Thursday, 8 September 2005 03:52
> Ranjit Mathew writes:
> > On 9/7/05, TJ Laurenzo wrote:
> > > As has been pointed out earlier, this situation really *should* work,
> > > regardless of whether it is generally useful or not. According to
> > > Danny, PE binutils supports the necessary semantics to make this work
> > > with the caveat that it might screw up dllimport/dllexport. Yet it
> > > seems that the c++ compiler is not emitting code that defines these
> > > symbols appropriately. Here is the output from nm on natLogger.o
> > [...]
> > > This is starting to look like a C++ compiler bug. When I get a
> > > moment, I'll distill this down to a simple example and shoot it over
> > > to the appropriate place (can anyone tell me where that is?).
> >
COMDAT works fine in C++:
inline void foo (){};
compiles to this in C++:
.section .text$_Z3foov,"x"
.linkonce discard
.align 2
.p2align 2,,3
.globl __Z3foov
----
objdump -x inline.o says this:
3 .text$_Z3foov 00000008 00000000 00000000 000000b4 2**2
CONTENTS, ALLOC, LOAD, CODE, LINK_ONCE_DISCARD (COMDAT
__Z3foov 4)
and ld does indeed discard the duplicates.when building an exe or dl. In C++,
inline functions, artificiall methods and artificial data are made onle only
User code can force link-once semantics on variables, using
__attribute__((selectany)), but its up to the compiler to generate the
appropriate section flags for functions
If you want the details on how PE-COFF vague linkage works refer to
"Microsoft Portable Executable and Common Object File Format Specification,
Revision 6.0, February, 1999"
NT weak externals (what you get if apply __attribute__((weak)) to declaration
of an external) do not
really work that well when importing from a dll. "Vague" linkage from dll's is
usualy handled with explicit dll linkage (the GetProcAddress API)
> > The GCC bugzilla (http://gcc.gnu.org/bugzilla/) is the place to
> > report GCC bugs. This *could* be related to the COMDAT
> > patches by Julian Brown, so you might want to directly bounce
> > it off him to see if he can provide an insight into this problem.
>
> It's not a good idea to only post a Bugzilla entry. Talk to the gcc
> mailing list to find out if this really should work, and if anyone
> knows about any related problems.
> Andrew.
>
More information about the Java
mailing list