Fix NATIVE_RELIBC=0

This commit is contained in:
Wildan M
2025-12-18 12:26:34 +07:00
parent 42d5369d41
commit f6fa58bbbc
4 changed files with 29 additions and 19 deletions
+1 -1
View File
@@ -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
+21 -14
View File
@@ -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
+4 -1
View File
@@ -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());
}
+3 -3
View File
@@ -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);