Hi!
I bumped into a build regression when building Alpine Linux kernel 6.12.35 on x86_64:
In file included from ../arch/x86/tools/insn_decoder_test.c:13: ../tools/include/linux/kallsyms.h:21:10: fatal error: execinfo.h: No such file or directory 21 | #include <execinfo.h> | ^~~~~~~~~~~~ compilation terminated.
The 6.12.34 kernel built just fine.
I bisected it to:
commit b8abcba6e4aec53868dfe44f97270fc4dee0df2a (HEAD) Author: Sergio Gonz_lez Collado sergio.collado@gmail.com Date: Sun Mar 2 23:15:18 2025 +0100
Kunit to check the longest symbol length
commit c104c16073b7fdb3e4eae18f66f4009f6b073d6f upstream.
which has this hunk:
diff --git a/arch/x86/tools/insn_decoder_test.c b/arch/x86/tools/insn_decoder_test.c index 472540aeabc2..6c2986d2ad11 100644 --- a/arch/x86/tools/insn_decoder_test.c +++ b/arch/x86/tools/insn_decoder_test.c @@ -10,6 +10,7 @@ #include <assert.h> #include <unistd.h> #include <stdarg.h> +#include <linux/kallsyms.h>
#define unlikely(cond) (cond)
@@ -106,7 +107,7 @@ static void parse_args(int argc, char **argv) } }
-#define BUFSIZE 256 +#define BUFSIZE (256 + KSYM_NAME_LEN)
int main(int argc, char **argv) {
It looks like the linux/kallsyms.h was included to get KSYM_NAME_LEN. Unfortunately it also introduced the include of execinfo.h, which does not exist on musl libc.
This has previously been reported to and tried fixed: https://lore.kernel.org/stable/DB0OSTC6N4TL.2NK75K2CWE9JV@pwned.life/T/#t
Would it be an idea to revert commit b8abcba6e4ae til we have a proper solution for this?
Thanks!
-nc
On Tue, Jul 01, 2025 at 02:10:26PM +0200, Natanael Copa wrote:
Hi!
I bumped into a build regression when building Alpine Linux kernel 6.12.35 on x86_64:
In file included from ../arch/x86/tools/insn_decoder_test.c:13: ../tools/include/linux/kallsyms.h:21:10: fatal error: execinfo.h: No such file or directory 21 | #include <execinfo.h> | ^~~~~~~~~~~~ compilation terminated.
The 6.12.34 kernel built just fine.
I bisected it to:
commit b8abcba6e4aec53868dfe44f97270fc4dee0df2a (HEAD) Author: Sergio Gonz_lez Collado sergio.collado@gmail.com Date: Sun Mar 2 23:15:18 2025 +0100
Kunit to check the longest symbol length
commit c104c16073b7fdb3e4eae18f66f4009f6b073d6f upstream. which has this hunk:
diff --git a/arch/x86/tools/insn_decoder_test.c b/arch/x86/tools/insn_decoder_test.c index 472540aeabc2..6c2986d2ad11 100644 --- a/arch/x86/tools/insn_decoder_test.c +++ b/arch/x86/tools/insn_decoder_test.c @@ -10,6 +10,7 @@ #include <assert.h> #include <unistd.h> #include <stdarg.h> +#include <linux/kallsyms.h> #define unlikely(cond) (cond) @@ -106,7 +107,7 @@ static void parse_args(int argc, char **argv) } } -#define BUFSIZE 256 +#define BUFSIZE (256 + KSYM_NAME_LEN) int main(int argc, char **argv) {
It looks like the linux/kallsyms.h was included to get KSYM_NAME_LEN. Unfortunately it also introduced the include of execinfo.h, which does not exist on musl libc.
This has previously been reported to and tried fixed: https://lore.kernel.org/stable/DB0OSTC6N4TL.2NK75K2CWE9JV@pwned.life/T/#t
Would it be an idea to revert commit b8abcba6e4ae til we have a proper solution for this?
Please get the fix in Linus's tree first and then we can backport it as needed.
thanks,
greg k-h
On Tue Jul 1, 2025 at 2:26 PM CEST, Greg Kroah-Hartman wrote:
On Tue, Jul 01, 2025 at 02:10:26PM +0200, Natanael Copa wrote:
Hi!
I bumped into a build regression when building Alpine Linux kernel 6.12.35 on x86_64:
In file included from ../arch/x86/tools/insn_decoder_test.c:13: ../tools/include/linux/kallsyms.h:21:10: fatal error: execinfo.h: No such file or directory 21 | #include <execinfo.h> | ^~~~~~~~~~~~ compilation terminated.
The 6.12.34 kernel built just fine.
I bisected it to:
commit b8abcba6e4aec53868dfe44f97270fc4dee0df2a (HEAD) Author: Sergio Gonz_lez Collado sergio.collado@gmail.com Date: Sun Mar 2 23:15:18 2025 +0100
Kunit to check the longest symbol length
commit c104c16073b7fdb3e4eae18f66f4009f6b073d6f upstream. which has this hunk:
diff --git a/arch/x86/tools/insn_decoder_test.c b/arch/x86/tools/insn_decoder_test.c index 472540aeabc2..6c2986d2ad11 100644 --- a/arch/x86/tools/insn_decoder_test.c +++ b/arch/x86/tools/insn_decoder_test.c @@ -10,6 +10,7 @@ #include <assert.h> #include <unistd.h> #include <stdarg.h> +#include <linux/kallsyms.h> #define unlikely(cond) (cond) @@ -106,7 +107,7 @@ static void parse_args(int argc, char **argv) } } -#define BUFSIZE 256 +#define BUFSIZE (256 + KSYM_NAME_LEN) int main(int argc, char **argv) {
It looks like the linux/kallsyms.h was included to get KSYM_NAME_LEN. Unfortunately it also introduced the include of execinfo.h, which does not exist on musl libc.
This has previously been reported to and tried fixed: https://lore.kernel.org/stable/DB0OSTC6N4TL.2NK75K2CWE9JV@pwned.life/T/#t
Would it be an idea to revert commit b8abcba6e4ae til we have a proper solution for this?
Please get the fix in Linus's tree first and then we can backport it as needed.
The patch now landed in Linus's tree as a95743b53031 ("kallsyms: fix build without execinfo"). Please backport it into the stable trees.
On Sun, Jul 13, 2025 at 04:27:36PM +0200, Achill Gilgenast wrote:
On Tue Jul 1, 2025 at 2:26 PM CEST, Greg Kroah-Hartman wrote:
On Tue, Jul 01, 2025 at 02:10:26PM +0200, Natanael Copa wrote:
Hi!
I bumped into a build regression when building Alpine Linux kernel 6.12.35 on x86_64:
In file included from ../arch/x86/tools/insn_decoder_test.c:13: ../tools/include/linux/kallsyms.h:21:10: fatal error: execinfo.h: No such file or directory 21 | #include <execinfo.h> | ^~~~~~~~~~~~ compilation terminated.
The 6.12.34 kernel built just fine.
I bisected it to:
commit b8abcba6e4aec53868dfe44f97270fc4dee0df2a (HEAD) Author: Sergio Gonz_lez Collado sergio.collado@gmail.com Date: Sun Mar 2 23:15:18 2025 +0100
Kunit to check the longest symbol length
commit c104c16073b7fdb3e4eae18f66f4009f6b073d6f upstream. which has this hunk:
diff --git a/arch/x86/tools/insn_decoder_test.c b/arch/x86/tools/insn_decoder_test.c index 472540aeabc2..6c2986d2ad11 100644 --- a/arch/x86/tools/insn_decoder_test.c +++ b/arch/x86/tools/insn_decoder_test.c @@ -10,6 +10,7 @@ #include <assert.h> #include <unistd.h> #include <stdarg.h> +#include <linux/kallsyms.h> #define unlikely(cond) (cond) @@ -106,7 +107,7 @@ static void parse_args(int argc, char **argv) } } -#define BUFSIZE 256 +#define BUFSIZE (256 + KSYM_NAME_LEN) int main(int argc, char **argv) {
It looks like the linux/kallsyms.h was included to get KSYM_NAME_LEN. Unfortunately it also introduced the include of execinfo.h, which does not exist on musl libc.
This has previously been reported to and tried fixed: https://lore.kernel.org/stable/DB0OSTC6N4TL.2NK75K2CWE9JV@pwned.life/T/#t
Would it be an idea to revert commit b8abcba6e4ae til we have a proper solution for this?
Please get the fix in Linus's tree first and then we can backport it as needed.
The patch now landed in Linus's tree as a95743b53031 ("kallsyms: fix build without execinfo"). Please backport it into the stable trees.
Already all queued up!
Thanks for letting us know.
greg k-h
On Sun Jul 13, 2025 at 4:38 PM CEST, Greg Kroah-Hartman wrote:
On Sun, Jul 13, 2025 at 04:27:36PM +0200, Achill Gilgenast wrote:
On Tue Jul 1, 2025 at 2:26 PM CEST, Greg Kroah-Hartman wrote:
On Tue, Jul 01, 2025 at 02:10:26PM +0200, Natanael Copa wrote:
Hi!
I bumped into a build regression when building Alpine Linux kernel 6.12.35 on x86_64:
In file included from ../arch/x86/tools/insn_decoder_test.c:13: ../tools/include/linux/kallsyms.h:21:10: fatal error: execinfo.h: No such file or directory 21 | #include <execinfo.h> | ^~~~~~~~~~~~ compilation terminated.
The 6.12.34 kernel built just fine.
I bisected it to:
commit b8abcba6e4aec53868dfe44f97270fc4dee0df2a (HEAD) Author: Sergio Gonz_lez Collado sergio.collado@gmail.com Date: Sun Mar 2 23:15:18 2025 +0100
Kunit to check the longest symbol length
commit c104c16073b7fdb3e4eae18f66f4009f6b073d6f upstream. which has this hunk:
diff --git a/arch/x86/tools/insn_decoder_test.c b/arch/x86/tools/insn_decoder_test.c index 472540aeabc2..6c2986d2ad11 100644 --- a/arch/x86/tools/insn_decoder_test.c +++ b/arch/x86/tools/insn_decoder_test.c @@ -10,6 +10,7 @@ #include <assert.h> #include <unistd.h> #include <stdarg.h> +#include <linux/kallsyms.h> #define unlikely(cond) (cond) @@ -106,7 +107,7 @@ static void parse_args(int argc, char **argv) } } -#define BUFSIZE 256 +#define BUFSIZE (256 + KSYM_NAME_LEN) int main(int argc, char **argv) {
It looks like the linux/kallsyms.h was included to get KSYM_NAME_LEN. Unfortunately it also introduced the include of execinfo.h, which does not exist on musl libc.
This has previously been reported to and tried fixed: https://lore.kernel.org/stable/DB0OSTC6N4TL.2NK75K2CWE9JV@pwned.life/T/#t
Would it be an idea to revert commit b8abcba6e4ae til we have a proper solution for this?
Please get the fix in Linus's tree first and then we can backport it as needed.
The patch now landed in Linus's tree as a95743b53031 ("kallsyms: fix build without execinfo"). Please backport it into the stable trees.
Already all queued up!
Thanks for letting us know.
Nice, thanks!
Hello,
Thanks for pointing that out. I was not aware of it.
On Tue, 1 Jul 2025 at 14:10, Natanael Copa ncopa@alpinelinux.org wrote:
Hi!
I bumped into a build regression when building Alpine Linux kernel 6.12.35 on x86_64:
In file included from ../arch/x86/tools/insn_decoder_test.c:13: ../tools/include/linux/kallsyms.h:21:10: fatal error: execinfo.h: No such file or directory 21 | #include <execinfo.h> | ^~~~~~~~~~~~ compilation terminated.
The 6.12.34 kernel built just fine.
I bisected it to:
commit b8abcba6e4aec53868dfe44f97270fc4dee0df2a (HEAD) Author: Sergio Gonz_lez Collado sergio.collado@gmail.com Date: Sun Mar 2 23:15:18 2025 +0100
Kunit to check the longest symbol length commit c104c16073b7fdb3e4eae18f66f4009f6b073d6f upstream.
which has this hunk:
diff --git a/arch/x86/tools/insn_decoder_test.c b/arch/x86/tools/insn_decoder_test.c index 472540aeabc2..6c2986d2ad11 100644 --- a/arch/x86/tools/insn_decoder_test.c +++ b/arch/x86/tools/insn_decoder_test.c @@ -10,6 +10,7 @@ #include <assert.h> #include <unistd.h> #include <stdarg.h> +#include <linux/kallsyms.h>
#define unlikely(cond) (cond)
@@ -106,7 +107,7 @@ static void parse_args(int argc, char **argv) } }
-#define BUFSIZE 256 +#define BUFSIZE (256 + KSYM_NAME_LEN)
int main(int argc, char **argv) {
It looks like the linux/kallsyms.h was included to get KSYM_NAME_LEN. Unfortunately it also introduced the include of execinfo.h, which does not exist on musl libc.
This has previously been reported to and tried fixed: https://lore.kernel.org/stable/DB0OSTC6N4TL.2NK75K2CWE9JV@pwned.life/T/#t
Would it be an idea to revert commit b8abcba6e4ae til we have a proper solution for this?
Thanks!
-nc
On Tue, 1 Jul 2025 19:07:32 +0200 Sergio González Collado sergio.collado@gmail.com wrote:
Hello,
Hi Sergio,
Thanks for pointing that out. I was not aware of it.
No worries. It happens. Just slightly unfortunate that it tickled down to stable branches before it got fixed.
It is trivial to fix but I wonder what is the best way though. Achill proposed to use #ifdef HAVE_BACKTRACE_SUPPORT in tools/include/linux/kallsyms.h but it appears that this was included only for KSYM_NAME_LEN.
KSYM_NAME_LEN appears to be defined multiple places:
$ rg 'KSYM_NAME_LEN\s+512' include/linux/kallsyms.h 18:#define KSYM_NAME_LEN 512
tools/include/linux/kallsyms.h 9:#define KSYM_NAME_LEN 512
tools/lib/perf/include/perf/event.h 107:#define KSYM_NAME_LEN 512
tools/lib/symbol/kallsyms.h 10:#define KSYM_NAME_LEN 512
scripts/kallsyms.c 34:#define KSYM_NAME_LEN 512
So I wonder if it would be acceptable to simply:
diff --git a/arch/x86/tools/insn_decoder_test.c b/arch/x86/tools/insn_decoder_test.c index 08cd913cbd4e..7916bf487ed2 100644 --- a/arch/x86/tools/insn_decoder_test.c +++ b/arch/x86/tools/insn_decoder_test.c @@ -10,7 +10,6 @@ #include <assert.h> #include <unistd.h> #include <stdarg.h> -#include <linux/kallsyms.h>
#include <asm/insn.h> #include <inat.c> @@ -105,6 +104,7 @@ static void parse_args(int argc, char **argv) } }
+#define KSYM_NAME_LEN 512 #define BUFSIZE (256 + KSYM_NAME_LEN)
int main(int argc, char **argv)
I am also confused with who should be in the CC list.
Thanks! -nc
On Tue, 1 Jul 2025 at 14:10, Natanael Copa ncopa@alpinelinux.org wrote:
Hi!
I bumped into a build regression when building Alpine Linux kernel 6.12.35 on x86_64:
In file included from ../arch/x86/tools/insn_decoder_test.c:13: ../tools/include/linux/kallsyms.h:21:10: fatal error: execinfo.h: No such file or directory 21 | #include <execinfo.h> | ^~~~~~~~~~~~ compilation terminated.
The 6.12.34 kernel built just fine.
I bisected it to:
commit b8abcba6e4aec53868dfe44f97270fc4dee0df2a (HEAD) Author: Sergio Gonz_lez Collado sergio.collado@gmail.com Date: Sun Mar 2 23:15:18 2025 +0100
Kunit to check the longest symbol length commit c104c16073b7fdb3e4eae18f66f4009f6b073d6f upstream.
which has this hunk:
diff --git a/arch/x86/tools/insn_decoder_test.c b/arch/x86/tools/insn_decoder_test.c index 472540aeabc2..6c2986d2ad11 100644 --- a/arch/x86/tools/insn_decoder_test.c +++ b/arch/x86/tools/insn_decoder_test.c @@ -10,6 +10,7 @@ #include <assert.h> #include <unistd.h> #include <stdarg.h> +#include <linux/kallsyms.h>
#define unlikely(cond) (cond)
@@ -106,7 +107,7 @@ static void parse_args(int argc, char **argv) } }
-#define BUFSIZE 256 +#define BUFSIZE (256 + KSYM_NAME_LEN)
int main(int argc, char **argv) {
It looks like the linux/kallsyms.h was included to get KSYM_NAME_LEN. Unfortunately it also introduced the include of execinfo.h, which does not exist on musl libc.
This has previously been reported to and tried fixed: https://lore.kernel.org/stable/DB0OSTC6N4TL.2NK75K2CWE9JV@pwned.life/T/#t
Would it be an idea to revert commit b8abcba6e4ae til we have a proper solution for this?
Thanks!
-nc
On Wed Jul 2, 2025 at 12:42 PM CEST, Natanael Copa wrote:
On Tue, 1 Jul 2025 19:07:32 +0200 Sergio González Collado sergio.collado@gmail.com wrote:
Hello,
Hi Sergio,
Thanks for pointing that out. I was not aware of it.
No worries. It happens. Just slightly unfortunate that it tickled down to stable branches before it got fixed.
It is trivial to fix but I wonder what is the best way though. Achill proposed to use #ifdef HAVE_BACKTRACE_SUPPORT in tools/include/linux/kallsyms.h but it appears that this was included only for KSYM_NAME_LEN.
This would still not resolve the actual issue that execinfo.h is included if built without backtrace support and kallsyms.h gets included.
#ifdef HAVE_BACKTRACE_SUPPORT can be seen in other places in tools/, where it is used exactly like I did in https://lore.kernel.org/stable/20250622014608.448718-1-fossdd@pwned.life/.
linux-stable-mirror@lists.linaro.org