Date: Tue, 28 Apr 2020 14:00:57 -0700 From: Mark Millard <marklmi@yahoo.com> To: Emmanuel Vadot <manu@bidouilliste.com> Cc: freebsd-arm <freebsd-arm@freebsd.org>, FreeBSD ports <freebsd-ports@freebsd.org> Subject: Re: aarch64 host based sysutils/u-boot-{pine64, rock64, rpi[34]} builds fail for: "aarch64-none-elf-gcc: fatal error: -fuse-linker-plugin, but liblto_plugin.so not found" Message-ID: <1D414E35-6785-4D15-A798-DFB34C2ACC34@yahoo.com> In-Reply-To: <7CD48F1B-7405-454A-BEFE-3B17D321D89F@yahoo.com> References: <0085757C-02B1-4CB9-9B67-01EB5D6AA86A@yahoo.com> <E5B9A9B4-B574-4303-BD17-F4366BBBD2DC@yahoo.com> <20200427123246.42e3844f39c349aac81009ff@bidouilliste.com> <20200427204606.69157e78e6eb92f3481e47e3@bidouilliste.com> <38BE4488-2BE4-4B9F-BABA-0324B6A7AE8D@yahoo.com> <90693ED6-E93D-4105-8B63-F77313F77079@yahoo.com> <20200428163906.a5081a0493970fb4556fe08b@bidouilliste.com> <13AAC979-927E-43BA-BF16-64C41546A690@yahoo.com> <7CD48F1B-7405-454A-BEFE-3B17D321D89F@yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
[Found a cause of the poudiere vs. not distinction.] On 2020-Apr-28, at 13:01, Mark Millard <marklmi at yahoo.com> wrote: >=20 > On 2020-Apr-28, at 09:23, Mark Millard <marklmi at yahoo.com> wrote: >=20 >> On 2020-Apr-28, at 07:39, Emmanuel Vadot <manu at bidouilliste.com> = wrote: >>=20 >>> On Mon, 27 Apr 2020 20:14:47 -0700 >>> Mark Millard <marklmi@yahoo.com> wrote: >>>=20 >>>> On 2020-Apr-27, at 17:15, Mark Millard <marklmi at yahoo.com> = wrote: >>>>=20 >>>>> On 2020-Apr-27, at 11:46, Emmanuel Vadot <manu at = bidouilliste.com> wrote: >>>>>=20 >>>>>> On Mon, 27 Apr 2020 12:32:46 +0200 >>>>>> Emmanuel Vadot <manu at bidouilliste.com> wrote: >>>>>>=20 >>>>>>> On Sun, 26 Apr 2020 12:13:46 -0700 >>>>>>> . . . >>>>>>=20 >>>>>> This is solved with r533162. >>>>>> I've tested that sysutils/u-boot-pine64-lts build and boots fine. >>>>>> Let me know if you have still any issues. >>>>>=20 >>>>> The poudriere-devel runs based on updating /usr/ports content >>>>> ended up scheduling 190 package builds, including a couple of >>>>> llvm*'s. Depending on where in the sequence things happen, it >>>>> could be some time before having such full-native results. >>>>>=20 >>>>> In a amd64->aarch64 pouriere-devel based cross-build, with >>>>> nxb-bin in use (a faster build environment in my context), >>>>> I got: >>>>>=20 >>>>> . . . >>>>> gmake[4]: Leaving directory = '/wrkdirs/usr/ports/devel/aarch64-none-elf-gcc/work/.build/aarch64-none-el= f/ilp32/libgcc' >>>>> gmake[3]: Leaving directory = '/wrkdirs/usr/ports/devel/aarch64-none-elf-gcc/work/.build/aarch64-none-el= f/libgcc' >>>>> gmake[2]: Leaving directory = '/wrkdirs/usr/ports/devel/aarch64-none-elf-gcc/work/.build/aarch64-none-el= f/libgcc' >>>>> gmake[1]: Leaving directory = '/wrkdirs/usr/ports/devel/aarch64-none-elf-gcc/work/.build' >>>>> =3D=3D=3D=3D> Compressing man pages (compress-man) >>>>> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= >>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= <phase: package >=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>> =3D=3D=3D> Building package for aarch64-none-elf-gcc-8.4.0_1 >>>>> pkg-static: Unable to access file = /wrkdirs/usr/ports/devel/aarch64-none-elf-gcc/work/stage/usr/local/lib/gcc= /aarch64-none-elf/8.4.0/plugin/gtype.state:No such file or directory >>>>> pkg-static: Unable to access file = /wrkdirs/usr/ports/devel/aarch64-none-elf-gcc/work/stage/usr/local/lib/gcc= /aarch64-none-elf/8.4.0/plugin/include/ada/gcc-interface/ada-tree.def:No = such file or direct >>>>> ory >>>>> pkg-static: Unable to access file = /wrkdirs/usr/ports/devel/aarch64-none-elf-gcc/work/stage/usr/local/lib/gcc= /aarch64-none-elf/8.4.0/plugin/include/addresses.h:No such file or = directory >>>>> pkg-static: Unable to access file = /wrkdirs/usr/ports/devel/aarch64-none-elf-gcc/work/stage/usr/local/lib/gcc= /aarch64-none-elf/8.4.0/plugin/include/alias.h:No such file or directory >>>>> . . . (long list) . . . >>>>>=20 >>>>>=20 >>>>> That leads to: >>>>>=20 >>>>> [00:29:06] [04] [00:10:01] Saved devel/aarch64-none-elf-gcc | = aarch64-none-elf-gcc-8.4.0_1 wrkdir to: = /usr/local/poudriere/data/wrkdirs/FBSDFSSDjailCortexA53-default/default/aa= rch64-none-elf-gcc-8.4.0_1.tar >>>>> [00:29:10] [04] [00:10:05] Finished devel/aarch64-none-elf-gcc | = aarch64-none-elf-gcc-8.4.0_1: Failed: package >>>>> [00:29:12] [04] [00:10:07] Skipping sysutils/atf-rk3328 | = atf-rk3328-v2.3: Dependent port devel/aarch64-none-elf-gcc | = aarch64-none-elf-gcc-8.4.0_1 failed >>>>> [00:29:12] [04] [00:10:07] Skipping sysutils/atf-sun50i_a64 | = atf-sun50i_a64-v2.3: Dependent port devel/aarch64-none-elf-gcc | = aarch64-none-elf-gcc-8.4.0_1 failed >>>>> [00:29:12] [04] [00:10:07] Skipping sysutils/u-boot-pine64 | = u-boot-pine64-2020.04: Dependent port devel/aarch64-none-elf-gcc | = aarch64-none-elf-gcc-8.4.0_1 failed >>>>> [00:29:12] [04] [00:10:07] Skipping sysutils/u-boot-rock64 | = u-boot-rock64-2020.04: Dependent port devel/aarch64-none-elf-gcc | = aarch64-none-elf-gcc-8.4.0_1 failed >>>>> [00:29:12] [04] [00:10:07] Skipping sysutils/u-boot-rpi3 | = u-boot-rpi3-2020.04: Dependent port devel/aarch64-none-elf-gcc | = aarch64-none-elf-gcc-8.4.0_1 failed >>>>> [00:29:12] [04] [00:10:07] Skipping sysutils/u-boot-rpi4 | = u-boot-rpi4-2020.04: Dependent port devel/aarch64-none-elf-gcc | = aarch64-none-elf-gcc-8.4.0_1 failed >>>>>=20 >>>>>=20 >>>>>=20 >>>>> I'm guessing that the full-native builds will do similarly. >>>>> But we will eventually see. >>>>=20 >>>> One of the aarch64 environments finally got there: >>>>=20 >>>> [07:40:23] [02] [00:23:04] Saved devel/aarch64-none-elf-gcc | = aarch64-none-elf-gcc-8.4.0_1 wrkdir to: = /usr/local/poudriere/data/wrkdirs/FBSDFSSDjailCortexA57-default/default/aa= rch64-none-elf-gcc-8.4.0_1.tar >>>> [07:40:42] [02] [00:23:23] Finished devel/aarch64-none-elf-gcc | = aarch64-none-elf-gcc-8.4.0_1: Failed: package >>>> [07:40:55] [02] [00:23:36] Skipping sysutils/u-boot-pine64 | = u-boot-pine64-2020.04: Dependent port devel/aarch64-none-elf-gcc | = aarch64-none-elf-gcc-8.4.0_1 failed >>>> [07:40:55] [02] [00:23:36] Skipping sysutils/u-boot-rock64 | = u-boot-rock64-2020.04: Dependent port devel/aarch64-none-elf-gcc | = aarch64-none-elf-gcc-8.4.0_1 failed >>>> [07:40:55] [02] [00:23:36] Skipping sysutils/u-boot-rpi3 | = u-boot-rpi3-2020.04: Dependent port devel/aarch64-none-elf-gcc | = aarch64-none-elf-gcc-8.4.0_1 failed >>>> [07:40:55] [02] [00:23:36] Skipping sysutils/u-boot-rpi4 | = u-boot-rpi4-2020.04: Dependent port devel/aarch64-none-elf-gcc | = aarch64-none-elf-gcc-8.4.0_1 failed >>>>=20 >>>> It failed for the same sorts of reasons as the cross build: >>>>=20 >>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= <phase: package >=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>> =3D=3D=3D> Building package for aarch64-none-elf-gcc-8.4.0_1 >>>> pkg-static: Unable to access file = /wrkdirs/usr/ports/devel/aarch64-none-elf-gcc/work/stage/usr/local/lib/gcc= /aarch64-none-elf/8.4.0/plugin/gtype.state:No such file or directory >>>> pkg-static: Unable to access file = /wrkdirs/usr/ports/devel/aarch64-none-elf-gcc/work/stage/usr/local/lib/gcc= /aarch64-none-elf/8.4.0/plugin/include/ada/gcc-interface/ada-tree.def:No = such file or direct >>>> ory >>>> . . . >>>>=20 >>>=20 >>> I can reproduce that with poudriere too. >>> For some reason this doesn't happened when doing a make package ... >>=20 >> It also happened for the poudriere-based build of >> devel/arm-none-eabi-gcc : >>=20 >> [00:26:15] [07] [00:13:23] Saving devel/arm-none-eabi-gcc | = arm-none-eabi-gcc-8.4.0_1 wrkdir >> [00:26:23] [07] [00:13:31] Saved devel/arm-none-eabi-gcc | = arm-none-eabi-gcc-8.4.0_1 wrkdir to: = /usr/local/poudriere/data/wrkdirs/FBSDFSSDjailCortexA53-default/default/ar= m-none-eabi-gcc-8.4.0_1.tar >> [00:26:28] [07] [00:13:36] Finished devel/arm-none-eabi-gcc | = arm-none-eabi-gcc-8.4.0_1: Failed: package >> [00:26:30] [07] [00:13:38] Skipping sysutils/u-boot-orangepi-plus-2e = | u-boot-orangepi-plus-2e-2020.04: Dependent port = devel/arm-none-eabi-gcc | arm-none-eabi-gcc-8.4.0_1 failed >> [00:26:30] [07] [00:13:38] Skipping sysutils/u-boot-rpi2 | = u-boot-rpi2-2020.04: Dependent port devel/arm-none-eabi-gcc | = arm-none-eabi-gcc-8.4.0_1 failed >> [00:26:30] [07] [00:13:38] Skipping sysutils/u-boot-sinovoip-bpi-m3 | = u-boot-sinovoip-bpi-m3-2020.04: Dependent port devel/arm-none-eabi-gcc | = arm-none-eabi-gcc-8.4.0_1 failed >>=20 >> because of: >>=20 >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<p= hase: package >=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> =3D=3D=3D> Building package for arm-none-eabi-gcc-8.4.0_1 >> pkg-static: Unable to access file = /wrkdirs/usr/ports/devel/arm-none-eabi-gcc/work/stage/usr/local/lib/gcc/ar= m-none-eabi/8.4.0/plugin/gtype.state:No such file or directory >> pkg-static: Unable to access file = /wrkdirs/usr/ports/devel/arm-none-eabi-gcc/work/stage/usr/local/lib/gcc/ar= m-none-eabi/8.4.0/plugin/include/ada/gcc-interface/ada-tree.def:No such = file or directory >> pkg-static: Unable to access file = /wrkdirs/usr/ports/devel/arm-none-eabi-gcc/work/stage/usr/local/lib/gcc/ar= m-none-eabi/8.4.0/plugin/include/addresses.h:No such file or directory >> pkg-static: Unable to access file = /wrkdirs/usr/ports/devel/arm-none-eabi-gcc/work/stage/usr/local/lib/gcc/ar= m-none-eabi/8.4.0/plugin/include/alias.h:No such file or directory >> pkg-static: Unable to access file = /wrkdirs/usr/ports/devel/arm-none-eabi-gcc/work/stage/usr/local/lib/gcc/ar= m-none-eabi/8.4.0/plugin/include/all-tree.def:No such file or directory >> . . . >>=20 >=20 > Some other differences between a poudriere based build > and a portmaster based build for the aarch64 case follow. > The paths with /mnt/prefixes are to the portmaster based > build: >=20 > # diff -r /wrkdirs/usr/ports/devel/aarch64-none-elf-gcc/ = /mnt/wrkdirs/usr/ports/devel/aarch64-none-elf-gcc/ | grep -i = "enable_plugin" > < enable_plugin =3D no >> enable_plugin =3D yes > < /* #undef ENABLE_PLUGIN */ >> #define ENABLE_PLUGIN 1 > < enable_plugin=3D'no' >> enable_plugin=3D'yes' >> #define ENABLE_PLUGIN 1 > < S["enable_plugin"]=3D"no" >> S["enable_plugin"]=3D"yes" >> D["ENABLE_PLUGIN"]=3D" 1" >=20 > While looking for differences that might contribute to the > "no"s above, I ran into something possibly unrelated but > important in the future . . . >=20 > One thing is that I have a WITHOUT_BINUTILS=3D system build as > part of testing that such will work when if fully goes away. > I see differences in part based on that: >=20 > 1383c1382,1383 > < configure:8340: result: no > --- >> configure:8326: found /usr/local/bin/as >> configure:8337: result: as > 1407c1407,1408 > < configure:9740: result: no > --- >> configure:9726: found /usr/local/bin/objdump >> configure:9737: result: objdump > . . . > 2369a2371 >> ac_cv_prog_AS=3Das > 2377a2380 >> ac_cv_prog_OBJDUMP=3Dobjdump >=20 > (No evidence so far that such contributes to lack of > plugins being enabled. It is just a difference that > I ran into while looking.) >=20 > The devel/*-none-*-gcc examples do not cause > /usr/local/bin/ instances of as or objdump to > exist in poudriere-devel contexts, even when > the system does not have the commands of itself. > At some point this likely will need to change. >=20 >=20 >=20 > As I have time I'll look around more at the build > materials and see if I find an explanation for > plugins not being enabled under poudriere-devel > based builds. Turns out that objdump is important and makes the distinction in my context . . . work/gcc-8.4.0/config/gcc-plugin.m4 has: . . . AC_DEFUN([GCC_ENABLE_PLUGINS], [# Check for plugin support AC_ARG_ENABLE(plugin, [AS_HELP_STRING([--enable-plugin], [enable plugin support])], enable_plugin=3D$enableval, enable_plugin=3Dyes; default_plugin=3Dyes) pluginlibs=3D plugin_check=3Dyes case "${host}" in . . . *) if test x$build =3D x$host; then export_sym_check=3D"objdump${exeext} -T" elif test x$host =3D x$target; then export_sym_check=3D"$gcc_cv_objdump -T" else export_sym_check=3D fi ;; esac . . . if test x"$enable_plugin" =3D x"yes" -a x"$plugin_check" =3D x"yes"; = then AC_MSG_CHECKING([for exported symbols]) if test "x$export_sym_check" !=3D x; then echo "int main() {return 0;} int foobar() {return 0;}" > = conftest.c ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest$ac_exeext > = /dev/null 2>&1 if $export_sym_check conftest$ac_exeext | grep foobar > = /dev/null; then : # No need to use a flag AC_MSG_RESULT([yes]) else AC_MSG_RESULT([yes]) AC_MSG_CHECKING([for -rdynamic]) ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o = conftest$ac_exeext > /dev/null 2>&1 if $export_sym_check conftest$ac_exeext | grep foobar > = /dev/null; then plugin_rdynamic=3Dyes pluginlibs=3D"-rdynamic" else plugin_rdynamic=3Dno enable_plugin=3Dno fi AC_MSG_RESULT([$plugin_rdynamic]) fi else AC_MSG_RESULT([unable to check]) fi . . . But (both the poudriere-devel based build and the portmaster build show such so I picked to show just one): = /wrkdirs/usr/ports/devel/aarch64-none-elf-gcc/work/.build/gcc/config.log:g= cc_cv_objdump=3D/usr/local/aarch64-none-elf/bin/objdump = /wrkdirs/usr/ports/devel/aarch64-none-elf-gcc/work/.build/gcc/config.log:g= cc_cv_objdump=3D'/usr/local/aarch64-none-elf/bin/objdump' = /wrkdirs/usr/ports/devel/aarch64-none-elf-gcc/work/.build/gcc/config.cache= :gcc_cv_objdump=3D${gcc_cv_objdump=3D/usr/local/aarch64-none-elf/bin/objdu= mp} Under poudiere-devel there is no /usr/local/aarch64-none-elf/bin/objdump = path. Under make/portmaster there may be an old = /usr/local/aarch64-none-elf/bin/objdump path. In my environments (showing one example context): # ls -ldT /usr/local/aarch64-none-elf/bin/objdump -r-xr-xr-x 2 root wheel 8593272 Jan 30 01:05:50 2020 = /usr/local/aarch64-none-elf/bin/objdump So in portmaster (or make) the old = /usr/local/aarch64-none-elf/bin/objdump is used but in poudriere the path used fails and that failure is not handled distinctly as "objdump tool missing". It looks like devel/aarch64-none-elf-gcc/Makefile would need changes for WITHOUT_BINUTILS=3D contexts in order to make sure that an objdump exists via a known/used path, including in poudriere based builds. =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1D414E35-6785-4D15-A798-DFB34C2ACC34>