1997-06-27 20:09  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/sys/quota.h: Add <asm/types.h>.
	Reported by a sun <asun@zoology.washington.edu>.

	* libc.map: Add _rpc_dtablesize.  Reported by Thorsten Kukuk.

	* db/makedb.c: Exit with error if number of option is incorrect.

	* math/Makefile (tests): Add test-fenv.
	* math/test-fenv.c: New file.  Test for exception handling functions.
	Written mainly by Andreas Jaeger.

	* sysdeps/i386/fpu/fraiseexcpt.c: Correct implementation.

	* sysdeps/mach/hurd/abi-tag.h: Set tag to 1 for Hurd and kernel
	compatibility version to 0.  Reported by Roland McGrath.

1997-06-27 18:49  Philip Blundell  <Philip.Blundell@pobox.com>

	* sysdeps/standalone/brk.c (__NONE_set_memvals): Correct typo.
	* sysdeps/standalone/arm/bits/errno.h: Add ENOTDIR.
	* sysdeps/stub/sys/param.h: Add definition of MAX and MIN.

1997-06-27 10:44  Fila Kolodny  <fila@ibi.com>

	* sysdeps/mach/hurd/dl-sysdep.c: Make _dl_sysdep_read_whole_file weak.

1997-06-27 00:51  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf/dl-open.c (_dl_open): Check versions of all newly loaded
	objects, including dependencies.

	* elf/dl-runtime.c (fixup): Always use version information if
	available.

1997-06-26 12:25  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/m68k/bits/nan.h: Renamed from sysdeps/m68k/nan.h.

1997-06-26 11:40  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* posix/regex.c (DEBUG_POP): Assume parameter to be pointer to
	int, not pointer to fail_stack_elt_t.
	(PUSH_FAILURE_POINT): Fix all formats in debugging messages.  Fix
	type of this_reg.
	(POP_FAILURE_POINT): Likewise.  Fix type of failure_id.
	(re_match_2_internal): Pass NULL, not 0, to PUSH_FAILURE_POINT.

1997-06-27 02:17  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/syscalls.list: Add quotactl.
	Reported by a sun.

	* manual/lgpl.texinfo: Update copyright.
This commit is contained in:
Ulrich Drepper 1997-06-27 23:09:40 +00:00
parent ae1025be40
commit bca973bcd9
18 changed files with 309 additions and 81 deletions

View File

@ -1,3 +1,57 @@
1997-06-27 20:09 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/sys/quota.h: Add <asm/types.h>.
Reported by a sun <asun@zoology.washington.edu>.
* libc.map: Add _rpc_dtablesize. Reported by Thorsten Kukuk.
* db/makedb.c: Exit with error if number of option is incorrect.
* math/Makefile (tests): Add test-fenv.
* math/test-fenv.c: New file. Test for exception handling functions.
Written mainly by Andreas Jaeger.
* sysdeps/i386/fpu/fraiseexcpt.c: Correct implementation.
* sysdeps/mach/hurd/abi-tag.h: Set tag to 1 for Hurd and kernel
compatibility version to 0. Reported by Roland McGrath.
1997-06-27 18:49 Philip Blundell <Philip.Blundell@pobox.com>
* sysdeps/standalone/brk.c (__NONE_set_memvals): Correct typo.
* sysdeps/standalone/arm/bits/errno.h: Add ENOTDIR.
* sysdeps/stub/sys/param.h: Add definition of MAX and MIN.
1997-06-27 10:44 Fila Kolodny <fila@ibi.com>
* sysdeps/mach/hurd/dl-sysdep.c: Make _dl_sysdep_read_whole_file weak.
1997-06-27 00:51 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elf/dl-open.c (_dl_open): Check versions of all newly loaded
objects, including dependencies.
* elf/dl-runtime.c (fixup): Always use version information if
available.
1997-06-26 12:25 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/m68k/bits/nan.h: Renamed from sysdeps/m68k/nan.h.
1997-06-26 11:40 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* posix/regex.c (DEBUG_POP): Assume parameter to be pointer to
int, not pointer to fail_stack_elt_t.
(PUSH_FAILURE_POINT): Fix all formats in debugging messages. Fix
type of this_reg.
(POP_FAILURE_POINT): Likewise. Fix type of failure_id.
(re_match_2_internal): Pass NULL, not 0, to PUSH_FAILURE_POINT.
1997-06-27 02:17 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/syscalls.list: Add quotactl.
Reported by a sun.
1997-06-26 21:50 Ulrich Drepper <drepper@cygnus.com>
* math/math.h: Move definition of macros for unordered comparison
@ -9,7 +63,7 @@
* Makerules: Move definition of load-map-file before use.
(lib%.so): Depend on load-map-file, not lib%-map.
* manual/lgpl.texinfo: Likewise.
* manual/lgpl.texinfo: Update copyright.
1997-06-24 09:40 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>

