From 635872e06f82693646a8d979c423433fa839a656 Mon Sep 17 00:00:00 2001 From: Simon Schubert Date: Thu, 27 Jul 2006 00:44:20 +0000 Subject: [PATCH] Remove get/make/signalcontext. SUSv3 calls it "obsolescent" and i386 doesn't have it either. --- lib/libc/amd64/gen/Makefile.inc | 3 +- lib/libc/amd64/gen/makecontext.c | 108 ----------------------------- lib/libc/amd64/gen/signalcontext.c | 104 --------------------------- lib/libc/amd64/sys/Makefile.inc | 4 +- lib/libc/amd64/sys/getcontext.S | 55 --------------- 5 files changed, 3 insertions(+), 271 deletions(-) delete mode 100644 lib/libc/amd64/gen/makecontext.c delete mode 100644 lib/libc/amd64/gen/signalcontext.c delete mode 100644 lib/libc/amd64/sys/getcontext.S diff --git a/lib/libc/amd64/gen/Makefile.inc b/lib/libc/amd64/gen/Makefile.inc index 43317fb80c..cbf1283c44 100644 --- a/lib/libc/amd64/gen/Makefile.inc +++ b/lib/libc/amd64/gen/Makefile.inc @@ -1,10 +1,9 @@ # @(#)Makefile.inc 8.1 (Berkeley) 6/4/93 # $FreeBSD: src/lib/libc/amd64/gen/Makefile.inc,v 1.24 2003/10/13 20:32:33 alc Exp $ -# $DragonFly: src/lib/libc/amd64/gen/Makefile.inc,v 1.1 2004/02/02 05:43:14 dillon Exp $ +# $DragonFly: src/lib/libc/amd64/gen/Makefile.inc,v 1.2 2006/07/27 00:44:20 corecode Exp $ SRCS+= _setjmp.S rfork_thread.S setjmp.S sigsetjmp.S \ fabs.S modf.S \ frexp.c infinity.c isinf.c ldexp.c \ - makecontext.c signalcontext.c \ fpgetmask.c fpsetmask.c fpgetprec.c fpsetprec.c \ fpgetround.c fpsetround.c fpgetsticky.c fpsetsticky.c diff --git a/lib/libc/amd64/gen/makecontext.c b/lib/libc/amd64/gen/makecontext.c deleted file mode 100644 index 75b8281a9a..0000000000 --- a/lib/libc/amd64/gen/makecontext.c +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2003 Marcel Moolenaar - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD: src/lib/libc/amd64/gen/makecontext.c,v 1.2 2003/12/05 01:36:44 peter Exp $ - * $DragonFly: src/lib/libc/amd64/gen/Attic/makecontext.c,v 1.1 2004/02/02 05:43:14 dillon Exp $ - */ - - -#include -#include -#include -#include - -typedef void (*func_t)(uint64_t, uint64_t, uint64_t, uint64_t, uint64_t, - uint64_t); - -/* Prototypes */ -static void ctx_wrapper(ucontext_t *ucp, func_t func, uint64_t *args); - -__weak_reference(__makecontext, makecontext); - -void -__makecontext(ucontext_t *ucp, void (*start)(void), int argc, ...) -{ - uint64_t *args; - uint64_t *sp; - va_list ap; - int i; - - /* A valid context is required. */ - if ((ucp == NULL) || (ucp->uc_mcontext.mc_len != sizeof(mcontext_t))) - return; - else if ((argc < 0) || (argc > 6) || (ucp->uc_stack.ss_sp == NULL) || - (ucp->uc_stack.ss_size < MINSIGSTKSZ)) { - /* - * This should really return -1 with errno set to ENOMEM - * or something, but the spec says that makecontext is - * a void function. At least make sure that the context - * isn't valid so it can't be used without an error. - */ - ucp->uc_mcontext.mc_len = 0; - return; - } - - /* Align the stack to 16 bytes. */ - sp = (uint64_t *)(ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size); - sp = (uint64_t *)((uint64_t)sp & -15UL); - - /* Allocate space for a maximum of 6 arguments on the stack. */ - args = sp - 6; - - /* - * Account for arguments on stack and do the funky C entry alignment. - * This means that we need an 8-byte-odd alignment since the ABI expects - * the return address to be pushed, thus breaking the 16 byte alignment. - */ - sp -= 7; - - /* Add the arguments: */ - va_start(ap, argc); - for (i = 0; i < argc; i++) - args[i] = va_arg(ap, uint64_t); - va_end(ap); - for (i = argc; i < 6; i++) - args[i] = 0; - - ucp->uc_mcontext.mc_rdi = (register_t)ucp; - ucp->uc_mcontext.mc_rsi = (register_t)start; - ucp->uc_mcontext.mc_rdx = (register_t)args; - ucp->uc_mcontext.mc_rbp = (register_t)sp; - ucp->uc_mcontext.mc_rbx = (register_t)sp; - ucp->uc_mcontext.mc_rsp = (register_t)sp; - ucp->uc_mcontext.mc_rip = (register_t)ctx_wrapper; -} - -static void -ctx_wrapper(ucontext_t *ucp, func_t func, uint64_t *args) -{ - (*func)(args[0], args[1], args[2], args[3], args[4], args[5]); - if (ucp->uc_link == NULL) - exit(0); - setcontext((const ucontext_t *)ucp->uc_link); - /* should never get here */ - abort(); - /* NOTREACHED */ -} diff --git a/lib/libc/amd64/gen/signalcontext.c b/lib/libc/amd64/gen/signalcontext.c deleted file mode 100644 index 63c0825dc5..0000000000 --- a/lib/libc/amd64/gen/signalcontext.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (c) 2003 Marcel Moolenaar - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD: src/lib/libc/amd64/gen/signalcontext.c,v 1.2 2003/07/26 12:58:28 davidxu Exp $ - * $DragonFly: src/lib/libc/amd64/gen/Attic/signalcontext.c,v 1.1 2004/02/02 05:43:14 dillon Exp $ - */ - -#include -#include -#include -#include -#include - -typedef void (*handler_t)(uint64_t, uint64_t, uint64_t); - -/* Prototypes */ -static void ctx_wrapper(ucontext_t *ucp, handler_t func, uint64_t *args); - -__weak_reference(__signalcontext, signalcontext); - -int -__signalcontext(ucontext_t *ucp, int sig, __sighandler_t *func) -{ - uint64_t *args; - siginfo_t *sig_si; - ucontext_t *sig_uc; - uint64_t sp; - - /* Bail out if we don't have a valid ucontext pointer. */ - if (ucp == NULL) - abort(); - - /* - * Build a signal frame and copy the arguments of signal handler - * 'func' onto the stack. We only need 3 arguments, but we - * create room for 4 so that we are 16-byte aligned. - */ - sp = (ucp->uc_mcontext.mc_rsp - sizeof(ucontext_t)) & ~15UL; - sig_uc = (ucontext_t *)sp; - bcopy(ucp, sig_uc, sizeof(*sig_uc)); - sp = (sp - sizeof(siginfo_t)) & ~15UL; - sig_si = (siginfo_t *)sp; - bzero(sig_si, sizeof(*sig_si)); - sig_si->si_signo = sig; - sp -= 4 * sizeof(uint64_t); - args = (uint64_t *)sp; - args[0] = sig; - args[1] = (intptr_t)sig_si; - args[2] = (intptr_t)sig_uc; - args[3] = 0; - sp -= 16; - - /* - * Setup the ucontext of the signal handler. - */ - bzero(&ucp->uc_mcontext, sizeof(ucp->uc_mcontext)); - ucp->uc_link = sig_uc; - sigdelset(&ucp->uc_sigmask, sig); - - ucp->uc_mcontext.mc_len = sizeof(mcontext_t); - ucp->uc_mcontext.mc_rdi = (register_t)ucp; - ucp->uc_mcontext.mc_rsi = (register_t)func; - ucp->uc_mcontext.mc_rdx = (register_t)args; - ucp->uc_mcontext.mc_rbp = (register_t)sp; - ucp->uc_mcontext.mc_rbx = (register_t)sp; - ucp->uc_mcontext.mc_rsp = (register_t)sp; - ucp->uc_mcontext.mc_rip = (register_t)ctx_wrapper; - return (0); -} - -static void -ctx_wrapper(ucontext_t *ucp, handler_t func, uint64_t *args) -{ - - (*func)(args[0], args[1], args[2]); - if (ucp->uc_link == NULL) - exit(0); - setcontext((const ucontext_t *)ucp->uc_link); - /* should never get here */ - abort(); - /* NOTREACHED */ -} diff --git a/lib/libc/amd64/sys/Makefile.inc b/lib/libc/amd64/sys/Makefile.inc index b36e7c98fe..e29167435d 100644 --- a/lib/libc/amd64/sys/Makefile.inc +++ b/lib/libc/amd64/sys/Makefile.inc @@ -1,10 +1,10 @@ # from: Makefile.inc,v 1.1 1993/09/03 19:04:23 jtc Exp # $FreeBSD: src/lib/libc/amd64/sys/Makefile.inc,v 1.29 2003/10/23 06:07:09 peter Exp $ -# $DragonFly: src/lib/libc/amd64/sys/Makefile.inc,v 1.1 2004/02/02 05:43:14 dillon Exp $ +# $DragonFly: src/lib/libc/amd64/sys/Makefile.inc,v 1.2 2006/07/27 00:44:20 corecode Exp $ SRCS+= amd64_get_fsbase.c amd64_get_gsbase.c amd64_set_fsbase.c amd64_set_gsbase.c -MDASM= vfork.S brk.S cerror.S exect.S getcontext.S pipe.S ptrace.S \ +MDASM= vfork.S brk.S cerror.S exect.S pipe.S ptrace.S \ reboot.S sbrk.S setlogin.S sigreturn.S # Don't generate default code for these syscalls: diff --git a/lib/libc/amd64/sys/getcontext.S b/lib/libc/amd64/sys/getcontext.S deleted file mode 100644 index 2824e110f6..0000000000 --- a/lib/libc/amd64/sys/getcontext.S +++ /dev/null @@ -1,55 +0,0 @@ -/*- - * Copyright (c) 2003 Peter Wemm - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD: src/lib/libc/amd64/sys/getcontext.S,v 1.2 2003/09/04 00:31:45 peter Exp $ - * $DragonFly: src/lib/libc/amd64/sys/Attic/getcontext.S,v 1.1 2004/02/02 05:43:14 dillon Exp $ - */ - -#include -#include - -/* - * This has to be magic to handle the multiple returns. - * Otherwise, the setcontext() syscall will return here and we'll - * pop off the return address and go to the *setcontext* call. - */ - .weak _getcontext - .set _getcontext,__sys_getcontext - .weak getcontext - .set getcontext,__sys_getcontext -ENTRY(__sys_getcontext) - movq (%rsp),%rsi /* save getcontext return address */ - mov $SYS_getcontext,%rax - KERNCALL - jb 1f - addq $8,%rsp /* remove stale (setcontext) return address */ - jmp *%rsi /* restore return address */ -1: -#ifdef PIC - movq PIC_GOT(HIDENAME(cerror)),%rdx - jmp *%rdx -#else - jmp HIDENAME(cerror) -#endif -- 2.41.0