coreboot/payloads/libpayload/include
Julius Werner 37513297d3 libpayload: Use Kconfig for architecture memcpy, not weak symbols
Our mechanism to override the default (pure C) memory function
implementations (memset, memcpy, memmove) with architecture-specific
optimized assembly versions doesn't actually work: it turns out that
weak functions don't work as you'd naively expect when you pack them
together with a strong definition from a different object into a static
library. When a linker tries to resolve a symbol from a static library,
it just picks the first one it finds, even if it is weak. It doesn't
evaluate all objects in the library to see if there are other strong
definitions.

To fix this, this patch gets rid of the weak symbols and uses Kconfigs
instead. It adds an optimized memmove() implementation for x86 because
that makes things easier (then all architectures either override all
three functions or none of them). Also remove memcmp() from the
functions that can be overridden for now because nobody ever needed that
anyway.

Change-Id: Iedf9898247f1999e56fde3233fad8b7cb36b1269
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/87766
Reviewed-by: Yu-Ping Wu <yupingso@google.com>
Reviewed-by: Subrata Banik <subratabanik@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2025-05-22 19:27:24 +00:00
..
arm/arch payloads/libpayload: Add fast data types to types.h 2025-03-10 15:21:44 +00:00
arm64/arch payloads/libpayload: Add fast data types to types.h 2025-03-10 15:21:44 +00:00
arpa
mock/arch payloads/libpayload: Add fast data types to types.h 2025-03-10 15:21:44 +00:00
pci
storage
sys
udc
usb
x86/arch payloads/libpayload: Add fast data types to types.h 2025-03-10 15:21:44 +00:00
archive.h
assert.h libpayload: Use __func__ instead of old __FUNCTION__ 2023-02-17 16:19:44 +00:00
boot_device.h libpayload: Add boot_device_read() function 2021-12-10 17:56:34 +00:00
cbfs.h libpayload: Remove legacy CBFS API 2024-02-22 21:18:39 +00:00
cbfs_glue.h cbfs/vboot: Adapt to new vb2_digest API 2022-09-02 23:51:29 +00:00
cbgfx.h
coreboot_tables.h libpayload: Switch to commonlib ipchksum() algorithm 2024-02-02 22:48:48 +00:00
ctype.h
delay.h libpayload: Outsource delay function into own header 2023-08-24 13:35:02 +00:00
die.h treewide: Move stdlib.h to commonlib 2024-03-15 10:09:43 +00:00
endian.h libpayload/endian: Add read32p/write32p macros and friends 2024-10-15 10:16:40 +00:00
errno.h
exception.h
fmap.h commonlib/bsd: Remove cb_err_t 2022-03-09 02:18:21 +00:00
fpmath.h
gdb.h
getopt.h
inttypes.h
kconfig.h
keycodes.h
libpayload.h libpayload: Include commonlib/helpers.h in libpayload.h for GPL builds 2024-03-25 08:23:35 +00:00
limits.h includes: Define CHAR_BIT in limits.h 2021-06-18 04:38:33 +00:00
lp_vboot.h libpayload: Add vboot and reboot utility functions 2023-09-18 15:42:31 +00:00
lz4.h
lzma.h
malloc.h
multiboot_tables.h
panel.h
pci.h libpayload/pci: Add support for bus mapping 2022-05-20 02:51:33 +00:00
queue.h
stdarg.h libpayload/include/stdarg.h: Add va_copy builtin 2023-08-17 16:46:07 +00:00
stdbool.h
stddef.h libpayload: Outsource delay function into own header 2023-08-24 13:35:02 +00:00
stdint.h libpayload: Add missing SIZE_MAX define 2024-08-19 23:20:00 +00:00
stdio.h
stdlib.h treewide: Move stdlib.h to commonlib 2024-03-15 10:09:43 +00:00
string.h libpayload: Use Kconfig for architecture memcpy, not weak symbols 2025-05-22 19:27:24 +00:00
strings.h libpayload: strings.h: Use builtin __ffs instead of included one 2023-03-07 17:11:05 +00:00
sysinfo.h Add allocation of a buffer for pvmfw within cbmem 2025-04-05 00:24:26 +00:00
term.h
time.h
unistd.h
video_console.h
wchar.h includes: Provide wchar.h with wchar_t and wint_t 2021-06-18 04:38:16 +00:00