[PATCH 1/2] Sync with binutils: GCC: Pass --plugin to AR and RANLIB

H.J. Lu hjl.tools@gmail.com
Thu Dec 16 04:28:15 GMT 2021


On Wed, Dec 15, 2021 at 7:38 PM Sandra Loosemore
<sandra@codesourcery.com> wrote:
>
> On 11/13/21 9:33 AM, H.J. Lu via Gcc-patches wrote:
> > Sync with binutils for building binutils with LTO:
> >
> >  From 50ad1254d5030d0804cbf89c758359ae202e8d55 Mon Sep 17 00:00:00 2001
> > From: "H.J. Lu" <hjl.tools@gmail.com>
> > Date: Sat, 9 Jan 2021 06:43:11 -0800
> > Subject: [PATCH] GCC: Pass --plugin to AR and RANLIB
> >
> > Detect GCC LTO plugin.  Pass --plugin to AR and RANLIB to support LTO
> > build.
> >
> >       * Makefile.tpl (AR): Add @AR_PLUGIN_OPTION@
> >       (RANLIB): Add @RANLIB_PLUGIN_OPTION@.
> >       * configure.ac: Include config/gcc-plugin.m4.
> >       AC_SUBST AR_PLUGIN_OPTION and RANLIB_PLUGIN_OPTION.
> >       * libtool.m4 (_LT_CMD_OLD_ARCHIVE): Pass --plugin to AR and
> >       RANLIB if possible.
> >       * Makefile.in: Regenerated.
> >       * configure: Likewise.
> >
> > config/
> >
> >       * gcc-plugin.m4 (GCC_PLUGIN_OPTION): New.
> >
> > libiberty/
> >
> >       * Makefile.in (AR): Add @AR_PLUGIN_OPTION@
> >       (RANLIB): Add @RANLIB_PLUGIN_OPTION@.
> >       (configure_deps): Depend on ../config/gcc-plugin.m4.
> >       * configure.ac: AC_SUBST AR_PLUGIN_OPTION and
> >       RANLIB_PLUGIN_OPTION.
> >       * aclocal.m4: Regenerated.
> >       * configure: Likewise.
> >
> > zlib/
> >
> >       * configure: Regenerated.
>
> This patch appears to have broken my nios2-linux-gnu target,
> x86_64-linux-gnu host cross build:
>
> x86_64-linux-gnu-ar  --plugin
> /usr/local/tools/gcc-2021/bin/../libexec/gcc/x86_64-linux-gnu/9.3.1/liblto_plugin.so
> --plugin
> /usr/local/tools/gcc-2021/bin/../libexec/gcc/x86_64-linux-gnu/9.3.1/liblto_plugin.so
> rc ./libiberty.a \
>    ./regex.o ./cplus-dem.o ./cp-demangle.o ./md5.o ./sha1.o ./alloca.o
> ./argv.o ./bsearch_r.o ./choose-temp.o ./concat.o ./cp-demint.o
> ./crc32.o ./d-demangle.o ./dwarfnames.o ./dyn-string.o ./fdmatch.o
> ./fibheap.o ./filedescriptor.o ./filename_cmp.o ./floatformat.o
> ./fnmatch.o ./fopen_unlocked.o ./getopt.o ./getopt1.o ./getpwd.o
> ./getruntime.o ./hashtab.o ./hex.o ./lbasename.o ./lrealpath.o
> ./make-relative-prefix.o ./make-temp-file.o ./objalloc.o ./obstack.o
> ./partition.o ./pexecute.o ./physmem.o ./pex-common.o ./pex-one.o
> ./pex-unix.o ./vprintf-support.o ./rust-demangle.o ./safe-ctype.o
> ./simple-object.o ./simple-object-coff.o ./simple-object-elf.o
> ./simple-object-mach-o.o ./simple-object-xcoff.o ./sort.o ./spaces.o
> ./splay-tree.o ./stack-limit.o ./strerror.o ./strsignal.o
> ./timeval-utils.o ./unlink-if-ordinary.o ./xasprintf.o ./xatexit.o
> ./xexit.o ./xmalloc.o ./xmemdup.o ./xstrdup.o ./xstrerror.o ./xstrndup.o
> ./xvasprintf.o  ./setproctitle.o
> x86_64-linux-gnu-ar: no operation specified
>
> This is ar version 2.32.51.  I also tried with an older set of host
> tools using ar 2.25.51 and saw the same failure.
>
> -Sandra

