libthread: use consistent stack calculation code in makecontext

Also reduce duplication: makecontext is per-arch not per-os-arch.

May fix #353.
This commit is contained in:
Russ Cox 2020-01-19 22:39:22 -05:00
parent ac8042dfa9
commit 41b3e8b989
11 changed files with 36 additions and 83 deletions

View file

@ -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