diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-06-14 00:55:24 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-06-14 00:55:24 +0000 |
commit | afa0569f3ba820fe6baf60e72d8c1d6e923e4e98 (patch) | |
tree | c55508731f6a3858cfd1adaf6563aa40cab13fec /elf/eval.c | |
parent | 490dc9aa62445bdc3f5a84addd459398b9fdbe15 (diff) | |
download | glibc-afa0569f3ba820fe6baf60e72d8c1d6e923e4e98.tar.gz glibc-afa0569f3ba820fe6baf60e72d8c1d6e923e4e98.tar.xz glibc-afa0569f3ba820fe6baf60e72d8c1d6e923e4e98.zip |
Update.
* crypt/Makefile (distribute): Add ufc-crypt.h, crypt-private.h, ufc.c, speeds.c, README.ufc-crypt, and Banner. * sysdeps/sparc/Subdirs: New file. * locale/Makefile (distribute): Add weightwc.h and programs/localedef.h. * time/Makefile (distribute): Add datemsk. * sysdeps/ia64/Dist: Add softpipe.h. * sysdeps/unix/sysv/aix/Dist: New file. * posix/setpgrp.c: Moved to... * sysdeps/generic/setpgrp.c: ...here. New file. * io/mknod.c: Moved to... * sysdeps/generic/mknod.c: ...here. New file. * sysdeps/unix/sysv/linux/ia64/Dist: New file. * sysdeps/unix/sysv/linux/sparc/Dist: Add sys/procfs.h. * sysdeps/unix/sysv/linux/arm/Dist: Add oldgetrlimit64.c. * sysdeps/powerpc/Dist: Add fprrest.S, fprsave.S, gprsave1.S, gprsave0.S, gprrest1.S, and gprrest0.S. * sysdeps/generic/Dist: Add bp-thunks.h, bp-sym.h, and bp-start.h. * posix/Makefile (routines): Add spawnattr_getsigmask, spawnattr_getschedpolicy, spawnattr_getschedparam, spawnattr_setsigmask, spawnattr_setschedpolicy, and spawnattr_setschedparam. * posix/Versions: Add posix_spawnattr_getschedpolicy, posix_spawnattr_setschedpolicy, posix_spawnattr_getschedparam, and posix_spawnattr_setschedparam. * posix/spawnattr_setschedparam.c: Fix typo. * posix/spawnattr_setsigmask.c (posix_spawnattr_setsigmask): Correct typo. * login/programs/utmpd.c: Removed. * login/programs/utmpd.h: Removed. * login/programs/utmpd-private.h: Removed. * Makefile (distribute): Add include/db_185.h and include/db.h. * iconvdata/Makefile (distribute): Add iso-ir-165.c and iso-ir-165.h. * elf/Makefile (distribute): Add missing files. * dlfcn/Makefile: Add back rules to include eval in libdl.so. * elf/eval.c: Moved to... * dlfcn/eval.c: ...here. New file. * Makefile (distribute): Also distribute ChangeLog.1?.
Diffstat (limited to 'elf/eval.c')
-rw-r--r-- | elf/eval.c | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/elf/eval.c b/elf/eval.c deleted file mode 100644 index ce452b722c..0000000000 --- a/elf/eval.c +++ /dev/null @@ -1,138 +0,0 @@ -/* You don't really want to know what this hack is for. - Copyright (C) 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include <stdio.h> -#include <ctype.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <dlfcn.h> - -static void *funcall (char **stringp); -static void *eval (char **stringp); - -static void * -funcall (char **stringp) -{ - void *args[strlen (*stringp)], **ap = args; - void *argcookie = &args[1]; - - do - { - /* Evaluate the next token. */ - *ap++ = eval (stringp); - - /* Whitespace is irrelevant. */ - while (isspace (**stringp)) - ++*stringp; - - /* Terminate at closing paren or end of line. */ - } while (**stringp != '\0' && **stringp != ')'); - if (**stringp != '\0') - /* Swallow closing paren. */ - ++*stringp; - - if (args[0] == NULL) - { - static const char unknown[] = "Unknown function\n"; - write (1, unknown, sizeof unknown - 1); - return NULL; - } - - /* Do it to it. */ - __builtin_return (__builtin_apply (args[0], - &argcookie, - (char *) ap - (char *) &args[1])); -} - -static void * -eval (char **stringp) -{ - void *value; - char *p = *stringp, c; - - /* Whitespace is irrelevant. */ - while (isspace (*p)) - ++p; - - switch (*p) - { - case '"': - /* String constant. */ - value = ++p; - do - if (*p == '\\') - { - switch (*strcpy (p, p + 1)) - { - case 't': - *p = '\t'; - break; - case 'n': - *p = '\n'; - break; - } - ++p; - } - while (*p != '\0' && *p++ != '"'); - if (p[-1] == '"') - p[-1] = '\0'; - break; - - case '(': - *stringp = ++p; - return funcall (stringp); - - default: - /* Try to parse it as a number. */ - value = (void *) strtol (p, stringp, 0); - if (*stringp != p) - return value; - - /* Anything else is a symbol that produces its address. */ - value = p; - do - ++p; - while (*p != '\0' && !isspace (*p) && (!ispunct (*p) || *p == '_')); - c = *p; - *p = '\0'; - value = dlsym (NULL, value); - *p = c; - break; - } - - *stringp = p; - return value; -} - - -void -_start (void) -{ - char *buf = NULL; - size_t bufsz = 0; - - while (__getdelim (&buf, &bufsz, '\n', stdin) > 0) - { - char *p = buf; - eval (&p); - } - - exit (0); -} |