From: Jose E. Marchesi Date: Wed, 22 Nov 2023 14:32:17 +0000 (+0100) Subject: libgcc: mark __hardcfr_check_fail as always_inline X-Git-Tag: basepoints/gcc-15~4349 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2eb833534c7e715c276658ecb810715e8718e5c3;p=thirdparty%2Fgcc.git libgcc: mark __hardcfr_check_fail as always_inline The function __hardcfr_check_fail in hardcfr.c is internal and static inline. It receives many arguments, which require more than five registers to be passed in bpf-none-unknown targets. BPF is limited to that number of registers to pass arguments, and therefore libgcc fails to build in that target. This patch marks the function with the always_inline attribute, fixing the bpf build. Tested in bpf-unknown-none target and x86_64-linux-gnu host. libgcc/ChangeLog: * hardcfr.c (__hardcfr_check_fail): Mark as always_inline. --- diff --git a/libgcc/hardcfr.c b/libgcc/hardcfr.c index 25ff06742cb4..376a36202c84 100644 --- a/libgcc/hardcfr.c +++ b/libgcc/hardcfr.c @@ -206,6 +206,10 @@ __hardcfr_debug_cfg (size_t const blocks, enabled, it also forces __hardcfr_debug_cfg (above) to be compiled into an out-of-line function, that could be called from a debugger. */ + +#ifdef __BPF__ +__attribute__((__always_inline__)) +#endif static inline void __hardcfr_check_fail (size_t const blocks ATTRIBUTE_UNUSED, vword const *const visited ATTRIBUTE_UNUSED,