From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk1-x72a.google.com (mail-qk1-x72a.google.com [IPv6:2607:f8b0:4864:20::72a]) by sourceware.org (Postfix) with ESMTPS id 05CAC385626D for ; Tue, 24 May 2022 10:26:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 05CAC385626D Received: by mail-qk1-x72a.google.com with SMTP id v11so14730941qkf.1 for ; Tue, 24 May 2022 03:26:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=1xT1sCRE4JCLl/b4iV4VZE4GdYZnFcXz6SkZGzGHIeo=; b=H2M2zJVYaAbEMobdVhkOhUHgYfqBFCaCINzutFiA+G8qKAVIV/bBs6yFeX3wOc63QQ bnW5dPEHIbPqYP+bPX9VuylGdvB5HwgXkkVqF8s3Pjx0J1ExH4L6i24ziFDu0VwGXFBs kBhUTIFD1ZJCCHZ2/mu4HWZUbgA6288fee+C97R8LiG0WUCoJK0RGZdpFuc8A3paoMNY /jD4VTkIvR7sNUAg3rB+NRBrbqSKrS4wQMbte/C5tT5nvE31xyG7sW+BXceqYkDas4v9 2AZYUhl0qd4CJydRH9k66cOWH/cqntJ7phn2UKBb1pgcS33XStBPWrMETrN/v8+7FRU+ D85A== X-Gm-Message-State: AOAM531Lljz17uE1tEpux0Vza2eAB8Eo8cEZxEi+INd+Ny5W4hnCWZ0Z yQYsWeZCz9MZL2LWFutw0xwkcPExu96e8BVIWtc= X-Google-Smtp-Source: ABdhPJwremLUIBisM3bi+e/0YnwLIDFsDvdW/sRW+IqO0Sju7LPTCVCA/id+t45z+qw5Jb6o1bEQmpJGBDBnadRLihk= X-Received: by 2002:a37:9207:0:b0:6a3:45ac:a42c with SMTP id u7-20020a379207000000b006a345aca42cmr13772131qkd.350.1653387996158; Tue, 24 May 2022 03:26:36 -0700 (PDT) MIME-Version: 1.0 References: <871qwnvgej.fsf@debian> In-Reply-To: <871qwnvgej.fsf@debian> From: Richard Biener Date: Tue, 24 May 2022 12:26:25 +0200 Message-ID: Subject: Re: [PATCH] Modula-2: merge proposal/review: 1/9 01.patch-set-01 To: Gaius Mulley Cc: GCC Patches Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, KAM_NUMSUBJECT, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 May 2022 10:26:40 -0000 On Sat, May 21, 2022 at 3:11 AM Gaius Mulley wrote: > > > Hi, > > Gaius wrote: > > > the changes do raise questions. The reason for the changes here are to > > allow easy linking for modula-2 users. > > > $ gm2 hello.mod > > > for example will compile and link with all dependent modules (dependant= s > > are generated by analysing module source imports). The gm2 driver will > > add objects and libraries to the link. > > in more detail the gm2 driver does the following: > > $ gm2 -v hello.mod > > full output below, but to summarise and annotate: > > cc1gm2 generates an assembler file from hello.mod > as --64 /tmp/cc8BoL3d.s -o hello.o > > # gm2l generates a list of all dependent modules from parsing all import= s > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/gm2l -v \ > -I/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2pim -o \ > /tmp/ccSMojUb.l hello.mod > > # gm2lorder reorders the critical runtime modules > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/gm2lorder \ > /tmp/ccSMojUb.l -o /tmp/ccHDRdde.lst > > # gm2lgen generates a C++ scaffold from the reordered module list > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/gm2lgen -fcpp \ > /tmp/ccHDRdde.lst -o a-hello_m2.cpp > > # cc1plus compiles the scaffold > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/cc1plus -v \ > -mtune=3Dgeneric -march=3Dx86-64 \ > -I/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2pim \ > -quiet a-hello_m2.cpp -o a-hello_m2.s > as --64 a-hello_m2.s -o a-hello_m2.o > > # gm2lcc creates an archive from the list of modules and the scaffold > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/gm2lcc \ > -L/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2pim \ > -ftarget-ar=3D/usr/bin/ar -ftarget-ranlib=3D/usr/bin/ranlib \ > -fobject-path=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2p= im \ > --exec --startup a-hello_m2.o --ar -o /tmp/ccNJ60fa.a --mainobject \ > a-hello_m2.o /tmp/ccHDRdde.lst > > /usr/bin/ar rc /tmp/ccNJ60fa.a hello.o a-hello_m2.o > /usr/bin/ranlib /tmp/ccNJ60fa.a > > # finally collect2 performs the link from the archive and any default > libraries > > hope this helps Yes, it does. So historically when there was complex massaging required like this it was offloaded to a "helper driver". With -flto there's lto-wr= apper (but here invoked by the linker), with ada there's gnatmake and others and with certain targets collect2 does extra processing producing global CTORs (or for C++ with -frepo even invoked additional compilations). I do think that this might all belong into the main driver code but then maybe all the different language compilation models will just make that very hard to maintain. As for modula-2, does $ gm2 -c hello.mod $ gm2 hello.o "work"? And what intermediate files are build systems expecting to prevail? Like for C/C++ code and GNU make there's the preprocessor driven dependence generation, but otherwise a single TU usually produces a single object file. OTOH for GFortran a single TU might produce multiple .mod files for example. Btw, does $ gcc -c hello.mod "work" (or with -x m2 if the extension isn't auto detected)? Richard. > > regards, > Gaius > > > > > > > $ ~/opt/bin/gm2 -v hello.mod > Using built-in specs. > COLLECT_GCC=3D/home/gaius/opt/bin/gm2 > COLLECT_LTO_WRAPPER=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/= lto-wrapper > Target: x86_64-pc-linux-gnu > Configured with: /home/gaius/GM2/graft-combine/gcc-git-devel-modula2/conf= igure --prefix=3D/home/gaius/opt --libexecdir=3D/home/gaius/opt/lib --enabl= e-threads=3Dposix --enable-clocale=3Dgnu --enable-languages=3Dm2 --enable-m= ultilib --enable-checking --enable-long-longx --enable-bootstrap --with-bui= ld-config=3Dbootstrap-Og > Thread model: posix > Supported LTO compression algorithms: zlib > gcc version 13.0.0 20220519 (experimental) (GCC) > COLLECT_GCC_OPTIONS=3D'-I/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0= .0/m2/m2pim' '-ftarget-ar=3D/usr/bin/ar' '-ftarget-ranlib=3D/usr/bin/ranlib= ' '-fobject-path=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2= pim' '-x' 'modula-2' '-fplugin=3Dm2rte' '-L/home/gaius/opt/lib/gcc/x86_64-p= c-linux-gnu/13.0.0/m2/m2pim' '-L/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu= /13.0.0/m2/m2pim' '-shared-libgcc' '-v' '-mtune=3Dgeneric' '-march=3Dx86-64= ' '-dumpdir' 'a-' > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/cc1gm2 -iplugindir=3D= /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/plugin -quiet -dumpdir a= - -dumpbase hello.mod -dumpbase-ext .mod -mtune=3Dgeneric -march=3Dx86-64 -= version -ftarget-ar=3D/usr/bin/ar -ftarget-ranlib=3D/usr/bin/ranlib -fobjec= t-path=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2pim -fplug= in=3Dm2rte -ftarget-ar=3D/usr/bin/ar -ftarget-ranlib=3D/usr/bin/ranlib -fob= ject-path=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2pim -fp= lugin=3Dm2rte -I/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2pim= -o /tmp/cc8BoL3d.s hello.mod > GNU Modula-2 1.9.5 (20220520) > grafted onto GCC 13.0.0 > Copyright (C) 2022 Free Software Foundation, Inc. > License GPLv2: GNU GPL version 2 or later > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. > GNU Modula-2 (GCC) version 13.0.0 20220519 (experimental) (x86_64-pc-linu= x-gnu) > compiled by GNU C version 13.0.0 20220519 (experimental), GMP ver= sion 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP > > GGC heuristics: --param ggc-min-expand=3D30 --param ggc-min-heapsize=3D40= 96 > Versions of loaded plugins: > m2rte: Unknown version. > GNU Modula-2 (GCC) version 13.0.0 20220519 (experimental) (x86_64-pc-linu= x-gnu) > compiled by GNU C version 13.0.0 20220519 (experimental), GMP ver= sion 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP > > GGC heuristics: --param ggc-min-expand=3D30 --param ggc-min-heapsize=3D40= 96 > Versions of loaded plugins: > m2rte: Unknown version. > COLLECT_GCC_OPTIONS=3D'-I/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0= .0/m2/m2pim' '-ftarget-ar=3D/usr/bin/ar' '-ftarget-ranlib=3D/usr/bin/ranlib= ' '-fobject-path=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2= pim' '-x' 'modula-2' '-fplugin=3Dm2rte' '-L/home/gaius/opt/lib/gcc/x86_64-p= c-linux-gnu/13.0.0/m2/m2pim' '-L/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu= /13.0.0/m2/m2pim' '-shared-libgcc' '-v' '-mtune=3Dgeneric' '-march=3Dx86-64= ' '-dumpdir' 'a-' > as --64 /tmp/cc8BoL3d.s -o hello.o > COLLECT_GCC_OPTIONS=3D'-I/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0= .0/m2/m2pim' '-ftarget-ar=3D/usr/bin/ar' '-ftarget-ranlib=3D/usr/bin/ranlib= ' '-fobject-path=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2= pim' '-x' 'modula-2' '-fplugin=3Dm2rte' '-L/home/gaius/opt/lib/gcc/x86_64-p= c-linux-gnu/13.0.0/m2/m2pim' '-L/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu= /13.0.0/m2/m2pim' '-shared-libgcc' '-v' '-mtune=3Dgeneric' '-march=3Dx86-64= ' '-dumpdir' 'a-' > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/gm2l -v -I/home/gaius= /opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2pim -o /tmp/ccSMojUb.l hello.m= od > gm2l >>> open source file: hello.mod > COLLECT_GCC_OPTIONS=3D'-I/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0= .0/m2/m2pim' '-ftarget-ar=3D/usr/bin/ar' '-ftarget-ranlib=3D/usr/bin/ranlib= ' '-fobject-path=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2= pim' '-x' 'modula-2' '-fplugin=3Dm2rte' '-L/home/gaius/opt/lib/gcc/x86_64-p= c-linux-gnu/13.0.0/m2/m2pim' '-L/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu= /13.0.0/m2/m2pim' '-shared-libgcc' '-v' '-mtune=3Dgeneric' '-march=3Dx86-64= ' '-dumpdir' 'a-' > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/gm2lorder /tmp/ccSMoj= Ub.l -o /tmp/ccHDRdde.lst > COLLECT_GCC_OPTIONS=3D'-I/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0= .0/m2/m2pim' '-ftarget-ar=3D/usr/bin/ar' '-ftarget-ranlib=3D/usr/bin/ranlib= ' '-fobject-path=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2= pim' '-x' 'modula-2' '-fplugin=3Dm2rte' '-L/home/gaius/opt/lib/gcc/x86_64-p= c-linux-gnu/13.0.0/m2/m2pim' '-L/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu= /13.0.0/m2/m2pim' '-shared-libgcc' '-v' '-mtune=3Dgeneric' '-march=3Dx86-64= ' '-dumpdir' 'a-' > COLLECT_GCC_OPTIONS=3D'-I/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0= .0/m2/m2pim' '-ftarget-ar=3D/usr/bin/ar' '-ftarget-ranlib=3D/usr/bin/ranlib= ' '-fobject-path=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2= pim' '-x' 'modula-2' '-fplugin=3Dm2rte' '-L/home/gaius/opt/lib/gcc/x86_64-p= c-linux-gnu/13.0.0/m2/m2pim' '-L/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu= /13.0.0/m2/m2pim' '-shared-libgcc' '-v' '-mtune=3Dgeneric' '-march=3Dx86-64= ' '-dumpdir' 'a-' > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/gm2lgen -fcpp /tmp/cc= HDRdde.lst -o a-hello_m2.cpp > COLLECT_GCC_OPTIONS=3D'-I/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0= .0/m2/m2pim' '-ftarget-ar=3D/usr/bin/ar' '-ftarget-ranlib=3D/usr/bin/ranlib= ' '-fobject-path=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2= pim' '-x' 'modula-2' '-fplugin=3Dm2rte' '-L/home/gaius/opt/lib/gcc/x86_64-p= c-linux-gnu/13.0.0/m2/m2pim' '-L/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu= /13.0.0/m2/m2pim' '-shared-libgcc' '-v' '-mtune=3Dgeneric' '-march=3Dx86-64= ' '-dumpdir' 'a-' > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/cc1plus -v -mtune=3Dg= eneric -march=3Dx86-64 -I/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0= /m2/m2pim -quiet a-hello_m2.cpp -o a-hello_m2.s > ignoring nonexistent directory "/home/gaius/opt/lib/gcc/x86_64-pc-linux-g= nu/13.0.0/../../../../x86_64-pc-linux-gnu/include" > #include "..." search starts here: > #include <...> search starts here: > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2pim > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c= ++/13.0.0 > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c= ++/13.0.0/x86_64-pc-linux-gnu > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c= ++/13.0.0/backward > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/include > /usr/local/include > /home/gaius/opt/include > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/include-fixed > /usr/include > End of search list. > COLLECT_GCC_OPTIONS=3D'-I/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0= .0/m2/m2pim' '-ftarget-ar=3D/usr/bin/ar' '-ftarget-ranlib=3D/usr/bin/ranlib= ' '-fobject-path=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2= pim' '-x' 'modula-2' '-fplugin=3Dm2rte' '-L/home/gaius/opt/lib/gcc/x86_64-p= c-linux-gnu/13.0.0/m2/m2pim' '-L/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu= /13.0.0/m2/m2pim' '-shared-libgcc' '-v' '-mtune=3Dgeneric' '-march=3Dx86-64= ' '-dumpdir' 'a-' > as --64 a-hello_m2.s -o a-hello_m2.o > COLLECT_GCC_OPTIONS=3D'-I/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0= .0/m2/m2pim' '-ftarget-ar=3D/usr/bin/ar' '-ftarget-ranlib=3D/usr/bin/ranlib= ' '-fobject-path=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2= pim' '-x' 'modula-2' '-fplugin=3Dm2rte' '-L/home/gaius/opt/lib/gcc/x86_64-p= c-linux-gnu/13.0.0/m2/m2pim' '-L/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu= /13.0.0/m2/m2pim' '-shared-libgcc' '-v' '-mtune=3Dgeneric' '-march=3Dx86-64= ' '-dumpdir' 'a-' > rm -f /tmp/ccNJ60fa.a > COLLECT_GCC_OPTIONS=3D'-I/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0= .0/m2/m2pim' '-ftarget-ar=3D/usr/bin/ar' '-ftarget-ranlib=3D/usr/bin/ranlib= ' '-fobject-path=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2= pim' '-x' 'modula-2' '-fplugin=3Dm2rte' '-L/home/gaius/opt/lib/gcc/x86_64-p= c-linux-gnu/13.0.0/m2/m2pim' '-L/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu= /13.0.0/m2/m2pim' '-shared-libgcc' '-v' '-mtune=3Dgeneric' '-march=3Dx86-64= ' '-dumpdir' 'a-' > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/gm2lcc -L/home/gaius/= opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2pim -L/home/gaius/opt/lib/gcc/x= 86_64-pc-linux-gnu/13.0.0/m2/m2pim -ftarget-ar=3D/usr/bin/ar -ftarget-ranli= b=3D/usr/bin/ranlib -fobject-path=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux= -gnu/13.0.0/m2/m2pim -v --exec --startup a-hello_m2.o --ar -o /tmp/ccNJ60fa= .a --mainobject a-hello_m2.o /tmp/ccHDRdde.lst > /usr/bin/ar rc /tmp/ccNJ60fa.a hello.o a-hello_m2.o > /usr/bin/ranlib /tmp/ccNJ60fa.a > COLLECT_GCC_OPTIONS=3D'-I/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0= .0/m2/m2pim' '-ftarget-ar=3D/usr/bin/ar' '-ftarget-ranlib=3D/usr/bin/ranlib= ' '-fobject-path=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2= pim' '-x' 'modula-2' '-fplugin=3Dm2rte' '-L/home/gaius/opt/lib/gcc/x86_64-p= c-linux-gnu/13.0.0/m2/m2pim' '-L/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu= /13.0.0/m2/m2pim' '-shared-libgcc' '-v' '-mtune=3Dgeneric' '-march=3Dx86-64= ' '-dumpdir' 'a-' > COMPILER_PATH=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/:/home= /gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/:/home/gaius/opt/lib/gcc/x86_= 64-pc-linux-gnu/:/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/:/home/= gaius/opt/lib/gcc/x86_64-pc-linux-gnu/ > LIBRARY_PATH=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/:/home/= gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../lib64/:/lib/x86_64= -linux-gnu/:/lib/../lib64/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib64/:/h= ome/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../:/lib/:/usr/lib/ > COLLECT_GCC_OPTIONS=3D'-I/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0= .0/m2/m2pim' '-ftarget-ar=3D/usr/bin/ar' '-ftarget-ranlib=3D/usr/bin/ranlib= ' '-fobject-path=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2= pim' '-x' 'modula-2' '-fplugin=3Dm2rte' '-L/home/gaius/opt/lib/gcc/x86_64-p= c-linux-gnu/13.0.0/m2/m2pim' '-L/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu= /13.0.0/m2/m2pim' '-shared-libgcc' '-v' '-mtune=3Dgeneric' '-march=3Dx86-64= ' '-dumpdir' 'a.' > /home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/collect2 -plugin /hom= e/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/liblto_plugin.so -plugin-opt= =3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/lto-wrapper -plugin-o= pt=3D-fresolution=3D/tmp/ccyNQjVa.res -plugin-opt=3D-pass-through=3D-lgcc_s= -plugin-opt=3D-pass-through=3D-lgcc -plugin-opt=3D-pass-through=3D-lc -plu= gin-opt=3D-pass-through=3D-lgcc_s -plugin-opt=3D-pass-through=3D-lgcc --eh-= frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /lib/x8= 6_64-linux-gnu/crt1.o /lib/x86_64-linux-gnu/crti.o /home/gaius/opt/lib/gcc/= x86_64-pc-linux-gnu/13.0.0/crtbegin.o -L/home/gaius/opt/lib/gcc/x86_64-pc-l= inux-gnu/13.0.0/m2/m2pim -L/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0= .0/m2/m2pim -L/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0 -L/home/ga= ius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../lib64 -L/lib/x86_64-= linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -= L/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../.. /tmp/ccNJ60fa.= a -lm2pim -lpthread -lstdc++ -lgcc_eh -lgcc_s -lgcc -lc -lgcc_s -lgcc /home= /gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/crtend.o /lib/x86_64-linux-gn= u/crtn.o > COLLECT_GCC_OPTIONS=3D'-I/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0= .0/m2/m2pim' '-ftarget-ar=3D/usr/bin/ar' '-ftarget-ranlib=3D/usr/bin/ranlib= ' '-fobject-path=3D/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2= pim' '-x' 'modula-2' '-fplugin=3Dm2rte' '-L/home/gaius/opt/lib/gcc/x86_64-p= c-linux-gnu/13.0.0/m2/m2pim' '-L/home/gaius/opt/lib/gcc/x86_64-pc-linux-gnu= /13.0.0/m2/m2pim' '-shared-libgcc' '-v' '-mtune=3Dgeneric' '-march=3Dx86-64= ' '-dumpdir' 'a.'