Problem loading GCC 4.0 libraries into Java app

Zoltan Foley-Fisher zoltan@atimi.com
Thu Jul 12 18:07:00 GMT 2007


The root of this issue: in the JRex makefile there is a build  
variable SHARED_LIBRARY_LIBS which links mozilla object files  
directly into the JRex dylib.. but the JRex code we have also loads  
mozilla libraries dynamically, duplicating some symbols.

Removing the SHARED_LIBRARY_LIBS variable solves the issues.

Somehow we were getting away lightly when using GCC 3.3..

Zoltan



On 28 Jun 2007, at 13:59, Zoltan Foley-Fisher wrote:

> Hello there,
>
> We are having an issue with compilation differences between GCC 3.3  
> and 4.0, OS 10.4.10, on PowerPC using 10.3.9 SDK, on Intel using  
> 10.4u SDK.
>
> We are working with the JRex library to embed Gecko framework in a  
> Universal Java application. When we compile using GCC 3.3, the  
> appropriate dynamic libraries are created without problem and  
> packaged into a Java application bundle, which launches correctly.
>
> But when we compile the same code with GCC 4.0, the dynamic  
> libraries are created, but fail to load into our Java application  
> correctly. We see some strange behaviours when using GDB, that  
> occur every time the program is run, and only in very specific  
> places in the large codebase:
>
>
> On PPC, a C++ function is called
>
> nsIXPConnect *xpc = nsContentUtils::XPConnect();
>
> but returns null. nsContentUtils::XPConnect is defined as:
>
> static nsIXPConnect *XPConnect()
>   {
>     return sXPConnect;
>   }
>
>  When we follow the call with GDB we notice that there are two  
> sXPConnect symbols...
>
>
>
>
> On Intel, another C++ function is called:
>
> nsresult rv = CallGetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID,  
> &sSecurityManager);
>
> but the call results in sSecurityManager null. We follow the call  
> with GDB and see correct values and code flow until this function  
> return, where it mysteriously "drops" the value to be assigned to  
> sSecurityManager.
>
> Even more mysteriously, if we move the program counter back with  
> GDB and repeat the function a second time, it returns the value for  
> sSecurityManager correctly!
>
>
>
>
> Have any of you guys encountered such behaviour before?
>
> Thanks for any help,
> Zoltan Foley-Fisher
>
> Atimi Software Inc.



More information about the Gcc-help mailing list