1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

Sun Feb 18 15:08:10 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>

* sysdeps/posix/utimes.c (__utimes): There are 1000000 usecs in a
	sec.

Sun Feb 18 13:56:00 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf/Makefile, time/Makefile: Make `all' the default target.

Mon Feb 19 18:09:04 1996  Roland McGrath  <roland@charlie-brown.gnu.ai.mit.edu>

	* 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  <schwab@issan.informatik.uni-dortmund.de>

	* 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  <davidm@AZStarNet.com>

	* 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  <drepper@gnu.ai.mit.edu>

	* 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.
This commit is contained in:
Roland McGrath
1996-02-19 23:14:44 +00:00
parent be10a86854
commit bfc04a9ff1
37 changed files with 574 additions and 187 deletions

View File

@ -1,3 +1,50 @@
Sun Feb 18 15:08:10 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/posix/utimes.c (__utimes): There are 1000000 usecs in a
sec.
Sun Feb 18 13:56:00 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elf/Makefile, time/Makefile: Make `all' the default target.
Mon Feb 19 18:09:04 1996 Roland McGrath <roland@charlie-brown.gnu.ai.mit.edu>
* 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 <schwab@issan.informatik.uni-dortmund.de>
* 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 <davidm@AZStarNet.com>
* 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 <drepper@gnu.ai.mit.edu>
* 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 <roland@charlie-brown.gnu.ai.mit.edu> Mon Feb 19 15:30:26 1996 Roland McGrath <roland@charlie-brown.gnu.ai.mit.edu>
* stdio-common/tstscanf.c (main): Add check for "0" as %d. * stdio-common/tstscanf.c (main): Add check for "0" as %d.

View File

@ -1,6 +1,6 @@
# Make the TAGS files. # 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. # This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or # The GNU C Library is free software; you can redistribute it and/or
@ -98,7 +98,7 @@ ifdef subdir
ifdef tags_sources ifdef tags_sources
$(ETAGS) -o $@ $^ $(ETAGS) -o $@ $^
else else
# No sources. Create a dummy file. # No sources. Create a dummy file.
touch $@ touch $@
endif # tags_sources endif # tags_sources
else # parent else # parent
@ -114,37 +114,3 @@ $(subdirs:%=%/TAGS):
$(MAKE) -C $(@D) no_deps=t $(@F) $(MAKE) -C $(@D) no_deps=t $(@F)
endif # subdir 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

View File

@ -621,10 +621,6 @@ check: tests
TAGS: distinfo $(..)MakeTAGS TAGS: distinfo $(..)MakeTAGS
$(MAKE) $(addprefix -f ,$^) $@ $(MAKE) $(addprefix -f ,$^) $@
$(..)po/%.pot: distinfo $(..)MakeTAGS
$(MAKE) $(addprefix -f ,$^) $@
.PHONY: echo-headers .PHONY: echo-headers
echo-headers: echo-headers:
@echo $(headers) @echo $(headers)

View File

@ -29,8 +29,25 @@ __BEGIN_DECLS
#include <gnu/types.h> #include <gnu/types.h>
/* This file defines `struct dirent'. */
#include <direntry.h> /* 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) #if defined(__USE_BSD) || defined(__USE_MISC)
#define d_ino d_fileno /* Backward compatibility. */ #define d_ino d_fileno /* Backward compatibility. */

View File

