From bda0f7d955d59cd26a0a9f6b9ab0d34295a10871 Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Tue, 21 Apr 2026 15:01:08 +0300 Subject: [PATCH] cgen: fix incompatible integer to pointer conversion on windows execinfo (fixes #17032) --- vlib/v/gen/c/cheaders.v | 29 +++++++++++++------ .../execinfo_include_linux.c.must_have | 2 ++ 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/vlib/v/gen/c/cheaders.v b/vlib/v/gen/c/cheaders.v index 04da01808..5f4b4d067 100644 --- a/vlib/v/gen/c/cheaders.v +++ b/vlib/v/gen/c/cheaders.v @@ -136,20 +136,31 @@ const c_common_macros = ' #define E_STRUCT_DECL unsigned char _dummy_pad #define E_STRUCT 0 #endif -#ifndef _WIN32 - #if defined(__has_include) && !defined(__TINYC__) - #if __has_include() - #include - #else - // On linux: int backtrace(void **__array, int __size); - // On BSD: size_t backtrace(void **, size_t); - #endif - #elif (defined(__linux__) && (defined(__GLIBC__) || defined(__GNU_LIBRARY__))) || defined(__APPLE__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) +#if defined(__has_include) && !defined(__TINYC__) + #if __has_include() && !defined(_WIN32) + #define __V_HAVE_EXECINFO_H 1 #include #else // On linux: int backtrace(void **__array, int __size); // On BSD: size_t backtrace(void **, size_t); #endif +#elif (defined(__linux__) && (defined(__GLIBC__) || defined(__GNU_LIBRARY__))) || defined(__APPLE__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) + #define __V_HAVE_EXECINFO_H 1 + #include +#else + // On linux: int backtrace(void **__array, int __size); + // On BSD: size_t backtrace(void **, size_t); +#endif +#ifndef __V_HAVE_EXECINFO_H + #ifdef __cplusplus + extern "C" { + #endif + int backtrace(void **__array, int __size); + char **backtrace_symbols(void *const *__array, int __size); + void backtrace_symbols_fd(void *const *__array, int __size, int __fd); + #ifdef __cplusplus + } + #endif #endif #ifdef __TINYC__ #define _Atomic volatile diff --git a/vlib/v/gen/c/testdata/execinfo_include_linux.c.must_have b/vlib/v/gen/c/testdata/execinfo_include_linux.c.must_have index 60a0a6f4c..6325bce67 100644 --- a/vlib/v/gen/c/testdata/execinfo_include_linux.c.must_have +++ b/vlib/v/gen/c/testdata/execinfo_include_linux.c.must_have @@ -1,3 +1,5 @@ #if defined(__has_include) && !defined(__TINYC__) #if __has_include() #elif (defined(__linux__) && (defined(__GLIBC__) || defined(__GNU_LIBRARY__))) || defined(__APPLE__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) +#ifndef __V_HAVE_EXECINFO_H +char **backtrace_symbols(void *const *__array, int __size); -- 2.39.5