From 8c573cab6819c69142389d36b978b3c683771afe Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Tue, 14 Jan 2020 12:40:09 -0500 Subject: libthread: use mmap to allocate OpenBSD stacks Should fix faults on OpenBSD. Fixes #218. Fixes #226. --- src/libthread/sysofiles.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/libthread/sysofiles.sh') diff --git a/src/libthread/sysofiles.sh b/src/libthread/sysofiles.sh index 9eeea606..f76b975a 100644 --- a/src/libthread/sysofiles.sh +++ b/src/libthread/sysofiles.sh @@ -6,22 +6,22 @@ tag="$OBJTYPE-$SYSNAME-${SYSVERSION:-`uname -r`}-${CC9:-cc}" case "$tag" in *-Linux-2.[0-5]*) # will have to fix this for linux power pc - echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o + echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o stkmalloc.o ;; *-FreeBSD-[0-4].*) - echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o + echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o stkmalloc.o ;; *-NetBSD-*) - echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o + echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o stkmalloc.o ;; *-Darwin-10.[5-6].* | *-Darwin-[89].*) - echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME-${OBJTYPE}.o pthread.o + echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME-${OBJTYPE}.o pthread.o stkmalloc.o ;; *-OpenBSD-*) - echo ${SYSNAME}-${OBJTYPE}-asm.o ${SYSNAME}-${OBJTYPE}.o pthread.o + echo ${SYSNAME}-${OBJTYPE}-asm.o ${SYSNAME}-${OBJTYPE}.o pthread.o stkmmap.o ;; *) - echo pthread.o + echo pthread.o stkmalloc.o esac case "$OBJTYPE-$SYSNAME" in -- cgit v1.2.3 From 23a23689807560ee80806a339be0f7e7cef6340d Mon Sep 17 00:00:00 2001 From: Dan Cross Date: Thu, 16 Jan 2020 17:01:44 +0000 Subject: libthread: NetBSD supports pthreads, remove ancient systems in sysofiles.sh Signed-off-by: Dan Cross --- src/libthread/sysofiles.sh | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) (limited to 'src/libthread/sysofiles.sh') diff --git a/src/libthread/sysofiles.sh b/src/libthread/sysofiles.sh index f76b975a..e1eb8f03 100644 --- a/src/libthread/sysofiles.sh +++ b/src/libthread/sysofiles.sh @@ -4,15 +4,8 @@ test -f $PLAN9/config && . $PLAN9/config tag="$OBJTYPE-$SYSNAME-${SYSVERSION:-`uname -r`}-${CC9:-cc}" case "$tag" in -*-Linux-2.[0-5]*) - # will have to fix this for linux power pc - echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o stkmalloc.o - ;; -*-FreeBSD-[0-4].*) - echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o stkmalloc.o - ;; *-NetBSD-*) - echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o stkmalloc.o + echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o pthread.o stkmalloc.o ;; *-Darwin-10.[5-6].* | *-Darwin-[89].*) echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME-${OBJTYPE}.o pthread.o stkmalloc.o -- cgit v1.2.3 From 52397aaf2b240015533fa46f1767c20f45296465 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Sun, 19 Jan 2020 20:57:09 -0500 Subject: libthread: rm Darwin pre-11.0.0 support Darwin 11.0.0 was Mac OS X 10.7.0 aka Lion. The previous version was Snow Leopard, which has been unsupported by Apple since February 2014. --- src/libthread/sysofiles.sh | 3 --- 1 file changed, 3 deletions(-) (limited to 'src/libthread/sysofiles.sh') diff --git a/src/libthread/sysofiles.sh b/src/libthread/sysofiles.sh index e1eb8f03..30a4c338 100644 --- a/src/libthread/sysofiles.sh +++ b/src/libthread/sysofiles.sh @@ -7,9 +7,6 @@ case "$tag" in *-NetBSD-*) echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o pthread.o stkmalloc.o ;; -*-Darwin-10.[5-6].* | *-Darwin-[89].*) - echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME-${OBJTYPE}.o pthread.o stkmalloc.o - ;; *-OpenBSD-*) echo ${SYSNAME}-${OBJTYPE}-asm.o ${SYSNAME}-${OBJTYPE}.o pthread.o stkmmap.o ;; -- cgit v1.2.3 From cb8f7357867a2a5d0bd742ceeb77bce9ad5f435c Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Sun, 19 Jan 2020 21:10:11 -0500 Subject: all: remove Linux 2.4 vs 2.6 detection Linux 2.4 is dead. (The libthread code hasn't worked for Linux 2.4 for a long time.) --- src/libthread/sysofiles.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src/libthread/sysofiles.sh') diff --git a/src/libthread/sysofiles.sh b/src/libthread/sysofiles.sh index 30a4c338..fd60f131 100644 --- a/src/libthread/sysofiles.sh +++ b/src/libthread/sysofiles.sh @@ -2,12 +2,11 @@ test -f $PLAN9/config && . $PLAN9/config -tag="$OBJTYPE-$SYSNAME-${SYSVERSION:-`uname -r`}-${CC9:-cc}" -case "$tag" in -*-NetBSD-*) +case "$SYSNAME" in +NetBSD) echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o pthread.o stkmalloc.o ;; -*-OpenBSD-*) +OpenBSD) echo ${SYSNAME}-${OBJTYPE}-asm.o ${SYSNAME}-${OBJTYPE}.o pthread.o stkmmap.o ;; *) -- cgit v1.2.3 From ac8042dfa9819f76ccfedd4aa36c1239322808b8 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Sun, 19 Jan 2020 21:14:20 -0500 Subject: libthread: rm NetBSD pthread reference in sysofiles.sh It may be that pthreads on NetBSD is now good enough, but the build as written (introduced in 23a2368 at my suggestion) is certainly broken, since both NetBSD.c and pthread.c define the same functions. If NetBSD does support pthreads now, then a few things should happen together: - libthread/sysofiles.sh should drop its top NetBSD case entirely - libthread/NetBSD.c should be deleted - libthread/NetBSD-*-asm.s should be deleted - include/u.h's NetBSD case should define PLAN9PORT_USING_PTHREADS and #include For now, restore to less clearly broken build. --- src/libthread/sysofiles.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/libthread/sysofiles.sh') diff --git a/src/libthread/sysofiles.sh b/src/libthread/sysofiles.sh index fd60f131..9a7301a8 100644 --- a/src/libthread/sysofiles.sh +++ b/src/libthread/sysofiles.sh @@ -4,7 +4,7 @@ test -f $PLAN9/config && . $PLAN9/config case "$SYSNAME" in NetBSD) - echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o pthread.o stkmalloc.o + echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o stkmalloc.o ;; OpenBSD) echo ${SYSNAME}-${OBJTYPE}-asm.o ${SYSNAME}-${OBJTYPE}.o pthread.o stkmmap.o -- cgit v1.2.3 From 41b3e8b9893a8561af7e85ca98444bc284b4013d Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Sun, 19 Jan 2020 22:39:22 -0500 Subject: libthread: use consistent stack calculation code in makecontext Also reduce duplication: makecontext is per-arch not per-os-arch. May fix #353. --- src/libthread/sysofiles.sh | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'src/libthread/sysofiles.sh') diff --git a/src/libthread/sysofiles.sh b/src/libthread/sysofiles.sh index 9a7301a8..8a65d0f6 100644 --- a/src/libthread/sysofiles.sh +++ b/src/libthread/sysofiles.sh @@ -7,24 +7,37 @@ NetBSD) echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o stkmalloc.o ;; OpenBSD) - echo ${SYSNAME}-${OBJTYPE}-asm.o ${SYSNAME}-${OBJTYPE}.o pthread.o stkmmap.o + echo ${SYSNAME}-${OBJTYPE}-asm.o pthread.o stkmmap.o ;; *) echo pthread.o stkmalloc.o esac +# Various libc don't supply swapcontext, makecontext, so we do. case "$OBJTYPE-$SYSNAME" in -sparc64-Linux) - # Debian glibc doesn't supply swapcontext, makecontext - # so we supply our own copy from the latest glibc. - echo Linux-sparc64-context.o Linux-sparc64-swapcontext.o +386-OpenBSD) + echo 386-ucontext.o ;; arm-Linux) - # ARM doesn't supply them either. - echo Linux-arm-context.o Linux-arm-swapcontext.o + echo arm-ucontext.o + echo Linux-arm-context.o # setcontext, getcontext + ;; +arm-NetBSD) + echo arm-ucontext.o + ;; +power-OpenBSD) + echo power-ucontext.o + ;; +sparc64-Linux) + echo sparc64-ucontext.o + echo Linux-sparc64-swapcontext.o # setcontext, getcontext ;; x86_64-Darwin) - echo Darwin-x86_64-asm.o Darwin-x86_64-swapcontext.o + echo x86_64-ucontext.o + echo Darwin-x86_64-asm.o # setcontext, getcontext + ;; +x86_64-OpenBSD) + echo x86_64-ucontext.o ;; esac -- cgit v1.2.3 From 4698bde2367f971fed3924f2dee736e0dfe37bb9 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Sun, 19 Jan 2020 23:00:26 -0500 Subject: libthread: clean up sysofiles.sh a bit more --- src/libthread/sysofiles.sh | 35 ++++++++++------------------------- 1 file changed, 10 insertions(+), 25 deletions(-) (limited to 'src/libthread/sysofiles.sh') diff --git a/src/libthread/sysofiles.sh b/src/libthread/sysofiles.sh index 8a65d0f6..20811cdf 100644 --- a/src/libthread/sysofiles.sh +++ b/src/libthread/sysofiles.sh @@ -7,37 +7,22 @@ NetBSD) echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o stkmalloc.o ;; OpenBSD) - echo ${SYSNAME}-${OBJTYPE}-asm.o pthread.o stkmmap.o + echo pthread.o stkmmap.o ;; *) echo pthread.o stkmalloc.o esac # Various libc don't supply swapcontext, makecontext, so we do. -case "$OBJTYPE-$SYSNAME" in -386-OpenBSD) - echo 386-ucontext.o - ;; -arm-Linux) - echo arm-ucontext.o - echo Linux-arm-context.o # setcontext, getcontext - ;; -arm-NetBSD) - echo arm-ucontext.o - ;; -power-OpenBSD) - echo power-ucontext.o - ;; -sparc64-Linux) - echo sparc64-ucontext.o - echo Linux-sparc64-swapcontext.o # setcontext, getcontext - ;; -x86_64-Darwin) - echo x86_64-ucontext.o - echo Darwin-x86_64-asm.o # setcontext, getcontext - ;; -x86_64-OpenBSD) - echo x86_64-ucontext.o +case "$SYSNAME-$OBJTYPE" in +Darwin-x86_64 | Linux-arm | Linux-sparc64 | NetBSD-arm | OpenBSD-386 | OpenBSD-power | OpenBSD-x86_64) + echo $OBJTYPE-ucontext.o ;; esac +# A few libc don't supply setcontext, getcontext, so we do. +case "$SYSNAME-$OBJTYPE" in +Darwin-x86_64 | Linux-arm | Linux-sparc64 | OpenBSD-386 | OpenBSD-power | OpenBSD-x86_64) + echo $SYSNAME-$OBJTYPE-asm.o + ;; +esac -- cgit v1.2.3