From 120edd30cd2f26ba3f9802bf822bb3905f569286 Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Wed, 11 Mar 2026 12:36:00 +0300 Subject: [PATCH] cgen: cannot cross compile to linux from mac (fixes #18089) --- vlib/v/gen/c/cheaders.v | 9 ++++++++- vlib/v/gen/c/testdata/execinfo_include_linux.c.must_have | 3 +++ vlib/v/gen/c/testdata/execinfo_include_linux.vv | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 vlib/v/gen/c/testdata/execinfo_include_linux.c.must_have create mode 100644 vlib/v/gen/c/testdata/execinfo_include_linux.vv diff --git a/vlib/v/gen/c/cheaders.v b/vlib/v/gen/c/cheaders.v index 20a1b3ee4..ac8554067 100644 --- a/vlib/v/gen/c/cheaders.v +++ b/vlib/v/gen/c/cheaders.v @@ -132,7 +132,14 @@ const c_common_macros = ' #define E_STRUCT 0 #endif #ifndef _WIN32 - #if (defined(__linux__) && (defined(__GLIBC__) || defined(__GNU_LIBRARY__))) || defined(__APPLE__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) + #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__) #include #else // On linux: int backtrace(void **__array, int __size); 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 new file mode 100644 index 000000000..60a0a6f4c --- /dev/null +++ b/vlib/v/gen/c/testdata/execinfo_include_linux.c.must_have @@ -0,0 +1,3 @@ +#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__) diff --git a/vlib/v/gen/c/testdata/execinfo_include_linux.vv b/vlib/v/gen/c/testdata/execinfo_include_linux.vv new file mode 100644 index 000000000..9161ff2b2 --- /dev/null +++ b/vlib/v/gen/c/testdata/execinfo_include_linux.vv @@ -0,0 +1,2 @@ +// vtest vflags: -os linux +fn main() {} -- 2.39.5