I built nios2-linux-gnu cross compiler using glibc build-many-glibcs.py
script:

/usr/bin/time /export/project/tools-build/glibc-many/src/glibc/scripts/build-man
y-glibcs.py  -j 96 /export/project/tools-build/glibc-many \
  compilers nios2-linux-gnu
make[1]: Entering directory '/export/project/tools-build/glibc-many/build'
PASS: compilers-nios2-linux-gnu check-host-libraries
PASS: compilers-nios2-linux-gnu binutils rm
PASS: compilers-nios2-linux-gnu binutils mkdir
PASS: compilers-nios2-linux-gnu binutils configure
make[1]: Leaving directory '/export/project/tools-build/glibc-many/build'
PASS: compilers-nios2-linux-gnu binutils build
PASS: compilers-nios2-linux-gnu binutils install
make[1]: Entering directory '/export/project/tools-build/glibc-many/build'
PASS: compilers-nios2-linux-gnu binutils cleanup
PASS: compilers-nios2-linux-gnu linux rm
PASS: compilers-nios2-linux-gnu linux mkdir
make[1]: Leaving directory '/export/project/tools-build/glibc-many/build'
PASS: compilers-nios2-linux-gnu linux install-headers
make[1]: Entering directory '/export/project/tools-build/glibc-many/build'
PASS: compilers-nios2-linux-gnu linux cleanup
PASS: compilers-nios2-linux-gnu gcc-first rm
PASS: compilers-nios2-linux-gnu gcc-first mkdir
PASS: compilers-nios2-linux-gnu gcc-first configure
make[1]: Leaving directory '/export/project/tools-build/glibc-many/build'
PASS: compilers-nios2-linux-gnu gcc-first build
PASS: compilers-nios2-linux-gnu gcc-first install
make[1]: Entering directory '/export/project/tools-build/glibc-many/build'
PASS: compilers-nios2-linux-gnu gcc-first cleanup
PASS: compilers-nios2-linux-gnu glibc nios2-linux-gnu rm
PASS: compilers-nios2-linux-gnu glibc nios2-linux-gnu mkdir
PASS: compilers-nios2-linux-gnu glibc nios2-linux-gnu configure
make[1]: Leaving directory '/export/project/tools-build/glibc-many/build'
PASS: compilers-nios2-linux-gnu glibc nios2-linux-gnu build
PASS: compilers-nios2-linux-gnu glibc nios2-linux-gnu install
make[1]: Entering directory '/export/project/tools-build/glibc-many/build'
PASS: compilers-nios2-linux-gnu glibc nios2-linux-gnu mkdir-lib
PASS: compilers-nios2-linux-gnu glibc nios2-linux-gnu cleanup
PASS: compilers-nios2-linux-gnu gcc rm
PASS: compilers-nios2-linux-gnu gcc mkdir
PASS: compilers-nios2-linux-gnu gcc configure
make[1]: Leaving directory '/export/project/tools-build/glibc-many/build'
PASS: compilers-nios2-linux-gnu gcc build
PASS: compilers-nios2-linux-gnu gcc install
make[1]: Entering directory '/export/project/tools-build/glibc-many/build'
PASS: compilers-nios2-linux-gnu gcc cleanup
PASS: compilers-nios2-linux-gnu done
make[1]: Leaving directory '/export/project/tools-build/glibc-many/build'

using glibc master, binutils master and gcc master.   Is there a way
to reproduce it with build-many-glibcs.py?

-- 
H.J.


More information about the Gcc-patches mailing list