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