@ -33,6 +33,8 @@ rtld-routines := rtld $(addprefix dl-,minimal load lookup object reloc \
distribute = $(rtld-routines:=.c) dynamic-link.h do-rel.h \ distribute = $(rtld-routines:=.c) dynamic-link.h do-rel.h \
soinit.c sofini.c ldd.sh.in linux-compat.c soinit.c sofini.c ldd.sh.in linux-compat.c
all: # Make this the default target; it will be defined in Rules.
include ../Makeconfig include ../Makeconfig
ifeq (yes,$(build-shared)) ifeq (yes,$(build-shared))

View File

@ -22,7 +22,7 @@
subdir := gmon subdir := gmon
headers := sys/gmon.h headers := sys/gmon.h
distribute := machine-gmon.h
routines := gmon mcount profil routines := gmon mcount profil
include ../Rules include ../Rules

View File

@ -38,6 +38,10 @@ static char sccsid[] = "@(#)mcount.c 8.1 (Berkeley) 6/4/93";
#include <sys/param.h> #include <sys/param.h>
#include <sys/gmon.h> #include <sys/gmon.h>
/* 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 * mcount is called on entry to each function compiled with the profiling
* switch set. _mcount(), which is declared in a machine-dependent way * 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 * both frompcindex and frompc. Any reasonable, modern compiler will
* perform this optimization. * perform this optimization.
*/ */
#if 0
_MCOUNT_DECL(frompc, selfpc) /* _mcount; may be static, inline, etc */ _MCOUNT_DECL(frompc, selfpc) /* _mcount; may be static, inline, etc */
register u_long frompc, selfpc; 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 <sysdep.h>
#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 u_short *frompcindex;
register struct tostruct *top, *prevtop; register struct tostruct *top, *prevtop;
register struct gmonparam *p; register struct gmonparam *p;
@ -195,10 +175,8 @@ overflow:
return; return;
} }
#if 0 /* Obsolete with __builtin_return_address. */
/* /*
* Actual definition of mcount function. Defined in <machine/profile.h>, * Actual definition of mcount function. Defined in <machine/profile.h>,
* which is included by <sys/gmon.h>. * which is included by <sys/gmon.h>.
*/ */
MCOUNT MCOUNT
#endif

View File

@ -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. # This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or # 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 \ xbug errnobug \
bug1 bug2 bug3 bug4 bug5 bug6 bug7 bug8 bug9 bug10 bug11 \ bug1 bug2 bug3 bug4 bug5 bug6 bug7 bug8 bug9 bug10 bug11 \
tfformat tiformat tstdiomisc \ tfformat tiformat tstdiomisc \
scanf1 scanf2 scanf3 scanf4 scanf5 scanf6 scanf7 scanf8 scanf9 scanf1 scanf2 scanf3 scanf4 scanf5 scanf7 scanf8 scanf9
include ../Rules include ../Rules

View File

