Some libc's like musl libc don't provide execinfo.h since it's not part of POSIX. In order to fix compilation on musl, only include execinfo.h if available (HAVE_BACKTRACE_SUPPORT)
This was discovered with c104c16073b7 ("Kunit to check the longest symbol length") which starts to include linux/kallsyms.h with Alpine Linux' configs.
Signed-off-by: Achill Gilgenast fossdd@pwned.life Cc: stable@vger.kernel.org --- tools/include/linux/kallsyms.h | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/tools/include/linux/kallsyms.h b/tools/include/linux/kallsyms.h index 5a37ccbec54f..f61a01dd7eb7 100644 --- a/tools/include/linux/kallsyms.h +++ b/tools/include/linux/kallsyms.h @@ -18,6 +18,7 @@ static inline const char *kallsyms_lookup(unsigned long addr, return NULL; }
+#ifdef HAVE_BACKTRACE_SUPPORT #include <execinfo.h> #include <stdlib.h> static inline void print_ip_sym(const char *loglvl, unsigned long ip) @@ -30,5 +31,8 @@ static inline void print_ip_sym(const char *loglvl, unsigned long ip)
free(name); } +#else +static inline void print_ip_sym(const char *loglvl, unsigned long ip) {} +#endif
#endif
On Sun, 22 Jun 2025 03:45:49 +0200 Achill Gilgenast fossdd@pwned.life wrote:
Some libc's like musl libc don't provide execinfo.h since it's not part of POSIX. In order to fix compilation on musl, only include execinfo.h if available (HAVE_BACKTRACE_SUPPORT)
This was discovered with c104c16073b7 ("Kunit to check the longest symbol length") which starts to include linux/kallsyms.h with Alpine Linux' configs.
...
--- a/tools/include/linux/kallsyms.h +++ b/tools/include/linux/kallsyms.h @@ -18,6 +18,7 @@ static inline const char *kallsyms_lookup(unsigned long addr, return NULL; } +#ifdef HAVE_BACKTRACE_SUPPORT #include <execinfo.h> #include <stdlib.h> static inline void print_ip_sym(const char *loglvl, unsigned long ip)
I'm not seeing anything in there which needs execinfo.h. Can we simply remove the inclusion?
On Sun Jun 22, 2025 at 8:36 PM CEST, Andrew Morton wrote:
On Sun, 22 Jun 2025 03:45:49 +0200 Achill Gilgenast fossdd@pwned.life wrote:
Some libc's like musl libc don't provide execinfo.h since it's not part of POSIX. In order to fix compilation on musl, only include execinfo.h if available (HAVE_BACKTRACE_SUPPORT)
This was discovered with c104c16073b7 ("Kunit to check the longest symbol length") which starts to include linux/kallsyms.h with Alpine Linux' configs.
...
--- a/tools/include/linux/kallsyms.h +++ b/tools/include/linux/kallsyms.h @@ -18,6 +18,7 @@ static inline const char *kallsyms_lookup(unsigned long addr, return NULL; } +#ifdef HAVE_BACKTRACE_SUPPORT #include <execinfo.h> #include <stdlib.h> static inline void print_ip_sym(const char *loglvl, unsigned long ip)
I'm not seeing anything in there which needs execinfo.h. Can we simply remove the inclusion?
No, since backtrace_symbols is provided by execinfo.h.
On Mon Jun 23, 2025 at 1:53 PM CEST, Achill Gilgenast wrote:
On Sun Jun 22, 2025 at 8:36 PM CEST, Andrew Morton wrote:
On Sun, 22 Jun 2025 03:45:49 +0200 Achill Gilgenast fossdd@pwned.life wrote:
Some libc's like musl libc don't provide execinfo.h since it's not part of POSIX. In order to fix compilation on musl, only include execinfo.h if available (HAVE_BACKTRACE_SUPPORT)
This was discovered with c104c16073b7 ("Kunit to check the longest symbol length") which starts to include linux/kallsyms.h with Alpine Linux' configs.
...
--- a/tools/include/linux/kallsyms.h +++ b/tools/include/linux/kallsyms.h @@ -18,6 +18,7 @@ static inline const char *kallsyms_lookup(unsigned long addr, return NULL; } +#ifdef HAVE_BACKTRACE_SUPPORT #include <execinfo.h> #include <stdlib.h> static inline void print_ip_sym(const char *loglvl, unsigned long ip)
I'm not seeing anything in there which needs execinfo.h. Can we simply remove the inclusion?
No, since backtrace_symbols is provided by execinfo.h.
Is there some status on it? I saw you picked it in mm-hotfixes-unstable, but it got dropped out again.
Is there something I can do to push it?
Thanks!
On Tue, Jul 01 2025, Achill Gilgenast wrote:
On Mon Jun 23, 2025 at 1:53 PM CEST, Achill Gilgenast wrote:
On Sun Jun 22, 2025 at 8:36 PM CEST, Andrew Morton wrote:
On Sun, 22 Jun 2025 03:45:49 +0200 Achill Gilgenast fossdd@pwned.life wrote:
Some libc's like musl libc don't provide execinfo.h since it's not part of POSIX. In order to fix compilation on musl, only include execinfo.h if available (HAVE_BACKTRACE_SUPPORT)
This was discovered with c104c16073b7 ("Kunit to check the longest symbol length") which starts to include linux/kallsyms.h with Alpine Linux' configs.
...
--- a/tools/include/linux/kallsyms.h +++ b/tools/include/linux/kallsyms.h @@ -18,6 +18,7 @@ static inline const char *kallsyms_lookup(unsigned long addr, return NULL; } +#ifdef HAVE_BACKTRACE_SUPPORT #include <execinfo.h> #include <stdlib.h> static inline void print_ip_sym(const char *loglvl, unsigned long ip)
I'm not seeing anything in there which needs execinfo.h. Can we simply remove the inclusion?
No, since backtrace_symbols is provided by execinfo.h.
Is there some status on it? I saw you picked it in mm-hotfixes-unstable, but it got dropped out again.
Is there something I can do to push it?
FWIW I can confirm this is indeed a regression. And specially annoying because it has been backported into stable kernels (even if having kunit tests backported sounds odd to me).
It would be great to have this fixed, or reverted.
Cheers,
On Tue, 01 Jul 2025 17:19:51 +0100 Luis Henriques luis@igalia.com wrote:
No, since backtrace_symbols is provided by execinfo.h.
Is there some status on it? I saw you picked it in mm-hotfixes-unstable, but it got dropped out again.
Is there something I can do to push it?
FWIW I can confirm this is indeed a regression. And specially annoying because it has been backported into stable kernels (even if having kunit tests backported sounds odd to me).
It would be great to have this fixed, or reverted.
OK, thanks for the reminder, I restored this.
linux-stable-mirror@lists.linaro.org