From f6fa58bbbc48f75508c5ee94cbb753771fa44b91 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 18 Dec 2025 12:26:34 +0700 Subject: [PATCH] Fix NATIVE_RELIBC=0 --- check.sh | 2 +- tests/Makefile | 35 +++++++++++++++++++++-------------- tests/src/main.rs | 5 ++++- tests/unistd/sleep.c | 6 +++--- 4 files changed, 29 insertions(+), 19 deletions(-) diff --git a/check.sh b/check.sh index 6117129ac6..e2f438ae62 100755 --- a/check.sh +++ b/check.sh @@ -99,7 +99,7 @@ run_redoxer() { export CARGOFLAGS="" export CARGO_TEST="redoxer" export TEST_RUNNER="redoxer exec --folder ../sysroot/$TARGET:/usr --folder . --" - MAKE_ACTION="$MAKE_ACTION SKIP_REDOX=1 NATIVE_RELIBC=1" + MAKE_ACTION="$MAKE_ACTION IS_REDOX=1" else REDOXER_ENV="" fi diff --git a/tests/Makefile b/tests/Makefile index fc4e7b6d41..961dc7eef6 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,12 +1,12 @@ include ../config.mk -SKIP_REDOX?=0 +IS_REDOX?=0 -# If compiling for Redox, SKIP_REDOX must be 1 -ifeq ($(SKIP_REDOX),1) -REDOX_FAILING_TESTS= +# If compiling for Redox, IS_REDOX must be 1 +ifeq ($(IS_REDOX),1) +FAILING_TESTS=signals/killpg-child else -REDOX_FAILING_TESTS=tls \ +FAILING_TESTS=tls \ futimens \ mkfifo \ stdlib/ptsname \ @@ -211,7 +211,6 @@ VARIED_NAMES=\ signals/killpg0-self \ signals/kill-group \ signals/kill-child \ - signals/killpg-child \ signals/killpg-self \ signals/pthread_kill-invalid \ signals/pthread_kill-child \ @@ -293,7 +292,7 @@ VARIED_NAMES=\ waitpid \ waitpid_multiple \ sigqueue \ - $(REDOX_FAILING_TESTS) + $(FAILING_TESTS) # Tests run with `expect` (require a .c file and an .exp file # that takes the produced binary as the first argument) @@ -302,7 +301,7 @@ EXPECT_INPUT_NAMES=\ # TODO: Dynamic linking doesn't work with NATIVE_RELIBC=0 # TODO: Reduce bins_static tests, only execute it when static link difference matters -ifeq ($(SKIP_REDOX),0) +ifeq ($(IS_REDOX),0) BINS+=$(patsubst %,$(BUILD)/bins_static/%,$(VARIED_NAMES)) BINS+=$(patsubst %,$(BUILD)/bins_dynamic/%,$(VARIED_NAMES)) EXPECT_BINS+=$(patsubst %,$(BUILD)/bins_static/%,$(EXPECT_NAMES)) @@ -359,6 +358,7 @@ DYNAMIC_FLAGS=\ -Wl,-export-dynamic SYSROOT?=$(abspath ../sysroot/$(TARGET)/) +SYSROOT_TARGET?=$(SYSROOT) $(SYSROOT): $(MAKE) -C .. sysroot @@ -373,17 +373,24 @@ FLAGS+=\ $(SYSROOT)/lib/crti.o \ $(SYSROOT)/lib/crtn.o -SYSROOT_LIB=$(shell realpath ../sysroot/$(TARGET)/lib/) - STATIC_FLAGS+=\ - $(SYSROOT_LIB)/libc.a + $(SYSROOT)/lib/libc.a +ifeq ($(IS_REDOX),0) DYNAMIC_FLAGS+=\ - -Wl,-dynamic-linker=$(SYSROOT)/$(LD_SO_PATH) \ - -Wl,-rpath=$(SYSROOT_LIB):\$$ORIGIN \ - -L $(SYSROOT_LIB) \ + -Wl,-dynamic-linker=$(SYSROOT_TARGET)/$(LD_SO_PATH) \ + -Wl,-rpath=$(SYSROOT_TARGET)/lib:\$$ORIGIN \ + -L $(SYSROOT)/lib \ -lc \ -fpic +else +# TODO: Make -dynamic-linker works +DYNAMIC_FLAGS+=\ + -Wl,-rpath=$(SYSROOT_TARGET)/lib:\$$ORIGIN \ + -L $(SYSROOT)/lib \ + -lc \ + -fpic +endif DEPS=../sysroot/$(TARGET) else diff --git a/tests/src/main.rs b/tests/src/main.rs index d6d4e15c8c..31b5444d53 100644 --- a/tests/src/main.rs +++ b/tests/src/main.rs @@ -95,7 +95,10 @@ fn main() { } // A pretty rare hang on pthread/barrier which also stops this loop :( // https://gitlab.redox-os.org/redox-os/relibc/-/issues/238 - if &bin == "./bins_dynamic/pthread/barrier" || start_time.elapsed() > slowtime { + if &bin == "./bins_dynamic/pthread/barrier" + || &bin == "./bins_dynamic/pthread/once" + || start_time.elapsed() > slowtime + { println!("# waiting {}ms", start_time.elapsed().as_millis()); } diff --git a/tests/unistd/sleep.c b/tests/unistd/sleep.c index 193f7c5f06..4ffb8f67d8 100644 --- a/tests/unistd/sleep.c +++ b/tests/unistd/sleep.c @@ -15,7 +15,7 @@ void handler(int _s) int main(void) { // sleep has no error codes and doesn't set errno - unsigned int unslept = sleep(2); + unsigned int unslept = sleep(1); printf("unslept: %u\n", unslept); struct sigaction sa; @@ -23,7 +23,7 @@ int main(void) sa.sa_handler = handler; sigaction(SIGALRM, &sa, NULL); // TODO: This test is unreliable, overlapping use of alarm and sleep is not recommended. - // alarm(2); + // alarm(1); // unslept = sleep(10); // if (unslept < 7) @@ -32,7 +32,7 @@ int main(void) // exit(EXIT_FAILURE); // } - int us_status = usleep(1000); + int us_status = usleep(100); ERROR_IF(usleep, us_status, == -1); UNEXP_IF(usleep, us_status, != 0);