diff options
author | Roland McGrath <roland@gnu.org> | 1995-09-30 17:10:48 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 1995-09-30 17:10:48 +0000 |
commit | 41cfadd63c6d28400f263460e3f2b15e74893b63 (patch) | |
tree | a630064faeaec664341df5534b8defe2f5d1443a | |
parent | 24906b43b9bd9108aef17d18dfbb8764212085f7 (diff) | |
download | glibc-41cfadd63c6d28400f263460e3f2b15e74893b63.zip glibc-41cfadd63c6d28400f263460e3f2b15e74893b63.tar.gz glibc-41cfadd63c6d28400f263460e3f2b15e74893b63.tar.bz2 |
Sat Sep 30 11:47:05 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* posix/tstgetopt.c, posix/tstgetopt.args: Test long options too.
* sysdeps/unix/sysv/linux/i386/init-first.c (init): Save, set, and
restore %ebx by hand for personality syscall.
GCC cannot deal with spilling the dedicated GOT register.
* misc/Makefile (routines): Add mntent, which was somehow omitted.
Fri Sep 29 15:07:10 1995 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
* sysdeps/unix/sysv/linux/adjtime.c (__adjtime):
Change name of field `mode' in `struct timex' to `modes'.
Linux-1.3.28 updates this name according to RFC 1489.
-rw-r--r-- | ChangeLog | 16 | ||||
-rw-r--r-- | intl/Makefile | 22 | ||||
-rw-r--r-- | misc/Makefile | 6 | ||||
-rw-r--r-- | posix/tstgetopt.args | 3 | ||||
-rw-r--r-- | posix/tstgetopt.c | 64 | ||||
-rw-r--r-- | sys/ipc.h | 1 | ||||
-rw-r--r-- | sys/msg.h | 1 | ||||
-rw-r--r-- | sys/sem.h | 1 | ||||
-rw-r--r-- | sys/shm.h | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/Implies | 6 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/adjtime.c | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/init-first.c | 14 |
12 files changed, 102 insertions, 37 deletions
@@ -1,3 +1,19 @@ +Sat Sep 30 11:47:05 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> + + * posix/tstgetopt.c, posix/tstgetopt.args: Test long options too. + + * sysdeps/unix/sysv/linux/i386/init-first.c (init): Save, set, and + restore %ebx by hand for personality syscall. + GCC cannot deal with spilling the dedicated GOT register. + + * misc/Makefile (routines): Add mntent, which was somehow omitted. + +Fri Sep 29 15:07:10 1995 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de> + + * sysdeps/unix/sysv/linux/adjtime.c (__adjtime): + Change name of field `mode' in `struct timex' to `modes'. + Linux-1.3.28 updates this name according to RFC 1489. + Thu Sep 28 13:05:54 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> Merge new message handling code from GNU gettext, by Drepper. diff --git a/intl/Makefile b/intl/Makefile index 544daae..f7ef998 100644 --- a/intl/Makefile +++ b/intl/Makefile @@ -1,7 +1,27 @@ +# Makefile for intl subdirectory: message handling code from GNU gettext. + +# Copyright (C) 1995 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., 675 Mass Ave, +# Cambridge, MA 02139, USA. + subdir = intl routines = bindtextdom dcgettext dgettext gettext \ finddomain loadmsgcat localealias textdomain -distribute = gettext.h gettextP.h hash-string.h libgettext.h +distribute = gettext.h gettextP.h hash-string.h include ../Rules diff --git a/misc/Makefile b/misc/Makefile index 213ca9f..173413c 100644 --- a/misc/Makefile +++ b/misc/Makefile @@ -25,7 +25,7 @@ subdir := misc headers := sys/uio.h sys/ioctl.h sys/ptrace.h ioctls.h sys/file.h \ a.out.h nlist.h stab.h stab.def sgtty.h sys/dir.h sys/cdefs.h \ ttyent.h syscall.h syslog.h sys/syslog.h paths.h sys/reboot.h \ - sys/mman.h sys/param.h fstab.h search.h utmp.h + sys/mman.h sys/param.h fstab.h mntent.h search.h utmp.h routines := brk sbrk sstk ioctl \ readv writev \ @@ -41,8 +41,8 @@ routines := brk sbrk sstk ioctl \ swapon mktemp mkstemp \ ualarm usleep \ gtty stty \ - ptrace \ - nlist fstab \ + ptrace nlist \ + fstab mntent \ utimes \ truncate ftruncate \ chflags fchflags \ diff --git a/posix/tstgetopt.args b/posix/tstgetopt.args index 023e102..c82c865 100644 --- a/posix/tstgetopt.args +++ b/posix/tstgetopt.args @@ -1 +1,2 @@ --a -b -cfoobar +-a -b -cfoobar --required foobar --optional=bazbug --none random + diff --git a/posix/tstgetopt.c b/posix/tstgetopt.c index fd2d4d0..2258b20 100644 --- a/posix/tstgetopt.c +++ b/posix/tstgetopt.c @@ -1,41 +1,57 @@ -#include <ansidecl.h> #include <unistd.h> #include <stdio.h> +#include <getopt.h> -int main (int argc, char **argv) +int +main (int argc, char **argv) { + static const struct option options[] = + { + {"required", required_argument, NULL, 'r'}, + {"optional", optional_argument, NULL, 'o'}, + {"none", no_argument, NULL, 'n'} + }; + int aflag = 0; int bflag = 0; char *cvalue = NULL; int index; int c; - while ((c = getopt (argc, argv, "abc:")) >= 0) - switch (c) { - case 'a': - aflag = 1; - break; - case 'b': - bflag = 1; - break; - case 'c': - cvalue = optarg; - break; - case '?': -#if 0 - fprintf (stderr, "Unknown option %c.\n", optopt); -#else - fputs ("Unknown option.\n", stderr); -#endif - return -1; - default: - fprintf (stderr, "This should never happen!\n"); - return -1; - } + while ((c = getopt_long (argc, argv, "abc:", options, NULL)) >= 0) + switch (c) + { + case 'a': + aflag = 1; + break; + case 'b': + bflag = 1; + break; + case 'c': + cvalue = optarg; + break; + case '?': + fputs ("Unknown option.\n", stderr); + return 1; + default: + fprintf (stderr, "This should never happen!\n"); + return 1; + + case 'r': + printf ("--required %s\n", optarg); + break; + case 'o': + printf ("--optional %s\n", optarg); + break; + case 'n': + puts ("--none"); + break; + } printf ("aflag = %d, bflag = %d, cvalue = %s\n", aflag, bflag, cvalue); for (index = optind; index < argc; index++) printf ("Non-option argument %s\n", argv[index]); + return 0; } diff --git a/sys/ipc.h b/sys/ipc.h new file mode 100644 index 0000000..7bd2576 --- /dev/null +++ b/sys/ipc.h @@ -0,0 +1 @@ +#include <sysvipc/sys/ipc.h> diff --git a/sys/msg.h b/sys/msg.h new file mode 100644 index 0000000..0f8026d --- /dev/null +++ b/sys/msg.h @@ -0,0 +1 @@ +#include <sysvipc/sys/msg.h> diff --git a/sys/sem.h b/sys/sem.h new file mode 100644 index 0000000..b0fb201 --- /dev/null +++ b/sys/sem.h @@ -0,0 +1 @@ +#include <sysvipc/sys/sem.h> diff --git a/sys/shm.h b/sys/shm.h new file mode 100644 index 0000000..1878fcc --- /dev/null +++ b/sys/shm.h @@ -0,0 +1 @@ +#include <sysvipc/sys/shm.h> diff --git a/sysdeps/unix/sysv/linux/Implies b/sysdeps/unix/sysv/linux/Implies index 3f43b3e..41c26f2 100644 --- a/sysdeps/unix/sysv/linux/Implies +++ b/sysdeps/unix/sysv/linux/Implies @@ -1,9 +1,9 @@ # Linux shares most of the syscalls which are also common to BSD and SVR4. unix/common -# Linux has not yet (as of 1.3.18) the canonical set of <sys/mman.h> -# system calls. msync() and madvice() are missing, so their stubs -# are found here. I think later version will have them ones. +# Linux as of version 1.3.29 has all functions of the mmap family +# which are described in POSIX.4. Missing is only madvise() so +# we define a stub here. unix/mman # Linux has network support in the kernel. diff --git a/sysdeps/unix/sysv/linux/adjtime.c b/sysdeps/unix/sysv/linux/adjtime.c index 3673cd9..8400e1b 100644 --- a/sysdeps/unix/sysv/linux/adjtime.c +++ b/sysdeps/unix/sysv/linux/adjtime.c @@ -43,10 +43,10 @@ __adjtime (itv, otv) return -1; } tntx.offset = tmp.tv_usec + tmp.tv_sec * 1000000L; - tntx.mode = ADJ_OFFSET_SINGLESHOT; + tntx.modes = ADJ_OFFSET_SINGLESHOT; } else - tntx.mode = 0; + tntx.modes = 0; if (__adjtimex (&tntx) < 0) return -1; diff --git a/sysdeps/unix/sysv/linux/i386/init-first.c b/sysdeps/unix/sysv/linux/i386/init-first.c index 0177daa..84b5ff9 100644 --- a/sysdeps/unix/sysv/linux/i386/init-first.c +++ b/sysdeps/unix/sysv/linux/i386/init-first.c @@ -18,6 +18,7 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include <unistd.h> +#include <sysdep.h> #include "fpu_control.h" extern void __libc_init (int, char **, char **); @@ -31,9 +32,16 @@ init (int *data) char **argv = (void *) (data + 1); char **envp = &argv[argc + 1]; - /* Make sure we are not using iBSC2 personality. */ - asm ("int $0x80 # syscall no %0, arg %1" - : : "a" (SYS_ify (personality)), "b" (0)); + /* Make sure we are not using the iBSC2 personality. The `personality' + syscall takes one argument; zero means the Linux personality. The + argument arrives in %ebx; we have to save and restore %ebx by hand + here, because GCC (as of 2.7.0) cannot handle saving and restoring it + for us when it is the dedicated GOT register for PIC. */ + asm ("pushl %%ebx\n" + "xorl %%ebx, %%ebx\n" + "int $0x80 # syscall no %0\n" + "popl %%ebx" + : : "a" (SYS_ify (personality))); /* Set the FPU control word to the proper default value. */ __setfpucw (___fpu_control); |