diff options
Diffstat (limited to 'sysdeps')
57 files changed, 1034 insertions, 94 deletions
diff --git a/sysdeps/generic/bits/environments.h b/sysdeps/generic/bits/environments.h new file mode 100644 index 0000000000..8ed19906b4 --- /dev/null +++ b/sysdeps/generic/bits/environments.h @@ -0,0 +1,35 @@ +/* Copyright (C) 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. */ + +#ifndef _UNISTD_H +# error "Never include this file directly. Use <unistd.h> instead" +#endif + +/* This header should define the following symbols under the described + situations. A value `1' means that the model is always supported, + `-1' means it is never supported. Undefined means it cannot be + statically decided. + + _XBS5_ILP32_OFF32 32bit int, long, pointers, and off_t type + _XBS5_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type + + _XBS5_LP64_OFF32 64bit long and pointers and 32bit off_t type + _XBS5_LPBIG_OFFBIG 64bit long and pointers and large off_t type +*/ + +#endif /* environments.h */ diff --git a/sysdeps/generic/inttypes.h b/sysdeps/generic/inttypes.h new file mode 100644 index 0000000000..c5a74b8d2d --- /dev/null +++ b/sysdeps/generic/inttypes.h @@ -0,0 +1 @@ +#error "This file must be written based on the data typs sizes of the target" diff --git a/sysdeps/generic/mmap64.c b/sysdeps/generic/mmap64.c new file mode 100644 index 0000000000..c0e886867a --- /dev/null +++ b/sysdeps/generic/mmap64.c @@ -0,0 +1,48 @@ +/* Copyright (C) 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 <sys/mman.h> +#include <sys/types.h> + +/* Map addresses starting near ADDR and extending for LEN bytes. From + OFFSET into the file FD describes according to PROT and FLAGS. If ADDR + is nonzero, it is the desired mapping address. If the MAP_FIXED bit is + set in FLAGS, the mapping will be at ADDR exactly (which must be + page-aligned); otherwise the system chooses a convenient nearby address. + The return value is the actual mapping address chosen or MAP_FAILED + for errors (in which case `errno' is set). A successful `mmap' call + deallocates any previous mapping for the affected region. */ + +__ptr_t +__mmap64 (__ptr_t addr, size_t len, int prot, int flags, int fd, + __off64_t offset) +{ + off_t small_offset = (off_t) offset; + + if (small_offset != offset) + { + /* We cannot do this since the offset is too large. */ + __set_errno (EOVERFLOW); + return MAP_FAILED; + } + + return __mmap (addr, len, prot, flags, fd, small_offset); +} + +weak_alias (__mmap64, mmap64) diff --git a/sysdeps/generic/setrlimit64.c b/sysdeps/generic/setrlimit64.c index 97329c58d8..57c5da44c1 100644 --- a/sysdeps/generic/setrlimit64.c +++ b/sysdeps/generic/setrlimit64.c @@ -43,4 +43,3 @@ setrlimit64 (resource, rlimits) } stub_warning (setrlimit64) -#include <stub-tag.h> diff --git a/sysdeps/generic/strtoimax.c b/sysdeps/generic/strtoimax.c new file mode 100644 index 0000000000..f1de70f320 --- /dev/null +++ b/sysdeps/generic/strtoimax.c @@ -0,0 +1 @@ +#error "The correct implementation must be chosen based on the `intmax_t' type" diff --git a/sysdeps/generic/strtoumax.c b/sysdeps/generic/strtoumax.c new file mode 100644 index 0000000000..508cb19f8c --- /dev/null +++ b/sysdeps/generic/strtoumax.c @@ -0,0 +1 @@ +#error "The correct implementation must be chosen based on the `uintmax_t' type" diff --git a/sysdeps/generic/sys/mman.h b/sysdeps/generic/sys/mman.h index f8ca3f03ee..f6e0196f70 100644 --- a/sysdeps/generic/sys/mman.h +++ b/sysdeps/generic/sys/mman.h @@ -100,6 +100,8 @@ extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot, __asm__ ("mmap64"); #endif #ifdef __USE_LARGEFILE64 +extern __ptr_t __mmap64 __P ((__ptr_t __addr, size_t __len, int __prot, + int __flags, int __fd, __off64_t __offset)); extern __ptr_t mmap64 __P ((__ptr_t __addr, size_t __len, int __prot, int __flags, int __fd, __off64_t __offset)); #endif diff --git a/sysdeps/generic/wcstoimax.c b/sysdeps/generic/wcstoimax.c new file mode 100644 index 0000000000..f1de70f320 --- /dev/null +++ b/sysdeps/generic/wcstoimax.c @@ -0,0 +1 @@ +#error "The correct implementation must be chosen based on the `intmax_t' type" diff --git a/sysdeps/generic/wcstoumax.c b/sysdeps/generic/wcstoumax.c new file mode 100644 index 0000000000..508cb19f8c --- /dev/null +++ b/sysdeps/generic/wcstoumax.c @@ -0,0 +1 @@ +#error "The correct implementation must be chosen based on the `uintmax_t' type" diff --git a/sysdeps/mach/powerpc/machine-lock.h b/sysdeps/mach/powerpc/machine-lock.h new file mode 100644 index 0000000000..543927d048 --- /dev/null +++ b/sysdeps/mach/powerpc/machine-lock.h @@ -0,0 +1,75 @@ +/* Machine-specific definition for spin locks. PowerPC version. + Copyright (C) 1994, 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. */ + +#ifndef _MACHINE_LOCK_H +#define _MACHINE_LOCK_H + +/* The type of a spin lock variable. */ + +typedef __volatile long int __spin_lock_t; + +/* Value to initialize `__spin_lock_t' variables to. */ + +#define __SPIN_LOCK_INITIALIZER 0L + + +#ifndef _EXTERN_INLINE +#define _EXTERN_INLINE extern __inline +#endif + +/* Unlock LOCK. */ + +_EXTERN_INLINE void +__spin_unlock (__spin_lock_t *__lock) +{ + __asm__ __volatile__ ("sync ; stwcx. %1,0,%0" + : : "r" (__lock), "r" (0) : "cr0"); +} + +/* Try to lock LOCK; return nonzero if we locked it, zero if another has. */ + +_EXTERN_INLINE int +__spin_try_lock (register __spin_lock_t *__lock) +{ + long int __rtn; + + __asm__ __volatile__ ("\ +0: lwarx %0,0,%1 + stwcx. %2,0,%1 + bne- 0b +" : "=&r"(__rtn) : "r"(__lock), "r"(1) : "cr0"); + return ~__rtn; +} + +/* Return nonzero if LOCK is locked. */ + +_EXTERN_INLINE int +__spin_lock_locked (__spin_lock_t *__lock) +{ + long int __rtn; + __asm__ __volatile__ ("\ +0: lwarx %0,0,%1 + stwcx. %0,0,%1 + bne- 0b +" : "=&r"(__rtn) : "r"(__lock) : "cr0"); + return __rtn; +} + + +#endif /* machine-lock.h */ diff --git a/sysdeps/posix/mk-stdiolim.c b/sysdeps/posix/mk-stdiolim.c index 8858ebeae5..ec482dee96 100644 --- a/sysdeps/posix/mk-stdiolim.c +++ b/sysdeps/posix/mk-stdiolim.c @@ -49,7 +49,7 @@ main() /* These values correspond to the code in sysdeps/posix/tempname.c. Change the values here if you change that code. */ - puts ("#ifndef __need_FOPEN_MAX"); + puts ("#ifdef _STDIO_H"); printf ("# define L_tmpnam %u\n", sizeof ("/usr/tmp/") + 9); printf ("# define TMP_MAX %u\n", 62 * 62 * 62); @@ -74,6 +74,8 @@ main() #endif ); + puts ("# undef __need_FOPEN_MAX"); + puts ("# define __need_FOPEN_MAX 1"); |
