[M3devel] m3cgc1: fatal error: *** bad M3CG version stamp (0x100), expected 0x110

Rodney M. Bates rodney_bates at lcwb.coop
Fri May 29 18:35:41 CEST 2015


Setting INSTALL_CM3_IN_BIN=yes is what forces the premature install of cm3cg.
I see I had encountered this problem two years ago, but then it was happening
regardless of the value of this variable.  My fix only addresses the case when
the variable is not set.  I naively went to extra trouble to preserve the
existing behavior when it is set--obviously not right.

I don't see an easy way to make the variable work, as there is no
constraint on the order that cm3 and cm3cg are built.  do-cm3-front.sh
happens to do cm3cg first, but that is not necessarily required.

So INSTALL_CM3_IN_BIN is broken and hard to fix, if the two need
compatible upgrades.  For now, it looks like install-cm3-compiler.sh
is the only working way.

But maybe John and Olaf have found a different way around this.

On 05/29/2015 10:55 AM, Rodney M. Bates wrote:
> I don't know yet why, or what needs to change, but here is definitely the problem, starting
> in line 4575 of your m3c log:
>
>
>       g++48   -O2 -pipe -fstack-protector -Wl,-rpath=/usr/local/lib/gcc48 -fno-strict-aliasing  -Wl,-rpath=/usr/local/lib/gcc48 -DIN_GCC  -Wno-missing-field-initializers -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H  -o m3cgc1 m3cg/parse.o attribs.o main.o tree-browser.o libbackend.a libcommon-target.a libcommon.a ../libcpp/libcpp.a libcommon.a ../libcpp/libcpp.a ../libiberty/libiberty.a
>       gmake[1]: Leaving directory `/mech/construction/mech/ptrees/default/lang/modula3/work/cm3-8c1b86a/m3-sys/m3cc/AMD64_FREEBSD/gcc'
>
>
> This is copying the newly-built cm3cg (the compiler back end) to your
> bin directory:
>
>       Forced ship of cm3cg.
>       --- shipping from AMD64_FREEBSD ---
>
>       . => /mech/construction/mech/ptrees/default/lang/modula3/work/bootstrap/bin
>         cm3cg
>        ==> m3-sys/m3cc done
>
>       === package m3-libs/m3core ===
>
> And this is using the cm3 (compiler front end) that was already in the bin
> directory, and is the release version.
>
>        +++ /mech/construction/mech/ptrees/default/lang/modula3/work/bootstrap/bin/cm3 -build -DROOT='/mech/construction/mech/ptrees/default/lang/modula3/work/cm3-8c1b86a' $RARGS  && /mech/construction/mech/ptrees/default/lang/modula3/work/bootstrap/bin/cm3 -ship $RARGS -DROOT='/mech/construction/mech/ptrees/default/lang/modula3/work/cm3-8c1b86a'  +++
>       --- building in AMD64_FREEBSD ---
>
>       ignoring ../src/m3overrides
>
>       new source -> compiling RTHooks.i3
>
> This is cm3cg (aka m3cgc1) detecting the incompatibility:
>
>       m3cgc1: fatal error:  *** bad M3CG version stamp (0x100), expected 0x110
>       compilation terminated.
>
> Here is the counterpart section of my log:
>
>       g++   -g -O2 -DIN_GCC  -Wno-missing-field-initializers -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H  -o m3cgc1 m3cg/parse.o attribs.o main.o tree-browser.o libbackend.a libcommon-target.a libcommon.a ../libcpp/libcpp.a libcommon.a ../libcpp/libcpp.a ../libiberty/libiberty.a
>
> On my build, it's not shipping:
>
>       Not shipping cm3cg.
>       --- shipping from AMD64_LINUX ---
>
>       missing ".M3SHIP" file, build the package first.
>        ==> /home/rodney/proj/m3/git/cm3/m3-sys/m3cc done
>
>       === package /home/rodney/proj/m3/git/cm3/m3-libs/m3core ===
>        +++ cm3 -build -DROOT='/home/rodney/proj/m3/git/cm3' $RARGS  && cm3 -ship $RARGS -DROOT='/home/rodney/proj/m3/git/cm3'  +++
>       --- building in AMD64_LINUX ---
>
>       ignoring ../src/m3overrides
>
>       new source -> compiling RTHooks.i3
>       new source -> compiling RT0.i3
>
> When it works, the copying of both cm3 and cm3cg to the bin directory is delayed until after both have been
> built, in the 'install-cm3-compiler.sh upgrade' step.
>
> I see your build is using a full path to the bin directory and mine is letting
> it come from the usual $PATH search, but that should make no difference, as long
> as the bin directory is found in a consistent way, which seems to be the case
> in both builds.
>
>
>
> On 05/29/2015 04:51 AM, John Marino wrote:
>> On 5/29/2015 11:39, Olaf Wagner wrote:
>>> On Fri, 29 May 2015 11:10:50 +0200
>>> John Marino <adacore at marino.st> wrote:
>>>
>>>> On 5/29/2015 10:54, Olaf Wagner wrote:
>>>>> Please try what I suggested in the attached mail: define
>>>>> INSTALL_CM3_IN_BIN=yes
>>>>> in the environment and see if that helps.
>>>>>
>>>>
>>>> Unfortunately it seems the result is exactly the same, even when
>>>> INSTALL_CM3_IN_BIN is defined in the environment.
>>>
>>> Can I see the new logs? Has the new backend (cm3cg) been installed now?
>>>
>>
>> It's here:
>> http://leaf.dragonflybsd.org/~marino/m3c.log
>>
>> It never completes "do-cm3-front.sh buildship "
>>
>> Note that I'm using a bootstrap install and set INSTALL_ROOT to another
>> location, but it never gets to the point of installing anything.
>>
>> John
>>
>

-- 
Rodney Bates
rodney.m.bates at acm.org



More information about the M3devel mailing list