Re: v5.17-rc3 compile failure on aarch64

From: Qu Wenruo
Date: Thu Feb 17 2022 - 06:59:38 EST




On 2022/2/17 19:50, Mark Rutland wrote:
On Thu, Feb 17, 2022 at 04:37:49PM +0800, Qu Wenruo wrote:
Hi,

Hi,

[adding LAKML so other arm/arm64 folk can chime in]

Recently I found v5.17-rc3 kernel failed to compile on my aarch64 setup,
it failed with the following error messages:

AR lib/zstd/built-in.a
LD [M] lib/zstd/zstd_compress.o
ld: __patchable_function_entries has both ordered
[`__patchable_function_entries' in lib/zstd/common/entropy_common.o] and
unordered [`__patchable_function_entries' in
lib/zstd/common/error_private.o] sections
ld: final link failed: bad value
make[2]: *** [scripts/Makefile.build:484: lib/zstd/zstd_compress.o] Error 1
make[1]: *** [scripts/Makefile.build:550: lib/zstd] Error 2
make: *** [Makefile:1831: lib] Error 2
make: *** Waiting for unfinished jobs....

Uh-oh; that doesn't look good.

In case this is configuration-dependent, could you share your .config?

Sure, attached.


But the same code base compiles fine inside my x86_64 VM.

The aarch64 environment is an VM running on RockPro64 or RPI CM4.

With a little older gcc (v10.2.0) and bintuils (2.35).

Is this a custom-built toolchain, or one shipped by a distribution?

Shipped by distro (ArchlinuxARM), native, no cross chain.

And it's mostly upstream, or very lightly backported.


If possible, can you see if you can reproduce this with one of the
kernel.org cross toolchains:

https://mirrors.edge.kernel.org/pub/tools/crosstool/

... because if you can, that will be much easier for someone else to
reproduce and analyse.

The closest builds are 9.3.0 and 10.3.0, for both arm64 and x86_64.

Sorry, not cross tool chain but native toolchain.


FWIW, I had a go building v5.17-rc3 defconfig with ftrace and zstd bits
eanbled with both GCC 9.3.0 and GCC 10.3.0, and I could not reproduce
the problem.

After the incident, I tried the following things, and got it solved:

- Upgrade to gcc 11.1.0 and binutils 2.36.1
The same kernel base, no "make clean"

And got the same error.

- "make clean" for the kernel and recompile
Now the failure is gone.

Thus I guess it's mostly some old .o is being re-used...

Sorry for the inconvenience, I should just re-compile (even it's super
time-consuming) before reporting...

Thanks,
Qu


Thanks,
Mark.

While for my x86_64 VM it has newer gcc (11.1.0) and binutiles (2.36.1)

I'm super happy to upgrade my tool chain for my aarch64 VM, but I'm a
little concerned if there is something worthy fixed.

Thanks,
Qu

Attachment: config.gz
Description: application/gzip