[gnu.g++] symbol incompatibility

rpj@redcloud.cad.mcc.com (Rich Johns) (08/02/89)

I have just upgraded from g++ 1.32 to g++ 1.35.1. I was hoping only to
have to recompile my application. It turns out g++ 1.32 generates the
following symbol for a method involving a boolean arg:

   _DoInsert_PSWorld_PSInteractor_Eboolean_SI_SI

whereas g++ 1.35.1 generates the followiwng for the same method:

   _DoInsert_PSWorld_PSInteractor_E$_0_SI_SI

This means that all libraries, previously compiled with g++ 1.32
that my application(s) links with, must also be recompiled, otherwise
I get a lot of undefined symbols :-(

Just out of curiosity, how much benefit is derived from switching the
way booleans are represented?





I have just discovered that I must recompile all the libraries
originally compiled with g++ 1.32
Rich Johns, MCC CAD Program | 3500 W. Balcones Center Dr., Austin, TX 78759
ARPA: johns@mcc.com         | Phone: [512] 338-3714
UUCP: {uunet,harvard,gatech,pyramid}!cs.utexas.edu!milano!cadillac!johns

tiemann@YAHI.STANFORD.EDU (Michael Tiemann) (08/03/89)

    I have just upgraded from g++ 1.32 to g++ 1.35.1. I was hoping only to
    have to recompile my application. It turns out g++ 1.32 generates the
    following symbol for a method involving a boolean arg:

       _DoInsert_PSWorld_PSInteractor_Eboolean_SI_SI

    whereas g++ 1.35.1 generates the followiwng for the same method:

       _DoInsert_PSWorld_PSInteractor_E$_0_SI_SI

This is a bug.  It will be fixed in 1.36.0.

Michael