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"

Mark Millard marklmi at yahoo.com
Wed Apr 29 20:17:03 UTC 2020



On 2020-Apr-29, at 10:22, Emmanuel Vadot <manu at bidouilliste.com> wrote:

> On Wed, 29 Apr 2020 12:50:36 +0200
> Emmanuel Vadot <manu at bidouilliste.com> wrote:
> 
>> On Wed, 29 Apr 2020 01:36:01 -0700
>> Mark Millard <marklmi at yahoo.com> wrote:
>> 
>>> [Build successes for building via poudriere-devel.
>>> Message history removed.]
>>> 
>>> Based on (some whitespace details might not survive):
>>> 
>>> # svnlite diff /usr/ports/devel/aarch64-none-elf-gcc/
>>> Index: /usr/ports/devel/aarch64-none-elf-gcc/Makefile
>>> ===================================================================
>>> --- /usr/ports/devel/aarch64-none-elf-gcc/Makefile	(revision 533162)
>>> +++ /usr/ports/devel/aarch64-none-elf-gcc/Makefile	(working copy)
>>> @@ -19,7 +19,8 @@
>>> LIB_DEPENDS=	libgmp.so:math/gmp \
>>> 		libmpfr.so:math/mpfr \
>>> 		libmpc.so:math/mpc
>>> -BUILD_DEPENDS=	${GCC_TARGET}-as:devel/binutils@${PKGNAMEPREFIX:C/-$//:C/-/_/g}
>>> +BUILD_DEPENDS=	${GCC_TARGET}-as:devel/binutils@${PKGNAMEPREFIX:C/-$//:C/-/_/g} \
>>> +		objdump:devel/binutils
>> 
>> That brings binutils-native as a build depend, which works on aarch64
>> but I don't think it will for cross building.
>> But yes the solution is something like that, the "missing" objdump
>> seems to make gcc not building the plugins.
>> 
>>> RUN_DEPENDS=	${GCC_TARGET}-as:devel/binutils@${PKGNAMEPREFIX:C/-$//:C/-/_/g}
>>> 
>>> USES=	gmake iconv libtool tar:xz makeinfo compiler:c++11-lang
>>> 
>>> 
>>> Things then finish (extracted messages from an amd64->aarch64 poudriere-based
>>> nxb-bin involved cross-build):
>>> 
>>> [00:14:17] [04] [00:13:40] Finished devel/aarch64-none-elf-gcc | aarch64-none-elf-gcc-8.4.0_1: Success
>>> [00:15:16] [02] [00:00:57] Finished sysutils/atf-sun50i_a64 | atf-sun50i_a64-v2.3: Success
>>> [00:15:19] [01] [00:01:00] Finished sysutils/atf-rk3328 | atf-rk3328-v2.3: Success
>>> [00:16:10] [05] [00:15:33] Finished devel/arm-none-eabi-gcc | arm-none-eabi-gcc-8.4.0_1: Success
>>> [00:21:34] [04] [00:07:15] Finished sysutils/u-boot-rpi4 | u-boot-rpi4-2020.04: Success
>>> [00:21:56] [03] [00:07:37] Finished sysutils/u-boot-rpi3 | u-boot-rpi3-2020.04: Success
>>> [00:30:31] [06] [00:14:19] Finished sysutils/u-boot-rpi2 | u-boot-rpi2-2020.04: Success
>>> [00:35:15] [07] [00:19:03] Finished sysutils/u-boot-sinovoip-bpi-m3 | u-boot-sinovoip-bpi-m3-2020.04: Success
>>> [00:35:34] [01] [00:20:15] Finished sysutils/u-boot-rock64 | u-boot-rock64-2020.04: Success
>>> [00:35:41] [05] [00:19:29] Finished sysutils/u-boot-orangepi-plus-2e | u-boot-orangepi-plus-2e-2020.04: Success
>>> 
>>> (u-boot-pine64 still in process due to MAKE_JOBS_UNSAFE=yes use.)
>>> 
>>> aarch64 native builds also finished (not shown).
>>> 
>>> amd64 poudriere-based builds (non-qemu) also finished:
>>> 
>>> [00:03:22] [01] [00:03:08] Finished devel/aarch64-none-elf-gcc | aarch64-none-elf-gcc-8.4.0_1: Success
>>> [00:03:31] [03] [00:00:08] Finished sysutils/atf-sun50i_a64 | atf-sun50i_a64-v2.3: Success
>>> [00:03:31] [01] [00:00:08] Finished sysutils/atf-rk3328 | atf-rk3328-v2.3: Success
>>> [00:03:33] [02] [00:03:19] Finished devel/arm-none-eabi-gcc | arm-none-eabi-gcc-8.4.0_1: Success
>>> [00:04:00] [04] [00:00:37] Finished sysutils/u-boot-rpi3 | u-boot-rpi3-2020.04: Success
>>> [00:04:01] [05] [00:00:38] Finished sysutils/u-boot-rpi4 | u-boot-rpi4-2020.04: Success
>>> [00:04:18] [06] [00:00:44] Finished sysutils/u-boot-rpi2 | u-boot-rpi2-2020.04: Success
>>> [00:04:40] [02] [00:01:06] Finished sysutils/u-boot-orangepi-plus-2e | u-boot-orangepi-plus-2e-2020.04: Success
>>> [00:04:41] [07] [00:01:07] Finished sysutils/u-boot-sinovoip-bpi-m3 | u-boot-sinovoip-bpi-m3-2020.04: Success
>>> [00:04:42] [01] [00:01:10] Finished sysutils/u-boot-rock64 | u-boot-rock64-2020.04: Success
>>> [00:06:46] [03] [00:03:15] Finished sysutils/u-boot-pine64 | u-boot-pine64-2020.04: Success
>>> 
>>> 
>>> 
>>> FYI:
>>> 
>>> # svnlite diff /usr/ports/sysutils/u-boot-pine64/
>>> Index: /usr/ports/sysutils/u-boot-pine64/Makefile
>>> ===================================================================
>>> --- /usr/ports/sysutils/u-boot-pine64/Makefile	(revision 533162)
>>> +++ /usr/ports/sysutils/u-boot-pine64/Makefile	(working copy)
>>> @@ -6,4 +6,6 @@
>>> BOARD_CONFIG=	pine64_plus_defconfig
>>> FAMILY=		allwinner64
>>> 
>>> +MAKE_JOBS_UNSAFE=yes
>>> +
>>> .include "${MASTERDIR}/Makefile"
>>> 
>>> based on historical build-race problems specific to pine64's
>>> u-boot build. But it makes the qemu-based build take a very
>>> long time.
>>> 
>>> 
>>> ===
>>> Mark Millard
>>> marklmi at yahoo.com
>>> ( dsl-only.net went
>>> away in early 2018-Mar)
>>> 
>> 
>> 
>> -- 
>> Emmanuel Vadot <manu at bidouilliste.com> <manu at freebsd.org>
>> _______________________________________________
>> freebsd-arm at freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/freebsd-arm
>> To unsubscribe, send any mail to "freebsd-arm-unsubscribe at freebsd.org"
> 
> Issue should be fixed in r533381.
> It works for me on aarch64 and on amd64.
> 

(The aarch64 hardware contexts are busy so I tested
via amd64 native poudriere and amd64->aarch64 nxb-bin
poudriere for now.)

It worked for devel/aarch64-non-elf-gcc on my aarch64
targeting tests but . . .

This fix failed for amd64->aarch64 nxb-bin based poudriere
build of arm-none-eabi-gcc :

[00:09:45] [02] [00:09:40] Finished devel/arm-none-eabi-gcc | arm-none-eabi-gcc-8.4.0_1: Failed: package
. . .
[00:11:15] Failed ports: devel/arm-none-eabi-gcc:package

The objdump failed for being the wrong kind of executable:

Links are now set up to build a cross-compiler
 from aarch64-unknown-freebsd13.0 to arm-none-eabi.
checking for exported symbols... objdump: conftest: file format not recognized
yes
checking for -rdynamic... objdump: conftest: file format not recognized
no

This again lead to enable_plugins=no and the package stage noticing
the missing files:

===>  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/arm-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/arm-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/arm-none-eabi/8.4.0/plugin/include/addresses.h:No such file or directory
. . .


By contrast the patch I tried earlier:

-BUILD_DEPENDS=	${GCC_TARGET}-as:devel/binutils@${PKGNAMEPREFIX:C/-$//:C/-/_/g}
+BUILD_DEPENDS=	${GCC_TARGET}-as:devel/binutils@${PKGNAMEPREFIX:C/-$//:C/-/_/g} \
+		objdump:devel/binutils

worked in all cases that I'm testing.


Note: I do not test amd64->armv7 via nxb-bin based
poudriere cross builds because qemu has its own
failures that hang up builds when I try that. But
I expect that armv7 building aarch64-non-elf-gcc
would have the same problem aarch64 has building
arm-none-eabi-gcc.

===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)



More information about the freebsd-ports mailing list