Skip to content

Commit ba0183e

Browse files
fix: android stdin rvalue, linux linkgroups, skip signal tests in ci, bump libtcc
1 parent 268abcb commit ba0183e

4 files changed

Lines changed: 27 additions & 2 deletions

File tree

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ jobs:
110110

111111
- name: Test
112112
if: ${{ !matrix.android }}
113-
run: xmake run chromatic-test
113+
run: xmake run chromatic-test -- --no-signal-tests
114114

115115
- name: Prepare artifacts
116116
shell: bash

deps/libtcc.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package("libtcc")
33
set_description("Tiny C Compiler")
44

55
set_urls("https://github.com/std-microblock/tinycc.git")
6-
add_versions("2026.03.30+2", "4aa71afa8e59194d7b05f5ea49ff9476401b7d20")
6+
add_versions("2026.03.30+3", "8b83545011b3790f216189a6916a4cbf9b0212ed")
77

88
add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
99

src/core/bindings/native_cmodule.cc

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,23 @@ static void injectRuntimeSymbols(TCCState *s,
8181
injected.insert("____stdoutp");
8282
injected.insert("___stderrp");
8383
injected.insert("____stderrp");
84+
#elif defined(__ANDROID__)
85+
// Android Bionic: stdin/stdout/stderr are macros expanding to rvalues.
86+
// Use stable pointers from the C runtime instead.
87+
{
88+
static FILE *s_stdin = stdin;
89+
static FILE *s_stdout = stdout;
90+
static FILE *s_stderr = stderr;
91+
tcc_add_symbol(s, "stdin", (const void *)&s_stdin);
92+
tcc_add_symbol(s, "stdout", (const void *)&s_stdout);
93+
tcc_add_symbol(s, "stderr", (const void *)&s_stderr);
94+
}
95+
injected.insert("stdin");
96+
injected.insert("_stdin");
97+
injected.insert("stdout");
98+
injected.insert("_stdout");
99+
injected.insert("stderr");
100+
injected.insert("_stderr");
84101
#else
85102
tcc_add_symbol(s, "stdin", (const void *)&stdin);
86103
tcc_add_symbol(s, "stdout", (const void *)&stdout);

xmake.lua

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,17 @@ target("chromatic-test")
6363
add_files("src/test/**.cc")
6464
add_deps("chromatic-core")
6565
add_packages("gtest")
66+
-- On Linux, breeze-quickjs-ng.a references JS_EnqueueJob defined in
67+
-- breeze-js-runtime.a; wrap in --start-group/--end-group to resolve.
68+
if is_os("linux") then
69+
add_linkgroups("breeze-js-runtime", "breeze-quickjs-ng", {group = true})
70+
end
6671

6772
target("chromatic-injectee")
6873
set_kind("shared")
6974
add_files("src/injectee/**.cc")
7075
add_deps("chromatic-core")
7176
add_packages("xz", "reflect-cpp", "fmt")
77+
if is_os("linux") then
78+
add_linkgroups("breeze-js-runtime", "breeze-quickjs-ng", {group = true})
79+
end

0 commit comments

Comments
 (0)