mirror of
https://git.yoctoproject.org/git/poky
synced 2026-01-01 13:58:04 +00:00
perl: Disable builtin memcpy & string inlines with gcc/x86-64-v3
PERL built with GCC 15 and -march=x86-64-v3 fails several op/pack.t cases due to aggressive lowering of __builtin_memcpy and inlined/fortified string ops. In pp_pack, some in-place copies can overlap, treating memcpy as non-overlapping yields corrupted bytes (zeros or wrong prefixes). The issue does not reproduce with -march=core2. When using x86-64-v3 memcpy gets emitted very aggressively (vectorized / reordered) and assumes no overlap. The flags force calls through libc (overlap-safe behavior), restoring deterministic pack/unpack and fixing the test failures. Inline functions could be faster in execution but correctness is more important Fixes [YOCTO #15950] (From OE-Core rev: 6d557b16f1e45e616c6eb208e4d7a2f2839a2e4f) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
f9e0afedea
commit
36c6209b32
|
|
@ -54,6 +54,9 @@ CFLAGS += "-D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
|
|||
# https://github.com/llvm/llvm-project/issues/152241
|
||||
CFLAGS:append:toolchain-clang = " -fno-strict-aliasing"
|
||||
|
||||
# Needed with -march=x86-64-v3
|
||||
CFLAGS:append:toolchain-gcc:class-target:x86-64 = " -fno-builtin-memcpy -D__NO_STRING_INLINES -U_FORTIFY_SOURCE"
|
||||
|
||||
do_configure:prepend() {
|
||||
rm -rf ${B}
|
||||
cp -rfp ${S} ${B}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user