[CLN-list] future GCC 4.3 and modules.h

Richard B. Kreckel kreckel at ginac.de
Sat Jul 21 23:55:12 CEST 2007


Dear Ralf,

Ralf Wildenhues wrote:
> Consider this code snippet:
> 
> extern "C" void func () {}
> __asm__("\t.globl " "_GLOBAL__I_" "func");
> static struct S {
>   inline S () { }
> } S;
> 
> On x86_64, with `g++-4.2 -fPIC -c a.cc', this results in
> | 0000000000000032 T _GLOBAL__I_func
> 
> with mainline GCC (what will eventually be 4.3 or some other number), it
> has
> | 0000000000000032 t _GLOBAL__I_a.cc
> 
> (and of course that will be `T' with the appropriate .globl directive).
> 
> This affects .libs/cl_DF_globals.o and some of the other globals
> objects, and causes a link failure of the examples due to the CL_REQUIRE
> undefined references (global constructor keyed to ...).
> 
> The hack below makes things work with mainline, but still needs to be
> redone properly, with a configure-time check and so on to not regress
> on g++ <= 4.2.  If you like I can take a stab at writing so;

If this becomes necessary for new GCCs I would really appreciate such a 
patch from you.

>                                                              I assume
> the test should make use of $lt_compiler_pic_CXX and the header file
> provide different defines based on whether -DPIC was given?  (I'm not
> all that experienced with this stuff, so pointers are greatly
> appreciated.)

I don't know about new GCCs. But if -DPIC matters, then we'll need two 
defines, yes. We need those symbols, after all.

Cheers
    -richy.
-- 
Richard B. Kreckel
<http://www.ginac.de/~kreckel/>


More information about the CLN-list mailing list