@ -382,8 +382,9 @@ __printf_fp (FILE *fp,
else else
{ {
cy = __mpn_mul (tmp, scale, scalesize, cy = __mpn_mul (tmp, scale, scalesize,
tens->array + 2, tens->arraysize - 2); &tens->array[_FPIO_CONST_OFFSET],
tmpsize = scalesize + tens->arraysize - 2; tens->arraysize - _FPIO_CONST_OFFSET);
tmpsize = scalesize + tens->arraysize - _FPIO_CONST_OFFSET;
if (cy == 0) if (cy == 0)
--tmpsize; --tmpsize;
} }
@ -513,13 +514,15 @@ __printf_fp (FILE *fp,
/* The __mpn_mul function expects the first argument to be /* The __mpn_mul function expects the first argument to be
bigger than the second. */ bigger than the second. */
if (fracsize < tens->arraysize - 2) if (fracsize < tens->arraysize - _FPIO_CONST_OFFSET)
cy = __mpn_mul (tmp, &tens->array[2], tens->arraysize - 2, cy = __mpn_mul (tmp, &tens->array[_FPIO_CONST_OFFSET],
tens->arraysize - _FPIO_CONST_OFFSET,
frac, fracsize); frac, fracsize);
else else
cy = __mpn_mul (tmp, frac, fracsize, cy = __mpn_mul (tmp, frac, fracsize,
&tens->array[2], tens->arraysize - 2); &tens->array[_FPIO_CONST_OFFSET],
tmpsize = fracsize + tens->arraysize - 2; tens->arraysize - _FPIO_CONST_OFFSET);
tmpsize = fracsize + tens->arraysize - _FPIO_CONST_OFFSET;
if (cy == 0) if (cy == 0)
--tmpsize; --tmpsize;
@ -536,11 +539,12 @@ __printf_fp (FILE *fp,
if (cnt_h <= BITS_PER_MP_LIMB - 4) if (cnt_h <= BITS_PER_MP_LIMB - 4)
{ {
topval[0] = 0; 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 else
{ {
topval[0] = 10 << (BITS_PER_MP_LIMB - 4); topval[0] = ((mp_limb) 10) << (BITS_PER_MP_LIMB - 4);
topval[1] = 0; topval[1] = 0;
(void) __mpn_lshift (topval, topval, 2, (void) __mpn_lshift (topval, topval, 2,
BITS_PER_MP_LIMB - cnt_h); BITS_PER_MP_LIMB - cnt_h);

View File

@ -31,6 +31,10 @@ DEFUN(main, (argc, argv), int argc AND char **argv)
{ {
char buf[BUFSIZ]; char buf[BUFSIZ];
FILE *in = stdin, *out = stdout; FILE *in = stdin, *out = stdout;
int x;
if (sscanf ("0", "%d", &x) != 1)
exit (EXIT_FAILURE);
if (argc == 2 && !strcmp (argv[1], "-opipe")) if (argc == 2 && !strcmp (argv[1], "-opipe"))
{ {

View File

@ -1,5 +1,5 @@
/* Header file for constants used in floating point <-> decimal conversions. /* 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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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]; 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 */ #endif /* fpioconst.h */

View File

@ -65,10 +65,10 @@ extern FLOAT MPN2FLOAT (mp_srcptr mpn, int exponent, int negative);
/* Definitions according to limb size used. */ /* Definitions according to limb size used. */
#if BITS_PER_MP_LIMB == 32 #if BITS_PER_MP_LIMB == 32
# define MAX_DIG_PER_LIMB 9 # define MAX_DIG_PER_LIMB 9
# define MAX_FAC_PER_LIMB 1000000000L # define MAX_FAC_PER_LIMB 1000000000UL
#elif BITS_PER_MP_LIMB == 64 #elif BITS_PER_MP_LIMB == 64
# define MAX_DIG_PER_LIMB 19 # define MAX_DIG_PER_LIMB 19
# define MAX_FAC_PER_LIMB 10000000000000000000L # define MAX_FAC_PER_LIMB 10000000000000000000UL
#else #else
# error "mp_limb size " BITS_PER_MP_LIMB "not accounted for" # error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
#endif #endif
@ -84,7 +84,7 @@ static const mp_limb _tens_in_limb[MAX_DIG_PER_LIMB + 1] =
, 10000000000, 100000000000, , 10000000000, 100000000000,
1000000000000, 10000000000000, 100000000000000, 1000000000000, 10000000000000, 100000000000000,
1000000000000000, 10000000000000000, 100000000000000000, 1000000000000000, 10000000000000000, 100000000000000000,
1000000000000000000, 10000000000000000000 1000000000000000000, 10000000000000000000U
#endif #endif
#if BITS_PER_MP_LIMB > 64 #if BITS_PER_MP_LIMB > 64
#error "Need to expand tens_in_limb table to" MAX_DIG_PER_LIMB #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; 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) if (shift == MANT_DIG)
/* This is a special case to handle the very seldom case where /* This is a special case to handle the very seldom case where
the mantissa will be empty after the shift. */ 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; 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 && (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); mp_limb cy = __mpn_add_1 (retval, retval, RETURN_LIMB_SIZE, 1);
if (((MANT_DIG % BITS_PER_MP_LIMB) == 0 && cy) || if (((MANT_DIG % BITS_PER_MP_LIMB) == 0 && cy) ||
((MANT_DIG % BITS_PER_MP_LIMB) != 0 && ((MANT_DIG % BITS_PER_MP_LIMB) != 0 &&
(retval[RETURN_LIMB_SIZE - 1] (retval[RETURN_LIMB_SIZE - 1]
& (1 << (MANT_DIG % BITS_PER_MP_LIMB))) != 0)) & (((mp_limb) 1) << (MANT_DIG % BITS_PER_MP_LIMB))) != 0))
{ {
++exponent; ++exponent;
(void) __mpn_rshift (retval, retval, RETURN_LIMB_SIZE, 1); (void) __mpn_rshift (retval, retval, RETURN_LIMB_SIZE, 1);
retval[RETURN_LIMB_SIZE - 1] |= 1 << ((MANT_DIG - 1) retval[RETURN_LIMB_SIZE - 1]
% BITS_PER_MP_LIMB); |= ((mp_limb) 1) << ((MANT_DIG - 1) % BITS_PER_MP_LIMB);
} }
else if (exponent == MIN_EXP - 2 else if (exponent == MIN_EXP - 2
&& (retval[RETURN_LIMB_SIZE - 1] && (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. */ /* The number was denormalized but now normalized. */
exponent = MIN_EXP - 1; exponent = MIN_EXP - 1;
} }
@ -628,14 +629,15 @@ INTERNAL (STRTOF) (nptr, endptr, group)
/* FIXME: not the whole multiplication has to be done. /* FIXME: not the whole multiplication has to be done.
If we have the needed number of bits we only need the If we have the needed number of bits we only need the
information whether more non-zero bits follow. */ 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, cy = __mpn_mul (pdest, psrc, numsize,
&ttab->array[2], ttab->arraysize - 2); &ttab->array[_FPIO_CONST_OFFSET],
ttab->arraysize - _FPIO_CONST_OFFSET);
else else
cy = __mpn_mul (pdest, &ttab->array[2], cy = __mpn_mul (pdest, &ttab->array[_FPIO_CONST_OFFSET],
ttab->arraysize - 2, ttab->arraysize - _FPIO_CONST_OFFSET,
psrc, numsize); psrc, numsize);
numsize += ttab->arraysize - 2; numsize += ttab->arraysize - _FPIO_CONST_OFFSET;
if (cy == 0) if (cy == 0)
--numsize; --numsize;
SWAP (psrc, pdest); SWAP (psrc, pdest);
@ -788,13 +790,17 @@ INTERNAL (STRTOF) (nptr, endptr, group)
neg_exp ^= expbit; neg_exp ^= expbit;
if (densize == 0) 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 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); psrc, densize);
densize += ttab->arraysize - 2; densize += ttab->arraysize - _FPIO_CONST_OFFSET;
if (cy == 0) if (cy == 0)
--densize; --densize;
SWAP (psrc, pdest); SWAP (psrc, pdest);

View File

@ -1 +0,0 @@
#include <misc/sys/ptrace.h>

View File

@ -1,5 +1,5 @@
/* Operating system support for run-time dynamic linker. Generic Unix version. /* 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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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 **_dl_argv;
extern char **_environ; extern char **_environ;
extern void _start (void); extern void _start (void);
extern int _dl_secure;
Elf32_Addr Elf32_Addr
_dl_sysdep_start (void **start_argptr, _dl_sysdep_start (void **start_argptr,

View File

@ -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 <sysdep.h>
#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)); \
}

View File

@ -1,4 +1,5 @@
/* Copyright (C) 1991, 1992 Free Software Foundation, Inc. /* `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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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 /* 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 long double) and an integral power of two to a `long double' in IEEE854
extended-precision format. */ extended-precision format. */
long double long double
__mpn_construct_long_double (mp_srcptr frac_ptr, int expt, int sign) __mpn_construct_long_double (mp_srcptr frac_ptr, int expt, int sign)
{ {
union ieee854_long_double u; union ieee854_long_double u;
u.ieee.negative = sign; u.ieee.negative = sign;
u.ieee.exponent = expt + IEEE854_LONG_DOUBLE_BIAS; u.ieee.exponent = expt + IEEE854_LONG_DOUBLE_BIAS;
#if BITS_PER_MP_LIMB == 32 #if BITS_PER_MP_LIMB == 32
u.ieee.mantissa1 = frac_ptr[0]; u.ieee.mantissa1 = frac_ptr[0];
u.ieee.mantissa0 = frac_ptr[1]; u.ieee.mantissa0 = frac_ptr[1];
#elif BITS_PER_MP_LIMB == 64 #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; u.ieee.mantissa0 = frac_ptr[0] >> 32;
#else #else
#error "mp_limb size " BITS_PER_MP_LIMB "not accounted for" #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"

View File

@ -23,7 +23,7 @@ Cambridge, MA 02139, USA. */
#include <sysdep.h> #include <sysdep.h>
#if defined (MOTOROLA_SYNTAX) || defined (ELF_SYNTAX) #ifdef MOTOROLA_SYNTAX
#define d0 %d0 #define d0 %d0
#define d1 %d1 #define d1 %d1
#define PUSH(reg) move.l reg, -(%sp) #define PUSH(reg) move.l reg, -(%sp)

View File

@ -23,7 +23,7 @@ Cambridge, MA 02139, USA. */
#include <sysdep.h> #include <sysdep.h>
#if defined (MOTOROLA_SYNTAX) || defined (ELF_SYNTAX) #ifdef MOTOROLA_SYNTAX
#define d0 %d0 #define d0 %d0
#define d1 %d1 #define d1 %d1
#define PUSH(reg) move.l reg, -(%sp) #define PUSH(reg) move.l reg, -(%sp)

View File

@ -31,8 +31,8 @@ __utimes (const char *file, struct timeval tvp[2])
if (tvp) if (tvp)
{ {
times = &buf; times = &buf;
times->actime = tvp[0].tv_sec + tvp[0].tv_usec / 1000; times->actime = tvp[0].tv_sec + tvp[0].tv_usec / 1000000;
times->modtime = tvp[1].tv_sec + tvp[1].tv_usec / 1000; times->modtime = tvp[1].tv_sec + tvp[1].tv_usec / 1000000;
} }
else else
times = NULL; times = NULL;

View File

@ -25,7 +25,7 @@ Cambridge, MA 02139, USA. */
unpredictable before this is done. */ unpredictable before this is done. */
int int
msync (caddr_t addr, size_t len, int flags) msync (caddr_t addr, size_t len)
{ {
errno = ENOSYS; errno = ENOSYS;
return -1; return -1;

View File

@ -295,9 +295,11 @@ $(objpfx)sysd-syscalls: $(..)sysdeps/unix/make-syscalls.sh \
# This syscall objects depend on s-proto.d, which is generated to # This syscall objects depend on s-proto.d, which is generated to
# specify dependencies generated syscalls with have on headers. # specify dependencies generated syscalls with have on headers.
ifdef subdir ifdef subdir
ifndef no_deps
# These deps use file names relative to a subdir, so don't # These deps use file names relative to a subdir, so don't
# include them in the parent directory. # include them in the parent directory.
-include $(objpfx)s-proto.d -include $(objpfx)s-proto.d
endif endif
endif
endif endif

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -37,9 +37,9 @@ DEFUN(closedir, (dirp), DIR *dirp)
return -1; return -1;
} }
fd = dirp->fd; fd = dirp->__fd;
free ((PTR) dirp->data); free ((PTR) dirp->__data);
free ((PTR) dirp); free ((PTR) dirp);
return __close (fd); return __close (fd);

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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 #define _DIRSTREAM_H 1
#include <sys/types.h> #define __need_size_t
#include <stddef.h>
/* Directory stream type. /* Directory stream type.
@ -36,7 +37,7 @@ struct __dirstream
size_t __offset; /* Current offset into the block. */ size_t __offset; /* Current offset into the block. */
size_t __size; /* Total valid data in 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) #define _DIR_dirfd(dirp) ((dirp)->__fd)

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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, not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */ Cambridge, MA 02139, USA. */
#include <ansidecl.h>
#include <errno.h> #include <errno.h>
#include <limits.h> #include <limits.h>
#include <stddef.h> #include <stddef.h>
@ -27,11 +28,12 @@ Cambridge, MA 02139, USA. */
#include <unistd.h> #include <unistd.h>
#include <stdio.h> #include <stdio.h>
#include "direct.h" /* This file defines `struct direct'. */
#include "dirstream.h" #include "dirstream.h"
/* Open a directory stream on NAME. */ /* Open a directory stream on NAME. */
DIR * DIR *
opendir (const char *name) DEFUN(opendir, (name), CONST char *name)
{ {
DIR *dirp; DIR *dirp;
struct stat statbuf; struct stat statbuf;
@ -60,7 +62,7 @@ opendir (const char *name)
goto lose; goto lose;
} }
dirp = (DIR *) calloc (1, sizeof (DIR)); /* Zero-fill. */ dirp = (DIR *) calloc (1, sizeof (DIR) + NAME_MAX); /* Zero-fill. */
if (dirp == NULL) if (dirp == NULL)
lose: lose:
{ {
@ -71,24 +73,24 @@ opendir (const char *name)
} }
#ifdef _STATBUF_ST_BLKSIZE #ifdef _STATBUF_ST_BLKSIZE
if (statbuf.st_blksize < sizeof (struct dirent)) if (statbuf.st_blksize < sizeof (struct direct))
dirp->allocation = sizeof (struct dirent); dirp->__allocation = sizeof (struct direct);
else else
dirp->allocation = statbuf.st_blksize; dirp->__allocation = statbuf.st_blksize;
#else #else
dirp->allocation = (BUFSIZ < sizeof (struct dirent) ? dirp->__allocation = (BUFSIZ < sizeof (struct direct) ?
sizeof (struct dirent) : BUFSIZ); sizeof (struct direct) : BUFSIZ);
#endif #endif
dirp->data = (char *) malloc (dirp->allocation); dirp->__data = (char *) malloc (dirp->__allocation);
if (dirp->data == NULL) if (dirp->__data == NULL)
{ {
int save = errno; int save = errno;
free (dirp); free ((PTR) dirp);
(void) __close (fd); (void) __close (fd);
errno = save; errno = save;
return NULL; return NULL;
} }
dirp->fd = fd; dirp->__fd = fd;
return dirp; return dirp;
} }

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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); p = memchr ((PTR) dp->d_name, '\0', D_NAMLEN (dp) + 1);
d->d_namlen = (p != NULL) ? p - dp->d_name : D_NAMLEN (dp); d->d_namlen = (p != NULL) ? p - dp->d_name : D_NAMLEN (dp);
memcpy (d->d_name, dp->d_name, d->d_namlen + 1); 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; return d;
} }
} }

View File

@ -27,7 +27,7 @@ Cambridge, MA 02139, USA. */
void void
DEFUN(seekdir, (dirp, pos), DIR *dirp AND __off_t pos) DEFUN(seekdir, (dirp, pos), DIR *dirp AND __off_t pos)
{ {
(void) __lseek(dirp->fd, pos, SEEK_SET); (void) __lseek(dirp->__fd, pos, SEEK_SET);
dirp->size = 0; dirp->__size = 0;
dirp->offset = 0; dirp->__offset = 0;
} }

View File

@ -1,7 +1,9 @@
ifeq ($(subdir), math) ifeq ($(subdir), math)
sysdep_routines += setfpucw sysdep_routines += setfpucw
extra-objs += ieee-fpucw.o extra-objs += ieee-fpucw.o
headers += fpu_control.h
install-lib += libieee.a install-lib += libieee.a
non-lib.a += libieee.a
$(objpfx)libieee.a: $(objpfx)ieee-fpucw.o $(objpfx)libieee.a: $(objpfx)ieee-fpucw.o
rm -f $@ rm -f $@
@ -22,10 +24,6 @@ sysdep_routines += adjtimex
headers += sys/timex.h headers += sys/timex.h
endif endif
ifeq ($(subdir), sysvipc)
sysdep_routines += ipc
endif
ifeq ($(subdir), socket) ifeq ($(subdir), socket)
headers += sys/socketcall.h headers += sys/socketcall.h
endif endif

View File

@ -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 <limits.h>
/* 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 <stddef.h>
/* 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

View File

@ -23,8 +23,15 @@ Cambridge, MA 02139, USA. */
it somewhere else. it somewhere else.
...and this place is here. */ ...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. */ _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 following code is not used at all in the shared library.
The PIC system call stubs set errno themselves. */ The PIC system call stubs set errno themselves. */

View File

@ -95,7 +95,7 @@ typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__)));
/* Macros for accessing the hardware control word. */ /* Macros for accessing the hardware control word. */
#define _FPU_GETCW(cw) __asm__ ("fmove%.l %!, %0" : "=dm" (cw)) #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. */ /* Default control word set at startup. */
extern fpu_control_t __fpu_control; extern fpu_control_t __fpu_control;

View File

@ -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. */
};

View File

@ -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 <features.h>
__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 */

View File

@ -2,8 +2,11 @@
adjtimex adjtime adjtimex 1 __adjtimex adjtimex adjtime adjtimex 1 __adjtimex
fork - fork 0 __fork fork fork - fork 0 __fork fork
getegid - getegid 0 __getegid getegid
geteuid - geteuid 0 __geteuid geteuid
getpgid - getpgid 1 getpgid getpgid - getpgid 1 getpgid
getpgrp - getpgrp 0 getpgrp getpgrp - getpgrp 0 getpgrp
getppid - getppid 0 __getppid getppid
getsid - getsid 1 getsid getsid - getsid 1 getsid
gtty - gtty 2 gtty gtty - gtty 2 gtty
ipc msgget ipc 5 __ipc ipc msgget ipc 5 __ipc
@ -13,6 +16,7 @@ mount - mount 5 __mount mount
munlock - munlock 2 __munlock munlock munlock - munlock 2 __munlock munlock
munlockall - munlockall 0 __munlockall munlockall munlockall - munlockall 0 __munlockall munlockall
pipe - pipe 1 __pipe pipe pipe - pipe 1 __pipe pipe
reboot - reboot 3 reboot
s_ptrace ptrace ptrace 4 __syscall_ptrace s_ptrace ptrace ptrace 4 __syscall_ptrace
setpgid - setpgid 2 setpgid setpgid - setpgid 2 setpgid
sigpending - sigpending 1 sigpending sigpending - sigpending 1 sigpending

View File

@ -1 +1,197 @@
#include <sysdeps/posix/sysconf.c> /* 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 <ansidecl.h>
#include <errno.h>
#include <limits.h>
#include <unistd.h>
#include <stddef.h>
#include <stdio.h>
#include <time.h>
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)

View File

@ -36,8 +36,8 @@ DEFUN(telldir, (dirp), DIR *dirp)
return (off_t) -1; 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) if (pos == (off_t) -1)
return (off_t) -1; return (off_t) -1;
return pos + dirp->size - dirp->offset; return pos + dirp->__size - dirp->__offset;
} }

View File

@ -42,6 +42,8 @@ distribute := $(distribute) $(tzfiles) leapseconds pacificnew
install-sbin := zic zdump 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. include ../Makeconfig # Get objpfx defined so we can use it below.
# zonenames uses this variable. # zonenames uses this variable.