Problem loading GCC 4.0 libraries into Java app

Zoltan Foley-Fisher zoltan@atimi.com
Fri Jun 29 12:04:00 GMT 2007


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