From bfc04a9ff126ea5fdbe08e281bfc61b93f31429b Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Mon, 19 Feb 1996 23:14:44 +0000 Subject: Sun Feb 18 15:08:10 1996 Andreas Schwab * sysdeps/posix/utimes.c (__utimes): There are 1000000 usecs in a sec. Sun Feb 18 13:56:00 1996 Andreas Schwab * elf/Makefile, time/Makefile: Make `all' the default target. Mon Feb 19 18:09:04 1996 Roland McGrath * misc/sys/ptrace.h: Moved to ... * sysdeps/generic/sys/ptrace.h: ... here. * sys/ptrace.h: File removed. Sun Feb 18 12:13:07 1996 Andreas Schwab * sysdeps/unix/sysv/linux/Makefile (headers): Add fpu_control.h. * sysdeps/unix/sysv/linux/i386/sysdep.S (errno): Put it into .bss so that the symbol alias works. * sysdeps/unix/sysv/linux/m68k/fpu_control.h (_FPU_SETCW): Corrected. * sysdeps/unix/sysv/linux/resourcebits.h: New file. * sysdeps/unix/sysv/linux/sys/ptrace.h: New file. * sysdeps/unix/sysv/linux/syscalls.list: Add getegid, geteuid, getppid and reboot. * sysdeps/unix/sysv/linux/sysconf.c: Special version that does not use getdtablesize. Sat Feb 17 10:30:21 1996 David Mosberger-Tang * stdio-common/printf_fp.c, stdlib/strtod.c, sysdeps/ieee754/dbl2mpn.c, sysdeps/ieee754/ldbl2mpn.c, sysdeps/ieee754/mpn2dbl.c, sysdeps/ieee754/mpn2ldbl.c: Cast left operands of shift instructions to `long' where necessary. Thu Feb 15 20:04:50 1996 Ulrich Drepper * stdlib/fpioconst.h: Introduce new constant _FPIO_CONST_OFFSET. * stdio-common/printf_fp.c, stdlib/strtod.c: Use _FPIO_CONST_OFFSET to correctly access MPN array depending on architecture. --- ChangeLog | 47 +++++++ MakeTAGS | 38 +----- Makerules | 4 - dirent/dirent.h | 21 ++- elf/Makefile | 2 + gmon/Makefile | 2 +- gmon/mcount.c | 30 +---- misc/sys/ptrace.h | 137 -------------------- stdio-common/Makefile | 4 +- stdio-common/printf_fp.c | 20 +-- stdio-common/tstscanf.c | 4 + stdlib/fpioconst.h | 9 +- stdlib/strtod.c | 44 ++++--- sys/ptrace.h | 1 - sysdeps/generic/dl-sysdep.c | 3 +- sysdeps/generic/machine-gmon.h | 44 +++++++ sysdeps/generic/sys/ptrace.h | 138 ++++++++++++++++++++ sysdeps/ieee754/mpn2ldbl.c | 8 +- sysdeps/m68k/bsd-_setjmp.S | 2 +- sysdeps/m68k/bsd-setjmp.S | 2 +- sysdeps/posix/utimes.c | 4 +- sysdeps/stub/msync.c | 2 +- sysdeps/unix/Makefile | 2 + sysdeps/unix/closedir.c | 6 +- sysdeps/unix/dirstream.h | 7 +- sysdeps/unix/opendir.c | 26 ++-- sysdeps/unix/readdir.c | 4 +- sysdeps/unix/seekdir.c | 6 +- sysdeps/unix/sysv/linux/Makefile | 6 +- sysdeps/unix/sysv/linux/direct.h | 43 ------- sysdeps/unix/sysv/linux/i386/sysdep.S | 9 +- sysdeps/unix/sysv/linux/m68k/fpu_control.h | 2 +- sysdeps/unix/sysv/linux/resourcebits.h | 50 ++++++++ sysdeps/unix/sysv/linux/sys/ptrace.h | 98 ++++++++++++++ sysdeps/unix/sysv/linux/syscalls.list | 4 + sysdeps/unix/sysv/linux/sysconf.c | 198 ++++++++++++++++++++++++++++- sysdeps/unix/telldir.c | 4 +- time/Makefile | 2 + 38 files changed, 710 insertions(+), 323 deletions(-) delete mode 100644 misc/sys/ptrace.h delete mode 100644 sys/ptrace.h create mode 100644 sysdeps/generic/machine-gmon.h create mode 100644 sysdeps/generic/sys/ptrace.h delete mode 100644 sysdeps/unix/sysv/linux/direct.h create mode 100644 sysdeps/unix/sysv/linux/resourcebits.h create mode 100644 sysdeps/unix/sysv/linux/sys/ptrace.h diff --git a/ChangeLog b/ChangeLog index 465d2f4c12..d828092e1b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,50 @@ +Sun Feb 18 15:08:10 1996 Andreas Schwab + + * sysdeps/posix/utimes.c (__utimes): There are 1000000 usecs in a + sec. + +Sun Feb 18 13:56:00 1996 Andreas Schwab + + * elf/Makefile, time/Makefile: Make `all' the default target. + +Mon Feb 19 18:09:04 1996 Roland McGrath + + * misc/sys/ptrace.h: Moved to ... + * sysdeps/generic/sys/ptrace.h: ... here. + * sys/ptrace.h: File removed. + +Sun Feb 18 12:13:07 1996 Andreas Schwab + + * sysdeps/unix/sysv/linux/Makefile (headers): Add fpu_control.h. + + * sysdeps/unix/sysv/linux/i386/sysdep.S (errno): Put it into .bss + so that the symbol alias works. + + * sysdeps/unix/sysv/linux/m68k/fpu_control.h (_FPU_SETCW): Corrected. + + * sysdeps/unix/sysv/linux/resourcebits.h: New file. + + * sysdeps/unix/sysv/linux/sys/ptrace.h: New file. + + * sysdeps/unix/sysv/linux/syscalls.list: Add getegid, geteuid, + getppid and reboot. + + * sysdeps/unix/sysv/linux/sysconf.c: Special version that does not + use getdtablesize. + +Sat Feb 17 10:30:21 1996 David Mosberger-Tang + + * stdio-common/printf_fp.c, stdlib/strtod.c, sysdeps/ieee754/dbl2mpn.c, + sysdeps/ieee754/ldbl2mpn.c, sysdeps/ieee754/mpn2dbl.c, + sysdeps/ieee754/mpn2ldbl.c: Cast left operands of shift instructions + to `long' where necessary. + +Thu Feb 15 20:04:50 1996 Ulrich Drepper + + * stdlib/fpioconst.h: Introduce new constant _FPIO_CONST_OFFSET. + * stdio-common/printf_fp.c, stdlib/strtod.c: Use _FPIO_CONST_OFFSET + to correctly access MPN array depending on architecture. + Mon Feb 19 15:30:26 1996 Roland McGrath * stdio-common/tstscanf.c (main): Add check for "0" as %d. diff --git a/MakeTAGS b/MakeTAGS index d75c875576..a442ce8d1e 100644 --- a/MakeTAGS +++ b/MakeTAGS @@ -1,6 +1,6 @@ # Make the TAGS files. -# Copyright (C) 1992, 1994, 1995, 1996 Free Software Foundation, Inc. +# Copyright (C) 1992, 1994, 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 @@ -98,7 +98,7 @@ ifdef subdir ifdef tags_sources $(ETAGS) -o $@ $^ else -# No sources. Create a dummy file. +# No sources. Create a dummy file. touch $@ endif # tags_sources else # parent @@ -114,37 +114,3 @@ $(subdirs:%=%/TAGS): $(MAKE) -C $(@D) no_deps=t $(@F) endif # subdir - -XGETTEXT = xgettext -MSGJOIN = msgjoin - -P = $(..)po - -ifdef subdir -domain = $(subdir) -else -domain = libc-top -endif - -define extract -@rm -f $@.new -$(XGETTEXT) --keyword=_ --keyword=N_ --sort-output -d - \ - > $@.new /dev/null $^ -mv -f $@.new $@ -endef - -$P/$(domain).pot: $(tags_sources); $(extract) - -$P/siglist.pot: $(..)sysdeps/generic/signame.c; $(extract) -$P/errlist.pot: $(..)sysdeps/mach/hurd/errlist.c; $(extract) - -ifndef subdir -$P/SYS_libc.pot: $P/libc-top.pot $(subdirs:%=$P/%.pot) - @rm -f $@.new - $(MSGJOIN) $^ > $@.new - mv -f $@.new $@ - -$(subdirs:%=$P/%.pot): $P/%.pot: FORCE - $(MAKE) -C $* no_deps=t ../$@ -FORCE: -endif diff --git a/Makerules b/Makerules index 9ab3a651ba..21b260cc9a 100644 --- a/Makerules +++ b/Makerules @@ -621,10 +621,6 @@ check: tests TAGS: distinfo $(..)MakeTAGS $(MAKE) $(addprefix -f ,$^) $@ -$(..)po/%.pot: distinfo $(..)MakeTAGS - $(MAKE) $(addprefix -f ,$^) $@ - - .PHONY: echo-headers echo-headers: @echo $(headers) diff --git a/dirent/dirent.h b/dirent/dirent.h index 8a6548601f..5b99437301 100644 --- a/dirent/dirent.h +++ b/dirent/dirent.h @@ -29,8 +29,25 @@ __BEGIN_DECLS #include -/* This file defines `struct dirent'. */ -#include + +/* Directory entry structure. + + This structure is laid out identically to the `struct direct' that + represents directory entries in the GNU Hurd and in BSD 4.4 (and + incidentally, on disk in the Berkeley fast file system). The `readdir' + implementations for GNU and BSD know this; you must change them if you + change this structure. */ + +struct dirent + { + __ino_t d_fileno; /* File serial number. */ + unsigned short int d_reclen; /* Length of the whole `struct dirent'. */ + unsigned char d_type; /* File type, possibly unknown. */ + unsigned char d_namlen; /* Length of the file name. */ + + /* Only this member is in the POSIX standard. */ + char d_name[1]; /* File name (actually longer). */ + }; #if defined(__USE_BSD) || defined(__USE_MISC) #define d_ino d_fileno /* Backward compatibility. */ diff --git a/elf/Makefile b/elf/Makefile index 16a6cca2fe..e89bf7bf9c 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -33,6 +33,8 @@ rtld-routines := rtld $(addprefix dl-,minimal load lookup object reloc \ distribute = $(rtld-routines:=.c) dynamic-link.h do-rel.h \ soinit.c sofini.c ldd.sh.in linux-compat.c +all: # Make this the default target; it will be defined in Rules. + include ../Makeconfig ifeq (yes,$(build-shared)) diff --git a/gmon/Makefile b/gmon/Makefile index 8fd25c6258..2a5bb5f16b 100644 --- a/gmon/Makefile +++ b/gmon/Makefile @@ -22,7 +22,7 @@ subdir := gmon headers := sys/gmon.h - +distribute := machine-gmon.h routines := gmon mcount profil include ../Rules diff --git a/gmon/mcount.c b/gmon/mcount.c index ac3584d4a5..ea60afcfb2 100644 --- a/gmon/mcount.c +++ b/gmon/mcount.c @@ -38,6 +38,10 @@ static char sccsid[] = "@(#)mcount.c 8.1 (Berkeley) 6/4/93"; #include #include +/* This file provides the machine-dependent definitions of the _MCOUNT_DECL + and MCOUNT macros. */ +#include "machine-gmon.h" + /* * mcount is called on entry to each function compiled with the profiling * switch set. _mcount(), which is declared in a machine-dependent way @@ -53,33 +57,9 @@ static char sccsid[] = "@(#)mcount.c 8.1 (Berkeley) 6/4/93"; * both frompcindex and frompc. Any reasonable, modern compiler will * perform this optimization. */ -#if 0 _MCOUNT_DECL(frompc, selfpc) /* _mcount; may be static, inline, etc */ register u_long frompc, selfpc; -#endif - -/* GCC version 2 gives us a perfect magical function to get - just the information we need: - void *__builtin_return_address (unsigned int N) - returns the return address of the frame N frames up. */ - -#if __GNUC__ < 2 - #error "This file uses __builtin_return_address, a GCC 2 extension." -#endif - -#include -#ifndef NO_UNDERSCORES -/* The asm symbols for C functions are `_function'. - The canonical name for the counter function is `mcount', no _. */ -void _mcount (void) asm ("mcount"); -#endif - -void -_mcount (void) { - register u_long selfpc = (u_long) __builtin_return_address (0); - register u_long frompc = (u_long) __builtin_return_address (1); - register u_short *frompcindex; register struct tostruct *top, *prevtop; register struct gmonparam *p; @@ -195,10 +175,8 @@ overflow: return; } -#if 0 /* Obsolete with __builtin_return_address. */ /* * Actual definition of mcount function. Defined in , * which is included by . */ MCOUNT -#endif diff --git a/misc/sys/ptrace.h b/misc/sys/ptrace.h deleted file mode 100644 index 22e44e3ae0..0000000000 --- a/misc/sys/ptrace.h +++ /dev/null @@ -1,137 +0,0 @@ -/* Copyright (C) 1991, 1992 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, 1992 Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ - -#ifndef _PTRACE_H - -#define _PTRACE_H 1 -#include - -__BEGIN_DECLS - - -/* Type of the REQUEST argument to `ptrace.' */ -enum __ptrace_request -{ - /* Indicate that the process making this request should be traced. - All signals received by this process can be intercepted by its - parent, and its parent can use the other `ptrace' requests. */ - PTRACE_TRACEME = 0, -#define PT_TRACE_ME PTRACE_TRACEME - - /* Return the word in the process's text space at address ADDR. */ - PTRACE_PEEKTEXT, -#define PT_READ_I PTRACE_PEEKTEXT - - /* Return the word in the process's data space at address ADDR. */ - PTRACE_PEEKDATA, -#define PT_READ_D PTRACE_PEEKDATA - - /* Return the word in the process's user area at offset ADDR. */ - PTRACE_PEEKUSER, -#define PT_READ_U PTRACE_PEEKUSER - - /* Write the word DATA into the process's text space at address ADDR. */ - PTRACE_POKETEXT, -#define PT_WRITE_I PTRACE_POKETEXT - - /* Write the word DATA into the process's data space at address ADDR. */ - PTRACE_POKEDATA, -#define PT_WRITE_D PTRACE_POKEDATA - - /* Write the word DATA into the process's user space at offset ADDR. */ - PTRACE_POKEUSER, -#define PT_WRITE_U PTRACE_POKEUSER - - /* Continue the process. */ - PTRACE_CONT, -#define PT_CONTINUE PTRACE_CONT - - /* Kill the process. */ - PTRACE_KILL, -#define PT_KILL PTRACE_KILL - - /* Single step the process. - This is not supported on all machines. */ - PTRACE_SINGLESTEP, -#define PT_STEP PTRACE_SINGLESTEP - - /* Attach to a process that is already running. */ - PTRACE_ATTACH, -#define PT_ATTACH PTRACE_ATTACH - - /* Detach from a process attached to with PTRACE_ATTACH. */ - PTRACE_DETACH, -#define PT_DETACH PTRACE_DETACH - - /* Get the process's registers (not including floating-point registers) - and put them in the `struct regs' (see ) at ADDR. */ - PTRACE_GETREGS = 12, - - /* Set the process's registers (not including floating-point registers) - to the contents of the `struct regs' (see ) at ADDR. */ - PTRACE_SETREGS, - - /* Get the process's floating point registers and put them - in the `struct fp_status' (see ) at ADDR. */ - PTRACE_GETFPREGS = 14, - - /* Set the process's floating point registers to the contents - of the `struct fp_status' (see ) at ADDR. */ - PTRACE_SETFPREGS, - - /* Read DATA bytes from the process's data space at address ADDR. - Put the result starting at address ADDR2 in the caller's - address space. */ - PTRACE_READDATA = 16, - - /* Write DATA bytes from ADDR2 in the caller's address space into - the process's data space at address ADDR. */ - PTRACE_WRITEDATA, - - /* Read DATA bytes from the process's text space at address ADDR. - Put the result starting at address ADDR2 in the caller's - address space. */ - PTRACE_READTEXT = 18, - - /* Write DATA bytes from ADDR2 in the caller's address space into - the process's text space at address ADDR. */ - PTRACE_WRITETEXT, - - /* Read the floating-point accelerator unit registers and - put them into the `struct fpa_regs' (see ) at ADDR. */ - PTRACE_GETFPAREGS = 20, - - /* Write the floating-point accelerator unit registers from - the contents of the `struct fpa_regs' at ADDR. */ - PTRACE_SETFPAREGS, -}; - -/* Perform process tracing functions. REQUEST is one of the values - above, and determines the action to be taken. - For all requests except PTRACE_TRACEME, PID specifies the process to be - traced. - - PID and the other arguments described above for the various requests should - appear (those that are used for the particular request) as: - pid_t PID, void *ADDR, int DATA, void *ADDR2 - after REQUEST. */ -extern int ptrace __P ((enum __ptrace_request __request __DOTS)); - -__END_DECLS - -#endif /* ptrace.h */ diff --git a/stdio-common/Makefile b/stdio-common/Makefile index deb6f92214..d4a167580c 100644 --- a/stdio-common/Makefile +++ b/stdio-common/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. +# Copyright (C) 1991, 92, 93, 94, 95, 96 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 @@ -41,7 +41,7 @@ tests := tst-printf tstscanf test_rdwr test-popen tstgetln test-fseek \ xbug errnobug \ bug1 bug2 bug3 bug4 bug5 bug6 bug7 bug8 bug9 bug10 bug11 \ tfformat tiformat tstdiomisc \ - scanf1 scanf2 scanf3 scanf4 scanf5 scanf6 scanf7 scanf8 scanf9 + scanf1 scanf2 scanf3 scanf4 scanf5 scanf7 scanf8 scanf9 include ../Rules diff --git a/stdio-common/printf_fp.c b/stdio-common/printf_fp.c index 747491f012..15eb0b63ab 100644 --- a/stdio-common/printf_fp.c +++ b/stdio-common/printf_fp.c @@ -382,8 +382,9 @@ __printf_fp (FILE *fp, else { cy = __mpn_mul (tmp, scale, scalesize, - tens->array + 2, tens->arraysize - 2); - tmpsize = scalesize + tens->arraysize - 2; + &tens->array[_FPIO_CONST_OFFSET], + tens->arraysize - _FPIO_CONST_OFFSET); + tmpsize = scalesize + tens->arraysize - _FPIO_CONST_OFFSET; if (cy == 0) --tmpsize; } @@ -513,13 +514,15 @@ __printf_fp (FILE *fp, /* The __mpn_mul function expects the first argument to be bigger than the second. */ - if (fracsize < tens->arraysize - 2) - cy = __mpn_mul (tmp, &tens->array[2], tens->arraysize - 2, + if (fracsize < tens->arraysize - _FPIO_CONST_OFFSET) + cy = __mpn_mul (tmp, &tens->array[_FPIO_CONST_OFFSET], + tens->arraysize - _FPIO_CONST_OFFSET, frac, fracsize); else cy = __mpn_mul (tmp, frac, fracsize, - &tens->array[2], tens->arraysize - 2); - tmpsize = fracsize + tens->arraysize - 2; + &tens->array[_FPIO_CONST_OFFSET], + tens->arraysize - _FPIO_CONST_OFFSET); + tmpsize = fracsize + tens->arraysize - _FPIO_CONST_OFFSET; if (cy == 0) --tmpsize; @@ -536,11 +539,12 @@ __printf_fp (FILE *fp, if (cnt_h <= BITS_PER_MP_LIMB - 4) { topval[0] = 0; - topval[1] = 10 << (BITS_PER_MP_LIMB - 4 - cnt_h); + topval[1] + = ((mp_limb) 10) << (BITS_PER_MP_LIMB - 4 - cnt_h); } else { - topval[0] = 10 << (BITS_PER_MP_LIMB - 4); + topval[0] = ((mp_limb) 10) << (BITS_PER_MP_LIMB - 4); topval[1] = 0; (void) __mpn_lshift (topval, topval, 2, BITS_PER_MP_LIMB - cnt_h); diff --git a/stdio-common/tstscanf.c b/stdio-common/tstscanf.c index 53d4b0ac47..738b25a65e 100644 --- a/stdio-common/tstscanf.c +++ b/stdio-common/tstscanf.c @@ -31,6 +31,10 @@ DEFUN(main, (argc, argv), int argc AND char **argv) { char buf[BUFSIZ]; FILE *in = stdin, *out = stdout; + int x; + + if (sscanf ("0", "%d", &x) != 1) + exit (EXIT_FAILURE); if (argc == 2 && !strcmp (argv[1], "-opipe")) { diff --git a/stdlib/fpioconst.h b/stdlib/fpioconst.h index 8edbdccb17..309660ced6 100644 --- a/stdlib/fpioconst.h +++ b/stdlib/fpioconst.h @@ -1,5 +1,5 @@ /* Header file for constants used in floating point <-> decimal conversions. -Copyright (C) 1995 Free Software Foundation, Inc. +Copyright (C) 1995, 1996 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 @@ -48,5 +48,12 @@ struct mp_power }; extern const struct mp_power _fpioconst_pow10[LDBL_MAX_10_EXP_LOG + 1]; +/* The constants in the array `_fpioconst_pow10' have an offset. */ +#if BITS_PER_MP_LIMB == 32 +# define _FPIO_CONST_OFFSET 2 +#else +# define _FPIO_CONST_OFFSET 1 +#endif + #endif /* fpioconst.h */ diff --git a/stdlib/strtod.c b/stdlib/strtod.c index 1a2d1aaf38..1a663ba3ab 100644 --- a/stdlib/strtod.c +++ b/stdlib/strtod.c @@ -65,10 +65,10 @@ extern FLOAT MPN2FLOAT (mp_srcptr mpn, int exponent, int negative); /* Definitions according to limb size used. */ #if BITS_PER_MP_LIMB == 32 # define MAX_DIG_PER_LIMB 9 -# define MAX_FAC_PER_LIMB 1000000000L +# define MAX_FAC_PER_LIMB 1000000000UL #elif BITS_PER_MP_LIMB == 64 # define MAX_DIG_PER_LIMB 19 -# define MAX_FAC_PER_LIMB 10000000000000000000L +# define MAX_FAC_PER_LIMB 10000000000000000000UL #else # error "mp_limb size " BITS_PER_MP_LIMB "not accounted for" #endif @@ -84,7 +84,7 @@ static const mp_limb _tens_in_limb[MAX_DIG_PER_LIMB + 1] = , 10000000000, 100000000000, 1000000000000, 10000000000000, 100000000000000, 1000000000000000, 10000000000000000, 100000000000000000, - 1000000000000000000, 10000000000000000000 + 1000000000000000000, 10000000000000000000U #endif #if BITS_PER_MP_LIMB > 64 #error "Need to expand tens_in_limb table to" MAX_DIG_PER_LIMB @@ -128,7 +128,7 @@ round_and_return (mp_limb *retval, int exponent, int negative, return 0.0; } - more_bits |= (round_limb & ((1 << round_bit) - 1)) != 0; + more_bits |= (round_limb & ((((mp_limb) 1) << round_bit) - 1)) != 0; if (shift == MANT_DIG) /* This is a special case to handle the very seldom case where the mantissa will be empty after the shift. */ @@ -166,25 +166,26 @@ round_and_return (mp_limb *retval, int exponent, int negative, exponent = MIN_EXP - 2; } - if ((round_limb & (1 << round_bit)) != 0 + if ((round_limb & (((mp_limb) 1) << round_bit)) != 0 && (more_bits || (retval[0] & 1) != 0 - || (round_limb & ((1 << round_bit) - 1)) != 0)) + || (round_limb & ((((mp_limb) 1) << round_bit) - 1)) != 0)) { mp_limb cy = __mpn_add_1 (retval, retval, RETURN_LIMB_SIZE, 1); if (((MANT_DIG % BITS_PER_MP_LIMB) == 0 && cy) || ((MANT_DIG % BITS_PER_MP_LIMB) != 0 && (retval[RETURN_LIMB_SIZE - 1] - & (1 << (MANT_DIG % BITS_PER_MP_LIMB))) != 0)) + & (((mp_limb) 1) << (MANT_DIG % BITS_PER_MP_LIMB))) != 0)) { ++exponent; (void) __mpn_rshift (retval, retval, RETURN_LIMB_SIZE, 1); - retval[RETURN_LIMB_SIZE - 1] |= 1 << ((MANT_DIG - 1) - % BITS_PER_MP_LIMB); + retval[RETURN_LIMB_SIZE - 1] + |= ((mp_limb) 1) << ((MANT_DIG - 1) % BITS_PER_MP_LIMB); } else if (exponent == MIN_EXP - 2 && (retval[RETURN_LIMB_SIZE - 1] - & (1 << ((MANT_DIG - 1) % BITS_PER_MP_LIMB))) != 0) + & (((mp_limb) 1) << ((MANT_DIG - 1) % BITS_PER_MP_LIMB))) + != 0) /* The number was denormalized but now normalized. */ exponent = MIN_EXP - 1; } @@ -628,14 +629,15 @@ INTERNAL (STRTOF) (nptr, endptr, group) /* FIXME: not the whole multiplication has to be done. If we have the needed number of bits we only need the information whether more non-zero bits follow. */ - if (numsize >= ttab->arraysize - 2) + if (numsize >= ttab->arraysize - _FPIO_CONST_OFFSET) cy = __mpn_mul (pdest, psrc, numsize, - &ttab->array[2], ttab->arraysize - 2); + &ttab->array[_FPIO_CONST_OFFSET], + ttab->arraysize - _FPIO_CONST_OFFSET); else - cy = __mpn_mul (pdest, &ttab->array[2], - ttab->arraysize - 2, + cy = __mpn_mul (pdest, &ttab->array[_FPIO_CONST_OFFSET], + ttab->arraysize - _FPIO_CONST_OFFSET, psrc, numsize); - numsize += ttab->arraysize - 2; + numsize += ttab->arraysize - _FPIO_CONST_OFFSET; if (cy == 0) --numsize; SWAP (psrc, pdest); @@ -788,13 +790,17 @@ INTERNAL (STRTOF) (nptr, endptr, group) neg_exp ^= expbit; if (densize == 0) - memcpy (psrc, &ttab->array[2], - (densize = ttab->arraysize - 2) * sizeof (mp_limb)); + { + densize = ttab->arraysize - _FPIO_CONST_OFFSET; + memcpy (psrc, &ttab->array[_FPIO_CONST_OFFSET], + densize * sizeof (mp_limb)); + } else { - cy = __mpn_mul (pdest, &ttab->array[2], ttab->arraysize - 2, + cy = __mpn_mul (pdest, &ttab->array[_FPIO_CONST_OFFSET], + ttab->arraysize - _FPIO_CONST_OFFSET, psrc, densize); - densize += ttab->arraysize - 2; + densize += ttab->arraysize - _FPIO_CONST_OFFSET; if (cy == 0) --densize; SWAP (psrc, pdest); diff --git a/sys/ptrace.h b/sys/ptrace.h deleted file mode 100644 index f099a4e912..0000000000 --- a/sys/ptrace.h +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/sysdeps/generic/dl-sysdep.c b/sysdeps/generic/dl-sysdep.c index 5337ed6936..546993dbd1 100644 --- a/sysdeps/generic/dl-sysdep.c +++ b/sysdeps/generic/dl-sysdep.c @@ -1,5 +1,5 @@ /* Operating system support for run-time dynamic linker. Generic Unix version. -Copyright (C) 1995 Free Software Foundation, Inc. +Copyright (C) 1995, 96 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 @@ -27,6 +27,7 @@ extern int _dl_argc; extern char **_dl_argv; extern char **_environ; extern void _start (void); +extern int _dl_secure; Elf32_Addr _dl_sysdep_start (void **start_argptr, diff --git a/sysdeps/generic/machine-gmon.h b/sysdeps/generic/machine-gmon.h new file mode 100644 index 0000000000..24101f34f0 --- /dev/null +++ b/sysdeps/generic/machine-gmon.h @@ -0,0 +1,44 @@ +/* Machine-dependent definitions for profiling support. Generic GCC 2 version. +Copyright (C) 1996 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. */ + +/* GCC version 2 gives us a perfect magical function to get + just the information we need: + void *__builtin_return_address (unsigned int N) + returns the return address of the frame N frames up. */ + +#if __GNUC__ < 2 + #error "This file uses __builtin_return_address, a GCC 2 extension." +#endif + +#include +#ifndef NO_UNDERSCORES +/* The asm symbols for C functions are `_function'. + The canonical name for the counter function is `mcount', no _. */ +void _mcount (void) asm ("mcount"); +#endif + +#define _MCOUNT_DECL(frompc, selfpc) \ +static inline void mcount_internal (frompc, selfpc) + +#define MCOUNT \ +void _mcount (void) \ +{ \ + mcount_internal ((u_long) __builtin_return_address (0), \ + (u_long) __builtin_return_address (1)); \ +} diff --git a/sysdeps/generic/sys/ptrace.h b/sysdeps/generic/sys/ptrace.h new file mode 100644 index 0000000000..a342e62d64 --- /dev/null +++ b/sysdeps/generic/sys/ptrace.h @@ -0,0 +1,138 @@ +/* `ptrace' debugger support interface. Generic version; constants are common. +Copyright (C) 1991, 1992 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, 1992 Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#ifndef _PTRACE_H + +#define _PTRACE_H 1 +#include + +__BEGIN_DECLS + + +/* Type of the REQUEST argument to `ptrace.' */ +enum __ptrace_request +{ + /* Indicate that the process making this request should be traced. + All signals received by this process can be intercepted by its + parent, and its parent can use the other `ptrace' requests. */ + PTRACE_TRACEME = 0, +#define PT_TRACE_ME PTRACE_TRACEME + + /* Return the word in the process's text space at address ADDR. */ + PTRACE_PEEKTEXT, +#define PT_READ_I PTRACE_PEEKTEXT + + /* Return the word in the process's data space at address ADDR. */ + PTRACE_PEEKDATA, +#define PT_READ_D PTRACE_PEEKDATA + + /* Return the word in the process's user area at offset ADDR. */ + PTRACE_PEEKUSER, +#define PT_READ_U PTRACE_PEEKUSER + + /* Write the word DATA into the process's text space at address ADDR. */ + PTRACE_POKETEXT, +#define PT_WRITE_I PTRACE_POKETEXT + + /* Write the word DATA into the process's data space at address ADDR. */ + PTRACE_POKEDATA, +#define PT_WRITE_D PTRACE_POKEDATA + + /* Write the word DATA into the process's user space at offset ADDR. */ + PTRACE_POKEUSER, +#define PT_WRITE_U PTRACE_POKEUSER + + /* Continue the process. */ + PTRACE_CONT, +#define PT_CONTINUE PTRACE_CONT + + /* Kill the process. */ + PTRACE_KILL, +#define PT_KILL PTRACE_KILL + + /* Single step the process. + This is not supported on all machines. */ + PTRACE_SINGLESTEP, +#define PT_STEP PTRACE_SINGLESTEP + + /* Attach to a process that is already running. */ + PTRACE_ATTACH, +#define PT_ATTACH PTRACE_ATTACH + + /* Detach from a process attached to with PTRACE_ATTACH. */ + PTRACE_DETACH, +#define PT_DETACH PTRACE_DETACH + + /* Get the process's registers (not including floating-point registers) + and put them in the `struct regs' (see ) at ADDR. */ + PTRACE_GETREGS = 12, + + /* Set the process's registers (not including floating-point registers) + to the contents of the `struct regs' (see ) at ADDR. */ + PTRACE_SETREGS, + + /* Get the process's floating point registers and put them + in the `struct fp_status' (see ) at ADDR. */ + PTRACE_GETFPREGS = 14, + + /* Set the process's floating point registers to the contents + of the `struct fp_status' (see ) at ADDR. */ + PTRACE_SETFPREGS, + + /* Read DATA bytes from the process's data space at address ADDR. + Put the result starting at address ADDR2 in the caller's + address space. */ + PTRACE_READDATA = 16, + + /* Write DATA bytes from ADDR2 in the caller's address space into + the process's data space at address ADDR. */ + PTRACE_WRITEDATA, + + /* Read DATA bytes from the process's text space at address ADDR. + Put the result starting at address ADDR2 in the caller's + address space. */ + PTRACE_READTEXT = 18, + + /* Write DATA bytes from ADDR2 in the caller's address space into + the process's text space at address ADDR. */ + PTRACE_WRITETEXT, + + /* Read the floating-point accelerator unit registers and + put them into the `struct fpa_regs' (see ) at ADDR. */ + PTRACE_GETFPAREGS = 20, + + /* Write the floating-point accelerator unit registers from + the contents of the `struct fpa_regs' at ADDR. */ + PTRACE_SETFPAREGS, +}; + +/* Perform process tracing functions. REQUEST is one of the values + above, and determines the action to be taken. + For all requests except PTRACE_TRACEME, PID specifies the process to be + traced. + + PID and the other arguments described above for the various requests should + appear (those that are used for the particular request) as: + pid_t PID, void *ADDR, int DATA, void *ADDR2 + after REQUEST. */ +extern int ptrace __P ((enum __ptrace_request __request __DOTS)); + +__END_DECLS + +#endif /* ptrace.h */ diff --git a/sysdeps/ieee754/mpn2ldbl.c b/sysdeps/ieee754/mpn2ldbl.c index 9142f97e89..03774a33c3 100644 --- a/sysdeps/ieee754/mpn2ldbl.c +++ b/sysdeps/ieee754/mpn2ldbl.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996 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 @@ -23,20 +23,20 @@ Cambridge, MA 02139, USA. */ /* Convert a multi-precision integer of the needed number of bits (64 for long double) and an integral power of two to a `long double' in IEEE854 - extended-precision format. */ + extended-precision format. */ long double __mpn_construct_long_double (mp_srcptr frac_ptr, int expt, int sign) { union ieee854_long_double u; - + u.ieee.negative = sign; u.ieee.exponent = expt + IEEE854_LONG_DOUBLE_BIAS; #if BITS_PER_MP_LIMB == 32 u.ieee.mantissa1 = frac_ptr[0]; u.ieee.mantissa0 = frac_ptr[1]; #elif BITS_PER_MP_LIMB == 64 - u.ieee.mantissa1 = frac_ptr[0] & ((1 << 32) - 1); + u.ieee.mantissa1 = frac_ptr[0] & ((1L << 32) - 1); u.ieee.mantissa0 = frac_ptr[0] >> 32; #else #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for" diff --git a/sysdeps/m68k/bsd-_setjmp.S b/sysdeps/m68k/bsd-_setjmp.S index db777cf67d..69aa7de04c 100644 --- a/sysdeps/m68k/bsd-_setjmp.S +++ b/sysdeps/m68k/bsd-_setjmp.S @@ -23,7 +23,7 @@ Cambridge, MA 02139, USA. */ #include -#if defined (MOTOROLA_SYNTAX) || defined (ELF_SYNTAX) +#ifdef MOTOROLA_SYNTAX #define d0 %d0 #define d1 %d1 #define PUSH(reg) move.l reg, -(%sp) diff --git a/sysdeps/m68k/bsd-setjmp.S b/sysdeps/m68k/bsd-setjmp.S index c1794978bc..c853516824 100644 --- a/sysdeps/m68k/bsd-setjmp.S +++ b/sysdeps/m68k/bsd-setjmp.S @@ -23,7 +23,7 @@ Cambridge, MA 02139, USA. */ #include -#if defined (MOTOROLA_SYNTAX) || defined (ELF_SYNTAX) +#ifdef MOTOROLA_SYNTAX #define d0 %d0 #define d1 %d1 #define PUSH(reg) move.l reg, -(%sp) diff --git a/sysdeps/posix/utimes.c b/sysdeps/posix/utimes.c index 2c92803cbc..ba2f0bde9d 100644 --- a/sysdeps/posix/utimes.c +++ b/sysdeps/posix/utimes.c @@ -31,8 +31,8 @@ __utimes (const char *file, struct timeval tvp[2]) if (tvp) { times = &buf; - times->actime = tvp[0].tv_sec + tvp[0].tv_usec / 1000; - times->modtime = tvp[1].tv_sec + tvp[1].tv_usec / 1000; + times->actime = tvp[0].tv_sec + tvp[0].tv_usec / 1000000; + times->modtime = tvp[1].tv_sec + tvp[1].tv_usec / 1000000; } else times = NULL; diff --git a/sysdeps/stub/msync.c b/sysdeps/stub/msync.c index 01cc4dd410..a01c474422 100644 --- a/sysdeps/stub/msync.c +++ b/sysdeps/stub/msync.c @@ -25,7 +25,7 @@ Cambridge, MA 02139, USA. */ unpredictable before this is done. */ int -msync (caddr_t addr, size_t len, int flags) +msync (caddr_t addr, size_t len) { errno = ENOSYS; return -1; diff --git a/sysdeps/unix/Makefile b/sysdeps/unix/Makefile index fd4166615d..0496cf8272 100644 --- a/sysdeps/unix/Makefile +++ b/sysdeps/unix/Makefile @@ -295,9 +295,11 @@ $(objpfx)sysd-syscalls: $(..)sysdeps/unix/make-syscalls.sh \ # This syscall objects depend on s-proto.d, which is generated to # specify dependencies generated syscalls with have on headers. ifdef subdir +ifndef no_deps # These deps use file names relative to a subdir, so don't # include them in the parent directory. -include $(objpfx)s-proto.d endif +endif endif diff --git a/sysdeps/unix/closedir.c b/sysdeps/unix/closedir.c index 6acbb62e87..5f1ac7439a 100644 --- a/sysdeps/unix/closedir.c +++ b/sysdeps/unix/closedir.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1993, 1995, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1993, 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 @@ -37,9 +37,9 @@ DEFUN(closedir, (dirp), DIR *dirp) return -1; } - fd = dirp->fd; + fd = dirp->__fd; - free ((PTR) dirp->data); + free ((PTR) dirp->__data); free ((PTR) dirp); return __close (fd); diff --git a/sysdeps/unix/dirstream.h b/sysdeps/unix/dirstream.h index 52d2337125..72fd67c722 100644 --- a/sysdeps/unix/dirstream.h +++ b/sysdeps/unix/dirstream.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1993, 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 @@ -20,7 +20,8 @@ Cambridge, MA 02139, USA. */ #define _DIRSTREAM_H 1 -#include +#define __need_size_t +#include /* Directory stream type. @@ -36,7 +37,7 @@ struct __dirstream size_t __offset; /* Current offset into the block. */ size_t __size; /* Total valid data in the block. */ - off_t pos; /* Position of next entry to read. */ + struct dirent __entry; /* Returned by `readdir'. */ }; #define _DIR_dirfd(dirp) ((dirp)->__fd) diff --git a/sysdeps/unix/opendir.c b/sysdeps/unix/opendir.c index 31111e8c50..5cd620676a 100644 --- a/sysdeps/unix/opendir.c +++ b/sysdeps/unix/opendir.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1992, 1993, 1994, 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 @@ -16,6 +16,7 @@ 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. */ +#include #include #include #include @@ -27,11 +28,12 @@ Cambridge, MA 02139, USA. */ #include #include +#include "direct.h" /* This file defines `struct direct'. */ #include "dirstream.h" /* Open a directory stream on NAME. */ DIR * -opendir (const char *name) +DEFUN(opendir, (name), CONST char *name) { DIR *dirp; struct stat statbuf; @@ -60,7 +62,7 @@ opendir (const char *name) goto lose; } - dirp = (DIR *) calloc (1, sizeof (DIR)); /* Zero-fill. */ + dirp = (DIR *) calloc (1, sizeof (DIR) + NAME_MAX); /* Zero-fill. */ if (dirp == NULL) lose: { @@ -71,24 +73,24 @@ opendir (const char *name) } #ifdef _STATBUF_ST_BLKSIZE - if (statbuf.st_blksize < sizeof (struct dirent)) - dirp->allocation = sizeof (struct dirent); + if (statbuf.st_blksize < sizeof (struct direct)) + dirp->__allocation = sizeof (struct direct); else - dirp->allocation = statbuf.st_blksize; + dirp->__allocation = statbuf.st_blksize; #else - dirp->allocation = (BUFSIZ < sizeof (struct dirent) ? - sizeof (struct dirent) : BUFSIZ); + dirp->__allocation = (BUFSIZ < sizeof (struct direct) ? + sizeof (struct direct) : BUFSIZ); #endif - dirp->data = (char *) malloc (dirp->allocation); - if (dirp->data == NULL) + dirp->__data = (char *) malloc (dirp->__allocation); + if (dirp->__data == NULL) { int save = errno; - free (dirp); + free ((PTR) dirp); (void) __close (fd); errno = save; return NULL; } - dirp->fd = fd; + dirp->__fd = fd; return dirp; } diff --git a/sysdeps/unix/readdir.c b/sysdeps/unix/readdir.c index b1d7e43231..1842948a35 100644 --- a/sysdeps/unix/readdir.c +++ b/sysdeps/unix/readdir.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1992, 1993, 1994, 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 @@ -77,8 +77,6 @@ DEFUN(readdir, (dirp), DIR *dirp) p = memchr ((PTR) dp->d_name, '\0', D_NAMLEN (dp) + 1); d->d_namlen = (p != NULL) ? p - dp->d_name : D_NAMLEN (dp); memcpy (d->d_name, dp->d_name, d->d_namlen + 1); - d->d_type = DT_UNKNOWN; - d->d_reclen = &d->d_name[d->d_namlen + 1] - (char *) d; return d; } } diff --git a/sysdeps/unix/seekdir.c b/sysdeps/unix/seekdir.c index 02390d7854..018f697c21 100644 --- a/sysdeps/unix/seekdir.c +++ b/sysdeps/unix/seekdir.c @@ -27,7 +27,7 @@ Cambridge, MA 02139, USA. */ void DEFUN(seekdir, (dirp, pos), DIR *dirp AND __off_t pos) { - (void) __lseek(dirp->fd, pos, SEEK_SET); - dirp->size = 0; - dirp->offset = 0; + (void) __lseek(dirp->__fd, pos, SEEK_SET); + dirp->__size = 0; + dirp->__offset = 0; } diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index c96d0827e3..79334e6425 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -1,7 +1,9 @@ ifeq ($(subdir), math) sysdep_routines += setfpucw extra-objs += ieee-fpucw.o +headers += fpu_control.h install-lib += libieee.a +non-lib.a += libieee.a $(objpfx)libieee.a: $(objpfx)ieee-fpucw.o rm -f $@ @@ -22,10 +24,6 @@ sysdep_routines += adjtimex headers += sys/timex.h endif -ifeq ($(subdir), sysvipc) -sysdep_routines += ipc -endif - ifeq ($(subdir), socket) headers += sys/socketcall.h endif diff --git a/sysdeps/unix/sysv/linux/direct.h b/sysdeps/unix/sysv/linux/direct.h deleted file mode 100644 index ef88147d81..0000000000 --- a/sysdeps/unix/sysv/linux/direct.h +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright (C) 1992, 1993 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. */ - -#ifndef _BSDDIR_H -#define _BSDDIR_H 1 - -#include - -/* This is what system V calls a "struct dirent". */ - -struct direct - { - unsigned long int d_fileno; - long int d_off; - unsigned short int d_reclen; - char d_name[NAME_MAX + 1]; - }; - -#include - -/* We calculate the length of the name by taking the length of the whole - `struct direct' record, subtracting the size of everything before the - name, and subtracting one for the terminating null. */ - -#define D_NAMLEN(d) \ - ((d)->d_reclen - offsetof (struct direct, d_name) - 1) - -#endif diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.S b/sysdeps/unix/sysv/linux/i386/sysdep.S index 42f4854797..0130ad02a9 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.S +++ b/sysdeps/unix/sysv/linux/i386/sysdep.S @@ -23,8 +23,15 @@ Cambridge, MA 02139, USA. */ it somewhere else. ...and this place is here. */ -.comm errno,4,4 + .bss + .globl errno + .type errno,@object + .size errno,4 +errno: .space 4 + .globl _errno + .type _errno,@object _errno = errno /* This name is expected by hj libc.so.5 startup code. */ + .text /* The following code is not used at all in the shared library. The PIC system call stubs set errno themselves. */ diff --git a/sysdeps/unix/sysv/linux/m68k/fpu_control.h b/sysdeps/unix/sysv/linux/m68k/fpu_control.h index 0bbbb08916..0b3623d9a3 100644 --- a/sysdeps/unix/sysv/linux/m68k/fpu_control.h +++ b/sysdeps/unix/sysv/linux/m68k/fpu_control.h @@ -95,7 +95,7 @@ typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__))); /* Macros for accessing the hardware control word. */ #define _FPU_GETCW(cw) __asm__ ("fmove%.l %!, %0" : "=dm" (cw)) -#define _FPU_SETCW(cw) __asm__ ("fmove%.l %0, %!" : "dm" (cw)) +#define _FPU_SETCW(cw) __asm__ volatile ("fmove%.l %0, %!" : : "dm" (cw)) /* Default control word set at startup. */ extern fpu_control_t __fpu_control; diff --git a/sysdeps/unix/sysv/linux/resourcebits.h b/sysdeps/unix/sysv/linux/resourcebits.h new file mode 100644 index 0000000000..9cd6ab46d8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/resourcebits.h @@ -0,0 +1,50 @@ +/* Bit values for resource limits. Linux version. +Copyright (C) 1996 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. */ + +/* These are the values for Linux. */ + +/* Kinds of resource limit. */ +enum __rlimit_resource + { + /* Per-process CPU limit, in seconds. */ + RLIMIT_CPU, + /* Largest file that can be created, in bytes. */ + RLIMIT_FSIZE, + /* Maximum size of data segment, in bytes. */ + RLIMIT_DATA, + /* Maximum size of stack segment, in bytes. */ + RLIMIT_STACK, + /* Largest core file that can be created, in bytes. */ + RLIMIT_CORE, + /* Largest resident set size, in bytes. + This affects swapping; processes that are exceeding their + resident set size will be more likely to have physical memory + taken from them. */ + RLIMIT_RSS, + /* Number of processes. */ + RLIMIT_NPROC, + /* Number of open files. */ + RLIMIT_OFILE, + RLIMIT_NOFILE = RLIMIT_OFILE, /* Another name for the same thing. */ + /* Locked-in-memory address space. */ + RLIMIT_MEMLOCK, + + RLIMIT_NLIMITS, /* Number of limit flavors. */ + RLIM_NLIMITS = RLIMIT_NLIMITS /* Traditional name for same. */ + }; diff --git a/sysdeps/unix/sysv/linux/sys/ptrace.h b/sysdeps/unix/sysv/linux/sys/ptrace.h new file mode 100644 index 0000000000..51d3317af2 --- /dev/null +++ b/sysdeps/unix/sysv/linux/sys/ptrace.h @@ -0,0 +1,98 @@ +/* `ptrace' debugger support interface. Linux version. +Copyright (C) 1996 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, 1992 Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#ifndef _SYS_PTRACE_H +#define _SYS_PTRACE_H + +#include + +__BEGIN_DECLS + +/* Type of the REQUEST argument to `ptrace.' */ +enum __ptrace_request +{ + /* Indicate that the process making this request should be traced. + All signals received by this process can be intercepted by its + parent, and its parent can use the other `ptrace' requests. */ + PTRACE_TRACEME = 0, +#define PT_TRACE_ME PTRACE_TRACEME + + /* Return the word in the process's text space at address ADDR. */ + PTRACE_PEEKTEXT, +#define PT_READ_I PTRACE_PEEKTEXT + + /* Return the word in the process's data space at address ADDR. */ + PTRACE_PEEKDATA, +#define PT_READ_D PTRACE_PEEKDATA + + /* Return the word in the process's user area at offset ADDR. */ + PTRACE_PEEKUSER, +#define PT_READ_U PTRACE_PEEKUSER + + /* Write the word DATA into the process's text space at address ADDR. */ + PTRACE_POKETEXT, +#define PT_WRITE_I PTRACE_POKETEXT + + /* Write the word DATA into the process's data space at address ADDR. */ + PTRACE_POKEDATA, +#define PT_WRITE_D PTRACE_POKEDATA + + /* Write the word DATA into the process's user area at offset ADDR. */ + PTRACE_POKEUSER, +#define PT_WRITE_U PTRACE_POKEUSER + + /* Continue the process. */ + PTRACE_CONT, +#define PT_CONTINUE PTRACE_CONT + + /* Kill the process. */ + PTRACE_KILL, +#define PT_KILL PTRACE_KILL + + /* Single step the process. + This is not supported on all machines. */ + PTRACE_SINGLESTEP, +#define PT_STEP PTRACE_SINGLESTEP + + /* Attach to a process that is already running. */ + PTRACE_ATTACH = 0x10, +#define PT_ATTACH PTRACE_ATTACH + + /* Detach from a process attached to with PTRACE_ATTACH. */ + PTRACE_DETACH, +#define PT_DETACH PTRACE_DETACH + + /* Continue and stop at the next (return from) syscall. */ + PTRACE_SYSCALL = 24, +}; + +/* Perform process tracing functions. REQUEST is one of the values + above, and determines the action to be taken. + For all requests except PTRACE_TRACEME, PID specifies the process to be + traced. + + PID and the other arguments described above for the various requests should + appear (those that are used for the particular request) as: + pid_t PID, void *ADDR, int DATA, void *ADDR2 + after REQUEST. */ +extern int ptrace __P ((enum __ptrace_request __request __DOTS)); + +__END_DECLS + +#endif /* sys/ptrace.h */ diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index 7ed7282a70..9601f0651e 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -2,8 +2,11 @@ adjtimex adjtime adjtimex 1 __adjtimex fork - fork 0 __fork fork +getegid - getegid 0 __getegid getegid +geteuid - geteuid 0 __geteuid geteuid getpgid - getpgid 1 getpgid getpgrp - getpgrp 0 getpgrp +getppid - getppid 0 __getppid getppid getsid - getsid 1 getsid gtty - gtty 2 gtty ipc msgget ipc 5 __ipc @@ -13,6 +16,7 @@ mount - mount 5 __mount mount munlock - munlock 2 __munlock munlock munlockall - munlockall 0 __munlockall munlockall pipe - pipe 1 __pipe pipe +reboot - reboot 3 reboot s_ptrace ptrace ptrace 4 __syscall_ptrace setpgid - setpgid 2 setpgid sigpending - sigpending 1 sigpending diff --git a/sysdeps/unix/sysv/linux/sysconf.c b/sysdeps/unix/sysv/linux/sysconf.c index e366d04a8b..447cfd46ae 100644 --- a/sysdeps/unix/sysv/linux/sysconf.c +++ b/sysdeps/unix/sysv/linux/sysconf.c @@ -1 +1,197 @@ -#include +/* Copyright (C) 1991, 1993, 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. */ + +#include +#include +#include +#include +#include +#include +#include + +extern size_t EXFUN(__getpagesize, (NOARGS)); + +/* Get the value of the system variable NAME. */ +long int +DEFUN(__sysconf, (name), int name) +{ + switch (name) + { + default: + errno = EINVAL; + return -1; + + case _SC_ARG_MAX: +#ifdef ARG_MAX + return ARG_MAX; +#else + return -1; +#endif + + case _SC_CHILD_MAX: +#ifdef CHILD_MAX + return CHILD_MAX; +#else + return -1; +#endif + + case _SC_CLK_TCK: +#ifdef CLK_TCK + return CLK_TCK; +#else + return 60; +#endif + + case _SC_NGROUPS_MAX: +#ifdef NGROUPS_MAX + return NGROUPS_MAX; +#else + return -1; +#endif + + case _SC_OPEN_MAX: + return OPEN_MAX; + + case _SC_STREAM_MAX: +#ifdef STREAM_MAX + return STREAM_MAX; +#else + return FOPEN_MAX; +#endif + + case _SC_TZNAME_MAX: + return __tzname_max (); + + case _SC_JOB_CONTROL: +#ifdef _POSIX_JOB_CONTROL + return 1; +#else + return -1; +#endif + case _SC_SAVED_IDS: +#ifdef _POSIX_SAVED_IDS + return 1; +#else + return -1; +#endif + case _SC_VERSION: + return _POSIX_VERSION; + + case _SC_PAGESIZE: + return __getpagesize (); + + case _SC_BC_BASE_MAX: +#ifdef BC_BASE_MAX + return BC_BASE_MAX; +#else + return -1; +#endif + + case _SC_BC_DIM_MAX: +#ifdef BC_DIM_MAX + return BC_DIM_MAX; +#else + return -1; +#endif + + case _SC_BC_SCALE_MAX: +#ifdef BC_SCALE_MAX + return BC_SCALE_MAX; +#else + return -1; +#endif + + case _SC_BC_STRING_MAX: +#ifdef BC_STRING_MAX + return BC_STRING_MAX; +#else + return -1; +#endif + + case _SC_EQUIV_CLASS_MAX: +#ifdef EQUIV_CLASS_MAX + return EQUIV_CLASS_MAX; +#else + return -1; +#endif + + case _SC_EXPR_NEST_MAX: +#ifdef EXPR_NEST_MAX + return EXPR_NEST_MAX; +#else + return -1; +#endif + + case _SC_LINE_MAX: +#ifdef LINE_MAX + return LINE_MAX; +#else + return -1; +#endif + + case _SC_RE_DUP_MAX: +#ifdef RE_DUP_MAX + return RE_DUP_MAX; +#else + return -1; +#endif + + + case _SC_2_VERSION: + /* This is actually supposed to return the version + of the 1003.2 utilities on the system {POSIX2_VERSION}. */ + return _POSIX2_C_VERSION; + + case _SC_2_C_BIND: +#ifdef _POSIX2_C_BIND + return _POSIX2_C_BIND; +#else + return -1; +#endif + + case _SC_2_C_DEV: +#ifdef _POSIX2_C_DEV + return _POSIX2_C_DEV; +#else + return -1; +#endif + + case _SC_2_FORT_DEV: +#ifdef _POSIX2_FORT_DEV + return _POSIX2_FORT_DEV; +#else + return -1; +#endif + + case _SC_2_LOCALEDEF: +#ifdef _POSIX2_LOCALEDEF + return _POSIX2_LOCALEDEF; +#else + return -1; +#endif + + case _SC_2_SW_DEV: +#ifdef _POSIX2_SW_DEV + return _POSIX2_SW_DEV; +#else + return -1; +#endif + } +} + +weak_alias (__sysconf, sysconf) diff --git a/sysdeps/unix/telldir.c b/sysdeps/unix/telldir.c index c319d71df7..2b611b0fca 100644 --- a/sysdeps/unix/telldir.c +++ b/sysdeps/unix/telldir.c @@ -36,8 +36,8 @@ DEFUN(telldir, (dirp), DIR *dirp) return (off_t) -1; } - pos = __lseek(dirp->fd, (off_t) 0, SEEK_CUR); + pos = __lseek(dirp->__fd, (off_t) 0, SEEK_CUR); if (pos == (off_t) -1) return (off_t) -1; - return pos + dirp->size - dirp->offset; + return pos + dirp->__size - dirp->__offset; } diff --git a/time/Makefile b/time/Makefile index f1685e2ce9..566f29682d 100644 --- a/time/Makefile +++ b/time/Makefile @@ -42,6 +42,8 @@ distribute := $(distribute) $(tzfiles) leapseconds pacificnew install-sbin := zic zdump +all: # Make this the default target; it will be defined in Rules. + include ../Makeconfig # Get objpfx defined so we can use it below. # zonenames uses this variable. -- cgit 1.4.1