gm2
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: A beginner's question


From: Michael Riedl
Subject: Re: A beginner's question
Date: Sat, 8 Apr 2023 19:21:51 +0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:102.0) Gecko/20100101 Thunderbird/102.9.0

Hallo Rudolf,

we have a internet outage at home for the moment - just recognized my mails did not go out for hours - so some may be out of sync.

If, with the pre-compiled version, you can work - at least one step ahead.

With the bootstrapping I think Gaius can help out sooner or later - he is for sure more experienced than me on that !

I send you a proposal for a temporary "work-around" - if that will help we can show the others as well :-)

Gruß

Michael

PS: Just connected via LTE stick ...


Am 08.04.23 um 14:36 schrieb Rudolf Schubert:
Hi Michael,

yes, you're right, a pre-compiled package is simpler to use!

I first started with the instructions I found here:

https://www.nongnu.org/gm2/12/development.html

Compilation with bootstrapping the default and m2 finally went fine
but with the resulting gm2 I could not compile any MODULA program
beyond hello.mod.

I then switched to Debian with a pre-compiled package. I now use
Debian sid which I think is the same as unstable. A gm2 --version shows:

gm2 (Debian 12.2.0-14) 12.2.0

With this gm2 everything is working fine except the few 'findings' I'm
trying to report.

Compiling C programs is also working fine, both on my Debian sid and
on my Arch Linux (wich is running 'on the bare metal'). Debian sid is
in a VMware box.


Rudolf

--
Rudolf Schubert                 \
Kirchstr. 18a                    \  mailto:rudolf@muc.de
82054 Sauerlach                   > http://www.dose.muc.de
Deutschland                      /
Tel. 08104/908311               /


On Sat, 8 Apr 2023, Michael Riedl wrote:

Rudolf, Gaius,

would it not be an option to first use a pre-compiled package (e.g.
https://packages.debian.org/unstable/gm2) to see if there are no issues "in
general" with the installation ? And, if this is going to work, dive deeper in
the building of an very actual compiler in a second step ?

Rudolf, did you try to compile a short "C" program, just as an example, to see
if at least this is well behaved ? I had some issues in the past when
installing

GM2 in a more actual version than the "default" gcc - just to exclude these
types of issues.

Gruß

Michael

Am 08.04.23 um 12:29 schrieb Rudolf Schubert:
Hi Gaius,

I tried to follow your hints as closely as possible but in the very end
when I try to compile a simple test program I get a very simalar error
message than I got previously:

/usr/bin/ld: /tmp/cciW0QG5.o: in function `_M2_link':
port_test_gm2.mod:(.text+0x16d5): undefined reference to `_M2_wraptime_ctor'
collect2: error: ld returned 1 exit status

'Previously' means: as mentioned, I followed the instructions at

https://www.nongnu.org/gm2/12/development.html

and managed to build a gm2 in some local installation directory on my
Arch Linux system. But when using this I got this error message:

/usr/bin/ld: /tmp/cc0s2CjZ.o: warning: relocation against
`_M2_wraptime_ctor' in read-only section `.text'
/usr/bin/ld: /tmp/cc0s2CjZ.o: in function `_M2_link':
port_test_gm2.mod:(.text+0x1a03): undefined reference to `_M2_wraptime_ctor'
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE

BTW, was it to be expected that the

make m2/stage2/cc1gm2

in your script just did nothing because I got the message that
there was no rule in the Makefile?

The difference between my two installations is:

the latter is on my Arch Linux and the former is on Debian sid. It seems
that
on both platforms there is some basic problem so that linking does not work.
The warning on my Arch Linux does indicate that this is something with
'PIE'.

Perhaps I've also missed some configuration steps or something? So my
question
would be:

Whats steps exactly will I have to do in order to get a running gm2 from
the gcc sources at git://gcc.gnu.org/git/gcc.git? Do you also use Debian sid
or a different version? Will I need some special prerequisites? BTW, I'm
using the 4 packages mpfr, mpc, isl, gmp from my system and did not download
these into the gcc tree. I hope this would not make the difference?

BR

Rudolf

--
Rudolf Schubert                 \
Kirchstr. 18a                    \  mailto:rudolf@muc.de
82054 Sauerlach                   > http://www.dose.muc.de
Deutschland                      /
Tel. 08104/908311               /


On Fri, 7 Apr 2023, Gaius Mulley wrote:

Rudolf Schubert <rudolf@muc.de> writes:

Hi Rudolf and Benjamin,

My 'real' problems go a bit 'deeper' but before I wanted to go in too
much detail I first wanted to make sure I'm really using the latest
version of GM2. I don't want to bore peeple with old stuff which is
not relevant any more;-)
the latest gm2 in source form is available via:

    $ git clone git://gcc.gnu.org/git/gcc.git

note that GCC-13 is about to be released (somewhere within 0-3 weeks).
However gm2-13 is significantly different to gm2-12 (linking options and
many bug fixes).  The RTExceptions bug for example was fixed around 6
weeks ago iirc in GCC-13.

On a Debian system (if I need a fast build then) I build it with the
script included at the end.  Please read and adapt - it will remove the
$HOME/opt directory - and probably do other bad things - but the
configure arguments should be useful at least :-)

regards,
Gaius




#!/bin/bash

GCC=none
MAXCPU=$(nproc)
REGEN_CONFIGURE=0

REPRODIR=gcc-read-write

PROFILE=
LANGUAGES=m2

# INSTALLDIR=opt-lto
INSTALLDIR=opt
MAKEFLAGS=
# MAKEFLAGS=profiledbootstrap-lean
# CONFIGFLAGS=--with-build-config=bootstrap-lto-lean


if [ $# -gt 1 ]; then
     CONFIGFLAGS=$1
     shift
     echo "configure with ${CONFIGFLAGS}"
     echo "press enter to confirm"
     read ans
fi

if [ $# -eq 0 ]; then
     CPUS="-j ${MAXCPU}"
else
     CPUS="-j $*"
fi


pushd $HOME/opt && rm -rf bin  include  lib  lib32  lib64  libexec  share
&& popd

echo "download prereq"
pushd ${REPRODIR}
./contrib/download_prerequisites
popd

if [ ${REGEN_CONFIGURE} -eq 1 ] ; then
      echo "regenerating configuring files"
      chmod 755 rebuild-autofiles
      if ! ./rebuild-autofiles ${REPRODIR} ; then
        echo "failed to reconfigure"
        exit 1
      fi
      echo "after reconfigure"
else
      echo "not regenerating configuring files"
fi

rm -rf build ; mkdir build ; cd build ; CFLAGS="-O0 -g" CXXFLAGS="-O0 -g"
../gcc-read-write/configure \
                                            --enable-languages=${LANGUAGES} \
                                            --enable-multilib
--enable-checking \
                                            --disable-bootstrap \
                                            ${CONFIGFLAGS} \
                                            --prefix=$HOME/opt
if make ${CPUS} ${MAKEFLAGS} ; then
      cd gcc
      if make m2/stage2/cc1gm2 ; then
          echo "built stage2 as well with full debugging"
      else
          echo "failed to build m2/stage2/cc1gm2"
          exit 1
      fi
      cd ..
      make check-m2 ${CPUS}
      make install
else
      echo "make failed"
fi




reply via email to

[Prev in Thread] Current Thread [Next in Thread]