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.
This commit is contained in:
parent
24906b43b9
commit
41cfadd63c
16
ChangeLog
16
ChangeLog
@ -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>
|
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.
|
Merge new message handling code from GNU gettext, by Drepper.
|
||||||
|
@ -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
|
subdir = intl
|
||||||
routines = bindtextdom dcgettext dgettext gettext \
|
routines = bindtextdom dcgettext dgettext gettext \
|
||||||
finddomain loadmsgcat localealias textdomain
|
finddomain loadmsgcat localealias textdomain
|
||||||
distribute = gettext.h gettextP.h hash-string.h libgettext.h
|
distribute = gettext.h gettextP.h hash-string.h
|
||||||
|
|
||||||
include ../Rules
|
include ../Rules
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ subdir := misc
|
|||||||
headers := sys/uio.h sys/ioctl.h sys/ptrace.h ioctls.h sys/file.h \
|
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 \
|
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 \
|
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 \
|
routines := brk sbrk sstk ioctl \
|
||||||
readv writev \
|
readv writev \
|
||||||
@ -41,8 +41,8 @@ routines := brk sbrk sstk ioctl \
|
|||||||
swapon mktemp mkstemp \
|
swapon mktemp mkstemp \
|
||||||
ualarm usleep \
|
ualarm usleep \
|
||||||
gtty stty \
|
gtty stty \
|
||||||
ptrace \
|
ptrace nlist \
|
||||||
nlist fstab \
|
fstab mntent \
|
||||||
utimes \
|
utimes \
|
||||||
truncate ftruncate \
|
truncate ftruncate \
|
||||||
chflags fchflags \
|
chflags fchflags \
|
||||||
|
@ -1 +1,2 @@
|
|||||||
-a -b -cfoobar
|
-a -b -cfoobar --required foobar --optional=bazbug --none random
|
||||||
|
|
||||||
|
@ -1,41 +1,57 @@
|
|||||||
#include <ansidecl.h>
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <stdio.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 aflag = 0;
|
||||||
int bflag = 0;
|
int bflag = 0;
|
||||||
char *cvalue = NULL;
|
char *cvalue = NULL;
|
||||||
int index;
|
int index;
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
while ((c = getopt (argc, argv, "abc:")) >= 0)
|
while ((c = getopt_long (argc, argv, "abc:", options, NULL)) >= 0)
|
||||||
switch (c) {
|
switch (c)
|
||||||
case 'a':
|
{
|
||||||
aflag = 1;
|
case 'a':
|
||||||
break;
|
aflag = 1;
|
||||||
case 'b':
|
break;
|
||||||
bflag = 1;
|
case 'b':
|
||||||
break;
|
bflag = 1;
|
||||||
case 'c':
|
break;
|
||||||
cvalue = optarg;
|
case 'c':
|
||||||
break;
|
cvalue = optarg;
|
||||||
case '?':
|
break;
|
||||||
#if 0
|
case '?':
|
||||||
fprintf (stderr, "Unknown option %c.\n", optopt);
|
fputs ("Unknown option.\n", stderr);
|
||||||
#else
|
return 1;
|
||||||
fputs ("Unknown option.\n", stderr);
|
default:
|
||||||
#endif
|
fprintf (stderr, "This should never happen!\n");
|
||||||
return -1;
|
return 1;
|
||||||
default:
|
|
||||||
fprintf (stderr, "This should never happen!\n");
|
case 'r':
|
||||||
return -1;
|
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);
|
printf ("aflag = %d, bflag = %d, cvalue = %s\n", aflag, bflag, cvalue);
|
||||||
|
|
||||||
for (index = optind; index < argc; index++)
|
for (index = optind; index < argc; index++)
|
||||||
printf ("Non-option argument %s\n", argv[index]);
|
printf ("Non-option argument %s\n", argv[index]);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
# Linux shares most of the syscalls which are also common to BSD and SVR4.
|
# Linux shares most of the syscalls which are also common to BSD and SVR4.
|
||||||
unix/common
|
unix/common
|
||||||
|
|
||||||
# Linux has not yet (as of 1.3.18) the canonical set of <sys/mman.h>
|
# Linux as of version 1.3.29 has all functions of the mmap family
|
||||||
# system calls. msync() and madvice() are missing, so their stubs
|
# which are described in POSIX.4. Missing is only madvise() so
|
||||||
# are found here. I think later version will have them ones.
|
# we define a stub here.
|
||||||
unix/mman
|
unix/mman
|
||||||
|
|
||||||
# Linux has network support in the kernel.
|
# Linux has network support in the kernel.
|
||||||
|
@ -43,10 +43,10 @@ __adjtime (itv, otv)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
tntx.offset = tmp.tv_usec + tmp.tv_sec * 1000000L;
|
tntx.offset = tmp.tv_usec + tmp.tv_sec * 1000000L;
|
||||||
tntx.mode = ADJ_OFFSET_SINGLESHOT;
|
tntx.modes = ADJ_OFFSET_SINGLESHOT;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
tntx.mode = 0;
|
tntx.modes = 0;
|
||||||
|
|
||||||
if (__adjtimex (&tntx) < 0) return -1;
|
if (__adjtimex (&tntx) < 0) return -1;
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
|||||||
Cambridge, MA 02139, USA. */
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <sysdep.h>
|
||||||
#include "fpu_control.h"
|
#include "fpu_control.h"
|
||||||
|
|
||||||
extern void __libc_init (int, char **, char **);
|
extern void __libc_init (int, char **, char **);
|
||||||
@ -31,9 +32,16 @@ init (int *data)
|
|||||||
char **argv = (void *) (data + 1);
|
char **argv = (void *) (data + 1);
|
||||||
char **envp = &argv[argc + 1];
|
char **envp = &argv[argc + 1];
|
||||||
|
|
||||||
/* Make sure we are not using iBSC2 personality. */
|
/* Make sure we are not using the iBSC2 personality. The `personality'
|
||||||
asm ("int $0x80 # syscall no %0, arg %1"
|
syscall takes one argument; zero means the Linux personality. The
|
||||||
: : "a" (SYS_ify (personality)), "b" (0));
|
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. */
|
/* Set the FPU control word to the proper default value. */
|
||||||
__setfpucw (___fpu_control);
|
__setfpucw (___fpu_control);
|
||||||
|
Loading…
Reference in New Issue
Block a user