View File

@ -122,6 +122,7 @@ main (argc, argv)
error (0, 0, gettext ("wrong number of arguments"));
argp_help (&argp, stdout, ARGP_HELP_SEE,
program_invocation_short_name);
exit (1);
}
input_name = argv[remaining];
}

View File

@ -55,7 +55,7 @@ _dl_open (const char *file, int mode)
_dl_map_object_deps (new, NULL, 0, 0);
/* So far, so good. Now check the versions. */
(void) _dl_check_map_versions (new, 0);
(void) _dl_check_all_versions (new, 0);
/* Relocate the objects loaded. We do this in reverse order so that copy
relocs of earlier objects overwrite the data written by later objects. */

View File

@ -135,7 +135,7 @@ fixup (
#include "dynamic-link.h"
/* Perform the specified relocation. */
if (l->l_info[VERSYMIDX (DT_VERNEEDNUM)])
if (l->l_info[VERSYMIDX (DT_VERSYM)])
{
const ElfW(Half) * version =
(const ElfW(Half) *) (l->l_addr +

View File

@ -76,6 +76,7 @@ GLIBC_2.0 {
_IO_seekmark; _IO_unsave_markers; _IO_str_overflow;
_IO_str_underflow; _IO_str_init_static; _IO_str_init_readonly;
_IO_str_seekoff; _IO_str_pbackfail; _IO_list_all;
_rpc_dtablesize;
# all functions and variables in the normal name space
a*; b*; c*; d*; e*; f*; g*; h*; i*; j*; k*; l*; m*;

View File

@ -77,7 +77,7 @@ distribute += $(long-c-yes:=.c)
# Rules for the test suite.
tests = test-float test-double $(test-longdouble-$(long-double-fcts)) \
test-ifloat test-idouble test-matherr
test-ifloat test-idouble test-matherr test-fenv
# We do the `long double' tests only if this data type is available and
# distrinct from `double'.
#

164
math/test-fenv.c Normal file
View File

@ -0,0 +1,164 @@
/* Test for exception handling functions of libm */
#ifndef _GNU_SOURCE
# define _GNU_SOURCE
#endif
#include <complex.h>
#include <math.h>
#include <float.h>
#include <fenv.h>
#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
/*
Since not all architectures might define all exceptions, we define
a private set and map accordingly.
*/
#define NO_EXC 0
#define INEXACT_EXC 0x1
#define DIVBYZERO_EXC 0x2
#define UNDERFLOW_EXC 0x04
#define OVERFLOW_EXC 0x08
#define INVALID_EXC 0x10
#define ALL_EXC \
(INEXACT_EXC | DIVBYZERO_EXC | UNDERFLOW_EXC | OVERFLOW_EXC | \
INVALID_EXC)
static int count_errors;
/* Test whether a given exception was raised. */
static void
test_single_exception (short int exception,
short int exc_flag,
fexcept_t fe_flag,
const char *flag_name)
{
if (exception & exc_flag)
{
if (fetestexcept (fe_flag))
printf (" Pass: Exception \"%s\" is set\n", flag_name);
else
{
printf (" Fail: Exception \"%s\" is not set\n", flag_name);
++count_errors;
}
}
else
{
if (fetestexcept (fe_flag))
{
printf (" Fail: Exception \"%s\" is set\n", flag_name);
++count_errors;
}
else
{
printf (" Pass: Exception \"%s\" is not set\n", flag_name);
}
}
}
static void
test_exceptions (const char *test_name, short int exception)
{
printf ("Test: %s\n", test_name);
#ifdef FE_DIVBYZERO
test_single_exception (exception, DIVBYZERO_EXC, FE_DIVBYZERO,
"DIVBYZERO");
#endif
#ifdef FE_INVALID
test_single_exception (exception, INVALID_EXC, FE_INVALID,
"INVALID");
#endif
#ifdef FE_INEXACT
test_single_exception (exception, INEXACT_EXC, FE_INEXACT,
"INEXACT");
#endif
#ifdef FE_UNDERFLOW
test_single_exception (exception, UNDERFLOW_EXC, FE_UNDERFLOW,
"UNDERFLOW");
#endif
#ifdef FE_OVERFLOW
test_single_exception (exception, OVERFLOW_EXC, FE_OVERFLOW,
"OVERFLOW");
#endif
}
static void
set_single_exc (const char *test_name, int fe_exc, fexcept_t exception)
{
char str[200];
strcpy (str, test_name);
strcat (str, ": set flag, with rest not set");
feclearexcept (FE_ALL_EXCEPT);
feraiseexcept (exception);
test_exceptions (str, fe_exc);
strcpy (str, test_name);
strcat (str, ": clear flag, rest also unset");
feclearexcept (exception);
test_exceptions (str, NO_EXC);
strcpy (str, test_name);
strcat (str, ": set flag, with rest set");
feraiseexcept (FE_ALL_EXCEPT ^ exception);
feraiseexcept (exception);
test_exceptions (str, ALL_EXC);
strcpy (str, test_name);
strcat (str, ": clear flag, leave rest set");
feclearexcept (exception);
test_exceptions (str, ALL_EXC ^ fe_exc);
}
static void
fe_tests (void)
{
/* clear all exceptions and test if all are cleared */
feclearexcept (FE_ALL_EXCEPT);
test_exceptions ("feclearexcept (FE_ALL_EXCEPT) clears all exceptions",
NO_EXC);
/* raise all exceptions and test if all are raised */
feraiseexcept (FE_ALL_EXCEPT);
test_exceptions ("feraiseexcept (FE_ALL_EXCEPT) raises all exceptions",
ALL_EXC);
feclearexcept (FE_ALL_EXCEPT);
#ifdef FE_DIVBYZERO
set_single_exc ("Set/Clear FE_DIVBYZERO", DIVBYZERO_EXC, FE_DIVBYZERO);
#endif
#ifdef FE_INVALID
set_single_exc ("Set/Clear FE_INVALID", INVALID_EXC, FE_INVALID);
#endif
#ifdef FE_INEXACT
set_single_exc ("Set/Clear FE_INEXACT", INEXACT_EXC, FE_INEXACT);
#endif
#ifdef FE_UNDERFLOW
set_single_exc ("Set/Clear FE_UNDERFLOW", UNDERFLOW_EXC, FE_UNDERFLOW);
#endif
#ifdef FE_OVERFLOW
set_single_exc ("Set/Clear FE_OVERFLOW", OVERFLOW_EXC, FE_OVERFLOW);
#endif
}
int
main (void)
{
fe_tests ();
/* _LIB_VERSION = _SVID;*/
if (count_errors)
{
printf ("\n%d errors occured.\n", count_errors);
exit (1);
}
printf ("\n All tests passed successfully.\n");
exit (0);
}

View File

@ -1185,7 +1185,7 @@ typedef struct
/* Used to omit pushing failure point id's when we're not debugging. */
#ifdef DEBUG
#define DEBUG_PUSH PUSH_FAILURE_INT
#define DEBUG_POP(item_addr) (item_addr)->integer = POP_FAILURE_INT ()
#define DEBUG_POP(item_addr) *(item_addr) = POP_FAILURE_INT ()
#else
#define DEBUG_PUSH(item)
#define DEBUG_POP(item_addr)
@ -1209,7 +1209,7 @@ typedef struct
/* Can't be int, since there is not a shred of a guarantee that int \
is wide enough to hold a value of something to which pointer can \
be assigned */ \
s_reg_t this_reg; \
active_reg_t this_reg; \
\
DEBUG_STATEMENT (failure_id++); \
DEBUG_STATEMENT (nfailure_points_pushed++); \
@ -1217,7 +1217,7 @@ typedef struct
DEBUG_PRINT2 (" Before push, next avail: %d\n", (fail_stack).avail);\
DEBUG_PRINT2 (" size: %d\n", (fail_stack).size);\
\
DEBUG_PRINT2 (" slots needed: %d\n", NUM_FAILURE_ITEMS); \
DEBUG_PRINT2 (" slots needed: %ld\n", NUM_FAILURE_ITEMS); \
DEBUG_PRINT2 (" available: %d\n", REMAINING_AVAIL_SLOTS); \
\
/* Ensure we have enough space allocated for what we will push. */ \
@ -1238,16 +1238,17 @@ typedef struct
for (this_reg = lowest_active_reg; this_reg <= highest_active_reg; \
this_reg++) \
{ \
DEBUG_PRINT2 (" Pushing reg: %d\n", this_reg); \
DEBUG_PRINT2 (" Pushing reg: %lu\n", this_reg); \
DEBUG_STATEMENT (num_regs_pushed++); \
\
DEBUG_PRINT2 (" start: 0x%x\n", regstart[this_reg]); \
DEBUG_PRINT2 (" start: %p\n", regstart[this_reg]); \
PUSH_FAILURE_POINTER (regstart[this_reg]); \
\
DEBUG_PRINT2 (" end: 0x%x\n", regend[this_reg]); \
DEBUG_PRINT2 (" end: %p\n", regend[this_reg]); \
PUSH_FAILURE_POINTER (regend[this_reg]); \
\
DEBUG_PRINT2 (" info: 0x%x\n ", reg_info[this_reg]); \
DEBUG_PRINT2 (" info: %p\n ", \
reg_info[this_reg].word.pointer); \
DEBUG_PRINT2 (" match_null=%d", \
REG_MATCH_NULL_STRING_P (reg_info[this_reg])); \
DEBUG_PRINT2 (" active=%d", IS_ACTIVE (reg_info[this_reg])); \
@ -1259,17 +1260,17 @@ typedef struct
PUSH_FAILURE_ELT (reg_info[this_reg].word); \
} \
\
DEBUG_PRINT2 (" Pushing low active reg: %d\n", lowest_active_reg);\
DEBUG_PRINT2 (" Pushing low active reg: %ld\n", lowest_active_reg);\
PUSH_FAILURE_INT (lowest_active_reg); \
\
DEBUG_PRINT2 (" Pushing high active reg: %d\n", highest_active_reg);\
DEBUG_PRINT2 (" Pushing high active reg: %ld\n", highest_active_reg);\
PUSH_FAILURE_INT (highest_active_reg); \
\
DEBUG_PRINT2 (" Pushing pattern 0x%x:\n", pattern_place); \
DEBUG_PRINT2 (" Pushing pattern %p:\n", pattern_place); \
DEBUG_PRINT_COMPILED_PATTERN (bufp, pattern_place, pend); \
PUSH_FAILURE_POINTER (pattern_place); \
\
DEBUG_PRINT2 (" Pushing string 0x%x: `", string_place); \
DEBUG_PRINT2 (" Pushing string %p: `", string_place); \
DEBUG_PRINT_DOUBLE_STRING (string_place, string1, size1, string2, \
size2); \
DEBUG_PRINT1 ("'\n"); \
@ -1321,8 +1322,8 @@ typedef struct
#define POP_FAILURE_POINT(str, pat, low_reg, high_reg, regstart, regend, reg_info)\
{ \
DEBUG_STATEMENT (fail_stack_elt_t failure_id;) \
s_reg_t this_reg; \
DEBUG_STATEMENT (unsigned failure_id;) \
active_reg_t this_reg; \
const unsigned char *string_temp; \
\
assert (!FAIL_STACK_EMPTY ()); \
@ -1344,34 +1345,35 @@ typedef struct
if (string_temp != NULL) \
str = (const char *) string_temp; \
\
DEBUG_PRINT2 (" Popping string 0x%x: `", str); \
DEBUG_PRINT2 (" Popping string %p: `", str); \
DEBUG_PRINT_DOUBLE_STRING (str, string1, size1, string2, size2); \
DEBUG_PRINT1 ("'\n"); \
\
pat = (unsigned char *) POP_FAILURE_POINTER (); \
DEBUG_PRINT2 (" Popping pattern 0x%x:\n", pat); \
DEBUG_PRINT2 (" Popping pattern %p:\n", pat); \
DEBUG_PRINT_COMPILED_PATTERN (bufp, pat, pend); \
\
/* Restore register info. */ \
high_reg = (active_reg_t) POP_FAILURE_INT (); \
DEBUG_PRINT2 (" Popping high active reg: %d\n", high_reg); \
DEBUG_PRINT2 (" Popping high active reg: %ld\n", high_reg); \
\
low_reg = (active_reg_t) POP_FAILURE_INT (); \
DEBUG_PRINT2 (" Popping low active reg: %d\n", low_reg); \
DEBUG_PRINT2 (" Popping low active reg: %ld\n", low_reg); \
\
if (1) \
for (this_reg = high_reg; this_reg >= low_reg; this_reg--) \
{ \
DEBUG_PRINT2 (" Popping reg: %d\n", this_reg); \
DEBUG_PRINT2 (" Popping reg: %ld\n", this_reg); \
\
reg_info[this_reg].word = POP_FAILURE_ELT (); \
DEBUG_PRINT2 (" info: 0x%x\n", reg_info[this_reg]); \
DEBUG_PRINT2 (" info: %p\n", \
reg_info[this_reg].word.pointer); \
\
regend[this_reg] = (const char *) POP_FAILURE_POINTER (); \
DEBUG_PRINT2 (" end: 0x%x\n", regend[this_reg]); \
DEBUG_PRINT2 (" end: %p\n", regend[this_reg]); \
\
regstart[this_reg] = (const char *) POP_FAILURE_POINTER (); \
DEBUG_PRINT2 (" start: 0x%x\n", regstart[this_reg]); \
DEBUG_PRINT2 (" start: %p\n", regstart[this_reg]); \
} \
else \
{ \
@ -4824,7 +4826,7 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
DEBUG_PRINT1 ("EXECUTING dummy_failure_jump.\n");
/* It doesn't matter what we push for the string here. What
the code at `fail' tests is the value for the pattern. */
PUSH_FAILURE_POINT (0, 0, -2);
PUSH_FAILURE_POINT (NULL, NULL, -2);
goto unconditional_jump;
@ -4837,7 +4839,7 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
DEBUG_PRINT1 ("EXECUTING push_dummy_failure.\n");
/* See comments just above at `dummy_failure_jump' about the
two zeroes. */
PUSH_FAILURE_POINT (0, 0, -2);
PUSH_FAILURE_POINT (NULL, NULL, -2);
break;
/* Have to succeed matching what follows at least n times.

View File

@ -32,36 +32,59 @@ feraiseexcept (int excepts)
/* First: invalid exception. */
if ((FE_INVALID & excepts) != 0)
{
/* One example of a invalid operation is 0 * Infinity. */
double d = 0.0 * HUGE_VAL;
/* One example of a invalid operation is 0.0 / 0.0. */
double d;
__asm__ ("fldz; fdiv %%st, %%st(0); fwait" : "=t" (d));
(void) &d;
/* Now force the exception. */
__asm__ ("fwait");
}
/* Next: division by zero. */
if ((FE_DIVBYZERO & excepts) != 0)
{
double d;
__asm__ ("fld1; fldz; fdivp %%st, %%st(1); fwait" : "=t" (d));
__asm__ ("fldz; fld1; fdivp %%st, %%st(1); fwait" : "=t" (d));
(void) &d;
}
/* Next: overflow. */
if ((FE_OVERFLOW & excepts) != 0)
{
long double d = LDBL_MAX * LDBL_MAX;
(void) &d;
/* Now force the exception. */
/* There is no way to raise only the overflow flag. Do it the
hard way. */
fenv_t temp;
/* Bah, we have to clear selected exceptions. Since there is no
`fldsw' instruction we have to do it the hard way. */
__asm__ ("fnstenv %0" : "=m" (*&temp));
/* Set the relevant bits. */
temp.status_word |= FE_OVERFLOW;
/* Put the new data in effect. */
__asm__ ("fldenv %0" : : "m" (*&temp));
/* And raise the exception. */
__asm__ ("fwait");
}
/* Next: underflow. */
if ((FE_UNDERFLOW & excepts) != 0)
{
long double d = LDBL_MIN / 16.0;
(void) &d;
/* Now force the exception. */
/* There is no way to raise only the overflow flag. Do it the
hard way. */
fenv_t temp;
/* Bah, we have to clear selected exceptions. Since there is no
`fldsw' instruction we have to do it the hard way. */
__asm__ ("fnstenv %0" : "=m" (*&temp));
/* Set the relevant bits. */
temp.status_word |= FE_UNDERFLOW;
/* Put the new data in effect. */
__asm__ ("fldenv %0" : : "m" (*&temp));
/* And raise the exception. */
__asm__ ("fwait");
}
@ -69,7 +92,7 @@ feraiseexcept (int excepts)
if ((FE_INEXACT & excepts) != 0)
{
long double d;
__asm__ ("fld1; fldpi; fdivp %%st, %%st(1); fwait" : "=t" (d));
__asm__ ("fmul %%st, %%st(0); fwait" : "=t" (d) : "0" (LDBL_MAX));
(void) &d;
}
}

View File

@ -1,5 +1,12 @@
#define HURD_MAJOR_VERSION 0
#define HURD_MINOR_VERSION 2
#define ABI_HURD_TAG 1
#define ABI_TAG ((HURD_MAJOR_VERSION << 24) + \
(HURD_MINOR_VERSION << 16))
#define ABI_HURD_MAJOR 0
#define ABI_HURD_MINOR 0
#define ABI_HURD_PATCH 0
/* Don't use `|' in this expression, it is a comment character in the
assembler. */
#define ABI_TAG ((ABI_HURD_TAG << 24) + \
(ABI_HURD_MAJOR << 16) + \
(ABI_HURD_MINOR << 8) + \
(ABI_HURD_PATCH << 0))

View File

@ -665,6 +665,7 @@ _exit (int status)
/* Read the whole contents of FILE into new mmap'd space with given
protections. The size of the file is returned in SIZE. */
void *
weak_function
_dl_sysdep_read_whole_file (const char *file, size_t *size, int prot)
{
struct stat stat;

View File

@ -47,6 +47,7 @@
#define EPROTOTYPE 19
#define ESRCH 20
#define EPERM 21
#define ENOTDIR 22
#endif
#define __set_errno(val) errno = (val)

View File

@ -46,8 +46,10 @@ int __C_heap_size;
static
#endif
void
__NONE_set_memvals (argc, argv, envp),
int argc; char **argv; char **envp;
__NONE_set_memvals (argc, argv, envp)
int argc;
char **argv;
char **envp;
{
__rorig =

View File

@ -1,34 +0,0 @@
/* Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <errno.h>
#include <unistd.h>
/* Put the name of the current YP domain in no more than LEN bytes of NAME.
The result is null-terminated if LEN is large enough for the full
name and the terminator. */
int
getdomainname (name, len)
char *name;
size_t len;
{
__set_errno (ENOSYS);
return -1;
}
stub_warning (getdomainname)

View File

@ -8,3 +8,7 @@
#include <limits.h>
#define MAXSYMLINKS 1
/* Macros for min/max. */
#define MIN(a,b) (((a)<(b))?(a):(b))
#define MAX(a,b) (((a)>(b))?(a):(b))

View File

@ -1,2 +1,3 @@
/* The kernel header file contains all declarations and definitions. */
#include <asm/types.h>
#include <linux/quota.h>

View File

@ -32,6 +32,7 @@ pause - pause 0 __libc_pause pause
personality init-first personality 1 __personality personality
pipe - pipe 1 __pipe pipe
query_module EXTRA query_module 5 query_module
quotactl EXTRA quotactl 4 quotactl
s_getdents EXTRA getdents 3 __getdents
s_getpriority getpriority getpriority 2 __syscall_getpriority
s_poll poll poll 3 __syscall_poll