summaryrefslogtreecommitdiff
path: root/sysdeps/generic
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1997-12-04 00:12:34 +0000
committerUlrich Drepper <drepper@redhat.com>1997-12-04 00:12:34 +0000
commitcbdee2790df9dac548fb3157cfaf7aceb0f40034 (patch)
tree566a6db9f880efdd95cb05a92d37a4c7ef6b8092 /sysdeps/generic
parent04be94a87d0a74c022490db7f4f926253f0d69d3 (diff)
1997-12-03 23:50 Ulrich Drepper <drepper@cygnus.com> * Makeconfig: Add shared-thread-library variable. * math/Makfile (CPPFLAGS): Add -D__LIBC_INTERNAL_MATH_INLINES. * sysdeps/i386/Makefile: Don't define ___LIBC_INTERNAL_MATH_INLINES here. * sysdeps/m68k/fpu/e_acos.c: Likewise. * sysdeps/m68k/fpu/e_atan2.c: Likewise. * sysdeps/m68k/fpu/e_fmod.c: Likewise. * sysdeps/m68k/fpu/e_pow.c: Likewise. * sysdeps/m68k/fpu/e_scalb.c: Likewise. * sysdeps/m68k/fpu/k_cos.c: Likewise. * sysdeps/m68k/fpu/k_sin.c: Likewise. * sysdeps/m68k/fpu/k_tan.c: Likewise. * sysdeps/m68k/fpu/s_atan.c: Likewise. * sysdeps/m68k/fpu/s_ccos.c: Likewise. * sysdeps/m68k/fpu/s_ccosh.c: Likewise. * sysdeps/m68k/fpu/s_cexp.c: Likewise. * sysdeps/m68k/fpu/s_csin.c: Likewise. * sysdeps/m68k/fpu/s_csinh.c: Likewise. * sysdeps/m68k/fpu/s_frexp.c: Likewise. * sysdeps/m68k/fpu/s_ilogb.c: Likewise. * sysdeps/m68k/fpu/s_isinf.c: Likewise. * sysdeps/m68k/fpu/s_llrint.c: Likewise. * sysdeps/m68k/fpu/s_llrintf.c: Likewise. * sysdeps/m68k/fpu/s_llrintl.c: Likewise. * sysdeps/m68k/fpu/s_lrint.c: Likewise. * sysdeps/m68k/fpu/s_modf.c: Likewise. * sysdeps/m68k/fpu/s_remquo.c: Likewise. * sysdeps/m68k/fpu/s_scalbn.c: Likewise. * sysdeps/m68k/fpu/s_sincos.c: Likewise. * libc.map: Add __libc_current_sigrtmin, __libc_current_sigrtmax, __libc_allocate_rtsig, sigqueue, sigtimedwait, sigwaitinfo. * signal/Makefile (headers): Add bits/siginfo.h. (routines): Add allocrtsig, sigtimedwait, sigwaitinfo, sigqueue. (distribute): Add testrtsig.h. * signal/allocrtsig.c: New file. * signal/signal.h: Define `union sigval'. Include <bits/siginfo.h>. Declare sigwaitinfo, sigtimedwait, sigqueue, __libc_current_sigrtmin, __libc_current_sigrtmax. * sysdeps/generic/sigqueue.c: New file. * sysdeps/generic/sigtimedwait.c: New file. * sysdeps/generic/sigwaitinfo.c: New file. * sysdeps/generic/testrtsig.h: New file. * sysdeps/generic/bits/siginfo.h: New file. * sysdeps/unix/sysv/linux/bits/siginfo.h: New file. * sysdeps/unix/sysv/linux/kernel_sigaction.h: Define struct as old_kernel_sigaction and rename sa_handler member to k_sa_handler. * sysdeps/unix/sysv/linux/rt_sigaction.c: New file. * sysdeps/unix/sysv/linux/rt_sigprocmask.c: New file. * sysdeps/unix/sysv/linux/rt_sigqueueinfo.c: New file. * sysdeps/unix/sysv/linux/rt_sigreturn.c: New file. * sysdeps/unix/sysv/linux/rt_sigsuspend.c: New file. * sysdeps/unix/sysv/linux/rt_sigtimedwait.c: New file. * sysdeps/unix/sysv/linux/sigpending.c: New file. * sysdeps/unix/sysv/linux/sigprocmask.c: New file. * sysdeps/unix/sysv/linux/sigqueue.c: New file. * sysdeps/unix/sysv/linux/sigreturn.c: New file. * sysdeps/unix/sysv/linux/sigtimedwait.c: New file. * sysdeps/unix/sysv/linux/sigwaitinfo.c: New file. * sysdeps/unix/sysv/linux/testrtsig.h: New file. * sysdeps/unix/sysv/linux/sigsuspend.c: Update for AIO. * sysdeps/unix/sysv/linux/syscalls.list: Update for AIO. * sysdeps/unix/sysv/linux/sigaction.c: Update for AIO. * sysdeps/unix/sysv/linux/bits/local_lim.h: Define AIO_PRIO_DELTA_MAX. * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define _XOPEN_REALTIME and _POSIX_REALTIME_SIGNALS. * sysdeps/unix/sysv/linux/bits/sigaction.h: Update for AIO. * sysdeps/unix/sysv/linux/bits/signum.h: Define SIGRTMIN/MAX and update _NSIG. * sysdeps/unix/sysv/linux/i386/sigaction.c: Update for AIO. * sysdeps/unix/sysv/linux/i386/sys/ucontext.h: Linux/i386 specific definitions. * Makefile (subdirs): Add rt. * shlib-versions: Add entry for librt. * rt/Makefile: New file. * rt/aio.h: New file. * rt/aio_cancel.c: New file. * rt/aio_error.c: New file. * rt/aio_fsync.c: New file. * rt/aio_misc.c: New file. * rt/aio_misc.h: New file. * rt/aio_read.c: New file. * rt/aio_read64.c: New file. * rt/aio_return.c: New file. * rt/aio_suspend.c: New file. * rt/aio_write.c: New file. * rt/aio_write64.c: New file. * rt/lio_listio.c: New file. * rt/lio_listio64.c: New file. * sysdeps/generic/aio_sigqueue.c: New file. * sysdeps/unix/sysv/linux/aio_sigqueue.c: New file. * sysdeps/unix/sysv/linux/Dist: Add new files * sysdeps/unix/sysv/linux/Makefile [$(subdir)=signal] (sysdep_routines): Add rt_sigsuspend, rt_sigprocmask, rt_sigtimedwait, rt_sigqueueinfo, rt_sigaction. * posix/Makefile (headers): Add bits/environments.h. * posix/confstr.c: Correctly handle _CS_XBS5_ILP32_OFFBIG_CFLAGS and _CS_LFS_CFLAGS on 64bit platforms. * posix/unistd.h: Define _XOPEN_LEGACY. Explain _XOPEN_REALTIME and _XOPEN_REALTIME_THREADS. Include bits/environments.h. * sysdeps/generic/bits/confname.h: Define _SC_* constants for compilation modules. * sysdeps/wordsize-32/bits/environments.h: New file. * sysdeps/wordsize-64/bits/environments.h: New file. * posix/getopt.c: Remove declaration of getpid and __libc_pid. * posix/getopt_init.c: Test for value 0xf00baa of uninitialized __libc_pid. * sysdeps/unix/sysv/linux/init-first.c: Initialize __libc_pid to 0xf00baa. * string/string.h: Add declaration of __strverscmp. * string/strverscmp.c: Rename function ot __strverscmp and make old name weak alias. * sysdeps/generic/dl-sysdep.c: Declare and define __libc_uid. * sysdeps/generic/enbl-secure.c: Likewise. * sysdeps/mach/hurd/dl-sysdep.c: Likewise. * sysdeps/unix/sysv/linux/bits/sigset.h: Pretty print. * sysdeps/unix/sysv/linux/sys/pci.h: New file. 1997-12-03 Ulrich Drepper <drepper@cygnus.com> * posix/sys/wait.h: Use __transparent_union__ instead of transparent_union. Reported by Roland McGrath. 1997-12-03 Andreas Jaeger <aj@arthur.rhein-neckar.de> * resolv/inet_neta.c (inet_neta): Change type of first parameter to u_int32_t. Suggested by John Lavagnino <John_Lavagnino@Brown.edu> [PR libc/366]. * resolv/inet_addr.c (inet_addr): Change return type to u_int32_t. * inet/arpa/inet.h: Change types of inet_neta and inet_addr. 1997-12-03 20:40 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> * grp/initgroups.c: Increase buffer if it is too small. 1997-12-03 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/netinet/ip.h: Don't use u_int8_t for bit fields, this is no ISO C. Reported by Andreas Jaeger. 1997-12-03 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/i386/sys/ucontext.h (enum): Add missing commata. 1997-12-03 08:58 Philip Blundell <pb@nexus.co.uk> * sysdeps/generic/bits/utsname.h: <sys/utsname.h> defines _SYS_UTSNAME_H not _UTSNAME_H. 1997-11-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/dl-profile.c (_dl_start_profile): Avoid overflow when computing s_scale. 1997-11-29 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/libm-ieee754/s_csqrt.c: Use different formula for now. * sysdeps/libm-ieee754/s_csqrtf.c: Likewise. * sysdeps/libm-ieee754/s_csqrtl.c: Likewise. * math/libm-test.c (csqrt_test): Add testcase. 1997-12-03 15:44 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/sys/ultrasound.h: New file. * sysdeps/unix/sysv/linux/sys/Dist: Add it. * sysdeps/unix/sysv/linux/sys/Makefile [$(subdir)=misc]: Likewise. 1997-11-30 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/timex.h: Fix declaration. 1997-12-01 Andreas Jaeger <aj@arthur.rhein-neckar.de> * math/libm-test.c (acos_test): Add more tests. (asin_test): Likewise. (atan_test): Likewise. (exp_test): Likewise. (sin_test): Likewise. (sqrt_test): Likewise. (cpow_test): Likewise. (csqrt_test): Likewise. (cexp_test): Correct typo in gcc version test. 1997-12-02 17:14 Philip Blundell <pb@nexus.co.uk> * sysdeps/arm/__longjmp.S: Define _SETJMP_H before including <bits/setjmp.h>. * sysdeps/arm/setjmp.S: Likewise. * sysdeps/unix/sysv/linux/arm/bits/mman.h: New file. 1997-12-02 18:07 Philip Blundell <pb@nexus.co.uk> * stdio/stdio.h: Add prototype for tmpfile64(). 1997-12-02 17:47 Philip Blundell <pb@nexus.co.uk> * stdio/stdio.h (__stdio_gen_tempname): Add extra argument to prototype to keep in step with libio version. * stdio-common/tmpfile64.c: Include <errno.h> for ENOSYS. 1997-12-02 17:41 Philip Blundell <pb@nexus.co.uk> * sysdeps/generic/Makefile: Don't try to use make_siglist if cross-compiling. 1997-12-02 01:18 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/i386/clone.S: When cloned process returns load GOT ptr before jumping to _exit. Reported by Xavier Leroy.
Diffstat (limited to 'sysdeps/generic')
-rw-r--r--sysdeps/generic/Makefile2
-rw-r--r--sysdeps/generic/aio_sigqueue.c33
-rw-r--r--sysdeps/generic/bits/confname.h11
-rw-r--r--sysdeps/generic/bits/siginfo.h184
-rw-r--r--sysdeps/generic/bits/utsname.h2
-rw-r--r--sysdeps/generic/dl-sysdep.c3
-rw-r--r--sysdeps/generic/enbl-secure.c8
-rw-r--r--sysdeps/generic/sigqueue.c32
-rw-r--r--sysdeps/generic/sigtimedwait.c33
-rw-r--r--sysdeps/generic/sigwaitinfo.c32
-rw-r--r--sysdeps/generic/testrtsig.h28
11 files changed, 363 insertions, 5 deletions
diff --git a/sysdeps/generic/Makefile b/sysdeps/generic/Makefile
index 2f6a8f4333..4d6c60447a 100644
--- a/sysdeps/generic/Makefile
+++ b/sysdeps/generic/Makefile
@@ -33,6 +33,7 @@ endif
ifeq ($(subdir),stdio-common)
ifneq ($(inhibit-siglist),yes)
+ifneq ($(cross-compiling),yes)
ifeq "$(filter %siglist.c,$(before-compile))" ""
before-compile := $(before-compile) $(objpfx)siglist.c
$(objpfx)siglist.c: $(objpfx)make_siglist
@@ -49,6 +50,7 @@ generated := $(generated) make_siglist siglist.c
endif
endif
endif
+endif
ifeq ($(subdir),string)
CFLAGS-wordcopy.c += -Wno-uninitialized
diff --git a/sysdeps/generic/aio_sigqueue.c b/sysdeps/generic/aio_sigqueue.c
new file mode 100644
index 0000000000..0a871e24d9
--- /dev/null
+++ b/sysdeps/generic/aio_sigqueue.c
@@ -0,0 +1,33 @@
+/* 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 <aio.h>
+#include <errno.h>
+#include <signal.h>
+
+#include "aio_misc.h"
+
+int
+__aio_sigqueue (int sig, const union sigval val)
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+
+stub_warning (__aio_sigqueue)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/bits/confname.h b/sysdeps/generic/bits/confname.h
index 3991fb1df4..1b75d6e5b5 100644
--- a/sysdeps/generic/bits/confname.h
+++ b/sysdeps/generic/bits/confname.h
@@ -316,8 +316,17 @@ enum
#define _SC_NL_NMAX _SC_NL_NMAX
_SC_NL_SETMAX,
#define _SC_NL_SETMAX _SC_NL_SETMAX
- _SC_NL_TEXTMAX
+ _SC_NL_TEXTMAX,
#define _SC_NL_TEXTMAX _SC_NL_TEXTMAX
+
+ _SC_XBS5_ILP32_OFF32,
+#define _SC_XBS5_ILP32_OFF32 _SC_XBS5_ILP32_OFF32
+ _SC_XBS5_ILP32_OFFBIG,
+#define _SC_XBS5_ILP32_OFFBIG _SC_XBS5_ILP32_OFFBIG
+ _SC_XBS5_LP64_OFF64,
+#define _SC_XBS5_LP64_OFF64 _SC_XBS5_LP64_OFF64
+ _SC_XBS5_LPBIG_OFFBIG
+#define _SC_XBS5_LPBIG_OFFBIG _SC_XBS5_LPBIG_OFFBIG
};
#if (defined __USE_POSIX2 || defined __USE_UNIX98 \
diff --git a/sysdeps/generic/bits/siginfo.h b/sysdeps/generic/bits/siginfo.h
new file mode 100644
index 0000000000..35d9d69892
--- /dev/null
+++ b/sysdeps/generic/bits/siginfo.h
@@ -0,0 +1,184 @@
+/* siginfo_t, sigevent and constants. Stub version.
+ 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 _SIGNAL_H
+# error "Never include this file directly. Use <signal.h> instead"
+#endif
+
+typedef struct siginfo
+ {
+ int si_signo; /* Signal number. */
+ int si_errno; /* If non-zero, an errno value associated with
+ this signal, as defined in <errno.h>. */
+ int si_code; /* Signal code. */
+ __pid_t si_pid; /* Sending process ID. */
+ __uid_t si_uid; /* Real user ID of sending process. */
+ void *si_addr; /* Address of faulting instruction. */
+ int si_status; /* Exit value or signal. */
+ long int si_band; /* Band event for SIGPOLL. */
+ union sigval si_value; /* Signal value. */
+ } siginfo_t;
+
+
+/* Values for `si_code'. Positive values are reserved for kernel-generated
+ signals. */
+enum
+{
+ SI_ASYNCIO = -4, /* Sent by AIO completion. */
+#define SI_ASYNCIO SI_ASYNCIO
+ SI_MESGQ, /* Sent by real time mesq state change. */
+#define SI_MESGQ SI_MESGQ
+ SI_TIMER, /* Sent by timer expiration. */
+#define SI_TIMER SI_TIMER
+ SI_QUEUE, /* Sent by sigqueue. */
+#define SI_QUEUE SI_QUEUE
+ SI_USER /* Sent by kill, sigsend, raise. */
+#define SI_USER SI_USER
+};
+
+
+/* `si_code' values for SIGILL signal. */
+enum
+{
+ ILL_ILLOPC = 1, /* Illegal opcode. */
+#define ILL_ILLOPC ILL_ILLOPC
+ ILL_ILL_OPN, /* Illegal operand. */
+#define ILL_ILLOPN ILL_ILLOPN
+ ILL_ILLADR, /* Illegal addressing mode. */
+#define ILL_ILLADR ILL_ILLADR
+ ILL_ILLTRP, /* Illegal trap. */
+#define ILL_ILLTRP ILL_ILLTRP
+ ILL_PRVOPC, /* Privileged opcode. */
+#define ILL_PRVOPC ILL_PRVOPC
+ ILL_PRVREG, /* Privileged register. */
+#define ILL_PRVREG ILL_PRVREG
+ ILL_COPROC, /* Coprocessor error. */
+#define ILL_COPROC ILL_COPROC
+ ILL_BADSTK /* Internal stack error. */
+#define ILL_BADSTK ILL_BADSTK
+};
+
+/* `si_code' values for SIGFPE signal. */
+enum
+{
+ FPE_INTDIV = 1, /* Integer divide by zero. */
+#define FPE_INTDIV FPE_INTDIV
+ FPE_INTOVF, /* Integer overflow. */
+#define FPE_INTOVF FPE_INTOVF
+ FPE_FLTDIV, /* Floating point divide by zero. */
+#define FPE_FLTDIV FPE_FLTDIV
+ FPE_FLTOVF, /* Floating point overflow. */
+#define FPE_FLTOVF FPE_FLTOVF
+ FPE_FLTUND, /* Floating point underflow. */
+#define FPE_FLTUND FPE_FLTUND
+ FPE_FLTRES, /* Floating point inexact result. */
+#define FPE_FLTRES FPE_FLTRES
+ FPE_FLTINV, /* Floating point invalid operation. */
+#define FPE_FLTINV FPE_FLTINV
+ FPE_FLTSUB /* Subscript out of range. */
+#define FPE_FLTSUB FPE_FLTSUB
+};
+
+/* `si_code' values for SIGSEGV signal. */
+enum
+{
+ SEGV_MAPERR = 1, /* Address not mapped to object. */
+#define SEGV_MAPERR SEGV_MAPERR
+ SEGV_ACCERR /* Invalid permissions for mapped object. */
+#define SEGV_ACCERR SEGV_ACCERR
+};
+
+/* `si_code' values for SIGBUS signal. */
+enum
+{
+ BUS_ADRALN = 1, /* Invalid address alignment. */
+#define BUS_ADRALN BUS_ADRALN
+ BUS_ADRERR, /* Non-existant physical address. */
+#define BUS_ADRERR BUS_ADRERR
+ BUS_OBJERR /* Object specific hardware error. */
+#define BUS_OBJERR BUS_OBJERR
+};
+
+/* `si_code' values for SIGTRAP signal. */
+enum
+{
+ TRAP_BRKPT = 1, /* Process breakpoint. */
+#define TRAP_BRKPT TRAP_BRKPT
+ TRAP_TRACE /* Process trace trap. */
+#define TRAP_TRACE TRAP_TRACE
+};
+
+/* `si_code' values for SIGCHLD signal. */
+enum
+{
+ CLD_EXITED = 1, /* Child has exited. */
+#define CLD_EXITED CLD_EXITED
+ CLD_KILLED, /* Child was killed. */
+#define CLD_KILLED CLD_KILLED
+ CLD_DUMPED, /* Child terminated abnormally. */
+#define CLD_DUMPED CLD_DUMPED
+ CLD_TRAPPED, /* Traced child has trapped. */
+#define CLD_TRAPPED CLD_TRAPPED
+ CLD_STOPPED, /* Child has stopped. */
+#define CLD_STOPPED CLD_STOPPED
+ CLD_CONTINUED /* Stopped child has continued. */
+#define CLD_CONTINUED CLD_CONTINUED
+};
+
+/* `si_code' values for SIGPOLL signal. */
+enum
+{
+ POLL_IN = 1, /* Data input available. */
+#define POLL_IN POLL_IN
+ POLL_OUT, /* Output buffers available. */
+#define POLL_OUT POLL_OUT
+ POLL_MSG, /* Input message available. */
+#define POLL_MSG POLL_MSG
+ POLL_ERR, /* I/O error. */
+#define POLL_ERR POLL_ERR
+ POLL_PRI, /* High priority input available. */
+#define POLL_PRI POLL_PRI
+ POLL_HUP /* Device disconnected. */
+#define POLL_HUP POLL_HUP
+};
+
+
+/* Structure to transport application-defined values with signals. */
+#define SIGEV_MAX_SIZE 64
+#define SIGEV_PAD_SIZE ((SIGEV_MAX_SIZE / sizeof (int)) - 3)
+
+typedef struct sigevent
+ {
+ sigval_t sigev_value;
+ int sigev_signo;
+ int sigev_notify;
+ void (*sigev_notify_function) __P ((sigval_t)); /* Function to start. */
+ void *sigev_notify_attributes; /* Really pthread_attr_t.*/
+ } sigevent_t;
+
+/* `sigev_notify' values. */
+enum
+{
+ SIGEV_SIGNAL = 0, /* Notify via signal. */
+#define SIGEV_SIGNAL SIGEV_SIGNAL
+ SIGEV_NONE, /* Other notification: meaningless. */
+#define SIGEV_NONE SIGEV_NONE
+ SIGEV_THREAD /* Deliver via thread creation. */
+#define SIGEV_THREAD SIGEV_THREAD
+};
diff --git a/sysdeps/generic/bits/utsname.h b/sysdeps/generic/bits/utsname.h
index ea3f163cef..cd05db1438 100644
--- a/sysdeps/generic/bits/utsname.h
+++ b/sysdeps/generic/bits/utsname.h
@@ -16,7 +16,7 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#ifndef _UTSNAME_H
+#ifndef _SYS_UTSNAME_H
# error "Never include <bits/utsname.h> directly; use <sys/utsname.h> instead."
#endif
diff --git a/sysdeps/generic/dl-sysdep.c b/sysdeps/generic/dl-sysdep.c
index 7ee3002314..b71ad54e55 100644
--- a/sysdeps/generic/dl-sysdep.c
+++ b/sysdeps/generic/dl-sysdep.c
@@ -40,6 +40,7 @@ extern void _end;
extern void ENTRY_POINT (void);
ElfW(Addr) _dl_base_addr;
+uid_t __libc_uid;
int __libc_enable_secure;
int __libc_multiple_libcs; /* Defining this here avoids the inclusion
of init-first. */
@@ -130,7 +131,7 @@ _dl_sysdep_start (void **start_argptr,
SEE (EUID, euid);
SEE (EGID, egid);
-
+ __libc_uid = uid;
__libc_enable_secure = uid != euid || gid != egid;
if (_dl_pagesize == 0)
diff --git a/sysdeps/generic/enbl-secure.c b/sysdeps/generic/enbl-secure.c
index fdf6f154f6..8e1327c878 100644
--- a/sysdeps/generic/enbl-secure.c
+++ b/sysdeps/generic/enbl-secure.c
@@ -26,9 +26,13 @@
/* Safest assumption, if somehow the initializer isn't run. */
int __libc_enable_secure = 1;
+/* We often need the UID. */
+uid_t __libc_uid;
+
void
__libc_init_secure (void)
{
- __libc_enable_secure = (__geteuid () != __getuid () ||
- __getegid () != __getgid ());
+ __libc_uid == __getuid ();
+ __libc_enable_secure = (__geteuid () != __libc_uid
+ || __getegid () != __getgid ());
}
diff --git a/sysdeps/generic/sigqueue.c b/sysdeps/generic/sigqueue.c
new file mode 100644
index 0000000000..c6af1d7021
--- /dev/null
+++ b/sysdeps/generic/sigqueue.c
@@ -0,0 +1,32 @@
+/* Implementation of sigqueue function from POSIX.1b.
+ 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 <signal.h>
+
+int
+__sigqueue (pid_t pid, int sig, const union sigval val)
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+weak_alias (__sigqueue, sigqueue)
+
+stub_warning (sigqueue)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/sigtimedwait.c b/sysdeps/generic/sigtimedwait.c
new file mode 100644
index 0000000000..4f9497794b
--- /dev/null
+++ b/sysdeps/generic/sigtimedwait.c
@@ -0,0 +1,33 @@
+/* Implementation of sigtimedwait function from POSIX.1b.
+ 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 <signal.h>
+
+int
+__sigtimedwait (const sigset_t *set, siginfo_t *info,
+ const struct timespec *timeout)
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+weak_alias (__sigtimedwait, sigtimedwait)
+
+stub_warning (sigtimedwait)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/sigwaitinfo.c b/sysdeps/generic/sigwaitinfo.c
new file mode 100644
index 0000000000..49014e94b0
--- /dev/null
+++ b/sysdeps/generic/sigwaitinfo.c
@@ -0,0 +1,32 @@
+/* Implementation of sigwaitinfo function from POSIX.1b.
+ 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 <signal.h>
+
+int
+__sigwaitinfo (const sigset_t *set, siginfo_t *info)
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+weak_alias (__sigwaitinfo, sigwaitinfo)
+
+stub_warning (sigwaitinfo)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/testrtsig.h b/sysdeps/generic/testrtsig.h
new file mode 100644
index 0000000000..25eb488f84
--- /dev/null
+++ b/sysdeps/generic/testrtsig.h
@@ -0,0 +1,28 @@
+/* Test whether RT signals are really available.
+ Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ 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 <string.h>
+#include <sys/utsname.h>
+
+int
+kernel_has_rtsig (void)
+{
+ return 0;
+}