/* we want this in ldso.so and libdl.a but nowhere else */
#ifdef __USE_GNU
#if defined IS_IN_rtld || (defined IS_IN_libdl && ! defined SHARED)
+extern __typeof(dl_iterate_phdr) __dl_iterate_phdr;
int
__dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info, size_t size, void *data), void *data)
{
* can set an internal breakpoint on it, so that we are notified when the
* address mapping is changed in some way.
*/
-void _dl_debug_state(void)
+void _dl_debug_state(void);
+void _dl_debug_state()
{
}
"Unable to resolve symbol"
};
-void __attribute__ ((destructor)) dl_cleanup(void)
+void dl_cleanup(void) __attribute__ ((destructor));
+void dl_cleanup(void)
{
struct dyn_elf *d;
for (d = _dl_handles; d; d = d->next_handle) {
#include <endian.h>
#include <byteswap.h>
+uint32_t ntohl (uint32_t x);
+uint16_t ntohs (uint16_t x);
+uint32_t htonl (uint32_t x);
+uint16_t htons (uint16_t x);
+
#if __BYTE_ORDER == __BIG_ENDIAN
-extern uint32_t ntohl (uint32_t x)
+uint32_t ntohl (uint32_t x)
{
return x;
}
-extern uint16_t ntohs (uint16_t x)
+uint16_t ntohs (uint16_t x)
{
return x;
}
-extern uint32_t htonl (uint32_t x)
+uint32_t htonl (uint32_t x)
{
return x;
}
-extern uint16_t htons (uint16_t x)
+uint16_t htons (uint16_t x)
{
return x;
}
#elif __BYTE_ORDER == __LITTLE_ENDIAN
-extern uint32_t ntohl (uint32_t x)
+uint32_t ntohl (uint32_t x)
{
return __bswap_32(x);
}
-extern uint16_t ntohs (uint16_t x)
+uint16_t ntohs (uint16_t x)
{
return __bswap_16(x);
}
-extern uint32_t htonl (uint32_t x)
+uint32_t htonl (uint32_t x)
{
return __bswap_32(x);
}
-extern uint16_t htons (uint16_t x)
+uint16_t htons (uint16_t x)
{
return __bswap_16(x);
}
/* Return a socket of any type. The socket can be used in subsequent
ioctl calls to talk to the kernel. */
-int attribute_hidden
+int __opensock(void) attribute_hidden;
+int
__opensock (void)
{
int fd;
#endif
#ifdef L_encodep
-int attribute_hidden __encode_packet(struct resolv_header *h,
+int __encode_packet(struct resolv_header *h,
+ struct resolv_question **q,
+ struct resolv_answer **an,
+ struct resolv_answer **ns,
+ struct resolv_answer **ar,
+ unsigned char *dest, int maxlen) attribute_hidden;
+int __encode_packet(struct resolv_header *h,
struct resolv_question **q,
struct resolv_answer **an,
struct resolv_answer **ns,
#endif
#ifdef L_decodep
-int attribute_hidden __decode_packet(unsigned char *data, struct resolv_header *h)
+int __decode_packet(unsigned char *data, struct resolv_header *h) attribute_hidden;
+int __decode_packet(unsigned char *data, struct resolv_header *h)
{
return __decode_header(data, h);
}
#endif
#ifdef L_formquery
+int __form_query(int id, const char *name, int type, unsigned char *packet, int maxlen);
int __form_query(int id, const char *name, int type, unsigned char *packet,
int maxlen)
{
static int is_initialized;
static struct drand48_data __rpc_lrand48_data;
-u_long attribute_hidden _create_xid (void)
+u_long _create_xid (void) attribute_hidden;
+u_long _create_xid (void)
{
unsigned long res;
}
/* This is the exported version. */
+int iruserok (u_int32_t raddr, int superuser, const char * ruser, const char * luser);
int iruserok (u_int32_t raddr, int superuser, const char * ruser, const char * luser)
{
return iruserok2 (raddr, superuser, ruser, luser, "-");
* Returns 0 if ok, -1 if not ok.
*/
int
+__ivaliduser(FILE *hostf, u_int32_t raddr, const char *luser, const char *ruser);
+int
__ivaliduser(FILE *hostf, u_int32_t raddr, const char *luser, const char *ruser)
{
return __ivaliduser2(hostf, raddr, luser, ruser, "-");
#include <netrose/rose.h>
#endif
-int attribute_hidden __libc_sa_len (sa_family_t af)
+int __libc_sa_len (sa_family_t af) attribute_hidden;
+int __libc_sa_len (sa_family_t af)
{
switch (af)
{
/*
* Unix longhand authenticator
*/
-attribute_hidden
+enum auth_stat
+_svcauth_unix (struct svc_req *rqst, struct rpc_msg *msg) attribute_hidden;
enum auth_stat
_svcauth_unix (struct svc_req *rqst, struct rpc_msg *msg)
{
* Looks up longhand in a cache.
*/
/*ARGSUSED */
-attribute_hidden
+enum auth_stat
+_svcauth_short (struct svc_req *rqst attribute_unused, struct rpc_msg *msg attribute_unused) attribute_hidden;
enum auth_stat
_svcauth_short (struct svc_req *rqst attribute_unused, struct rpc_msg *msg attribute_unused)
{
static SVCXPRT *transp;
#endif
+int registerrpc (u_long prognum, u_long versnum, u_long procnum,
+ char *(*progname) (char *), xdrproc_t inproc, xdrproc_t outproc);
int
registerrpc (u_long prognum, u_long versnum, u_long procnum,
char *(*progname) (char *), xdrproc_t inproc, xdrproc_t outproc)
* descriptor as its first input.
*/
SVCXPRT *
+svcfd_create (int fd, u_int sendsize, u_int recvsize);
+SVCXPRT *
svcfd_create (int fd, u_int sendsize, u_int recvsize)
{
return makefd_xprt (fd, sendsize, recvsize);
* Enable use of the cache.
* Note: there is no disable.
*/
+int svcudp_enablecache (SVCXPRT *transp, u_long size);
int
svcudp_enablecache (SVCXPRT *transp, u_long size)
{
* descriptor as its first input.
*/
SVCXPRT *
+svcunixfd_create (int fd, u_int sendsize, u_int recvsize);
+SVCXPRT *
svcunixfd_create (int fd, u_int sendsize, u_int recvsize)
{
return makefd_xprt (fd, sendsize, recvsize);
#ifdef L_accept
+extern __typeof(accept) __libc_accept;
#ifdef __NR_accept
#define __NR___libc_accept __NR_accept
_syscall3(int, __libc_accept, int, call, struct sockaddr *, addr, socklen_t *,addrlen);
#endif
#ifdef L_connect
+extern __typeof(connect) __libc_connect;
#ifdef __NR_connect
#define __NR___libc_connect __NR_connect
_syscall3(int, __libc_connect, int, sockfd, const struct sockaddr *, saddr, socklen_t, addrlen);
#endif
#ifdef L_recv
+extern __typeof(recv) __libc_recv;
#ifdef __NR_recv
#define __NR___libc_recv __NR_recv
_syscall4(ssize_t, __libc_recv, int, sockfd, __ptr_t, buffer, size_t, len, int, flags);
#endif
#ifdef L_recvfrom
+extern __typeof(recvfrom) __libc_recvfrom;
#ifdef __NR_recvfrom
#define __NR___libc_recvfrom __NR_recvfrom
_syscall6(ssize_t, __libc_recvfrom, int, sockfd, __ptr_t, buffer, size_t, len, int, flags,
#endif
#ifdef L_recvmsg
+extern __typeof(recvmsg) __libc_recvmsg;
#ifdef __NR_recvmsg
#define __NR___libc_recvmsg __NR_recvmsg
_syscall3(ssize_t, __libc_recvmsg, int, sockfd, struct msghdr *, msg, int, flags);
#endif
#ifdef L_send
+extern __typeof(send) __libc_send;
#ifdef __NR_send
#define __NR___libc_send __NR_send
_syscall4(ssize_t, __libc_send, int, sockfd, const void *, buffer, size_t, len, int, flags);
#endif
#ifdef L_sendmsg
+extern __typeof(sendmsg) __libc_sendmsg;
#ifdef __NR_sendmsg
#define __NR___libc_sendmsg __NR_sendmsg
_syscall3(ssize_t, __libc_sendmsg, int, sockfd, const struct msghdr *, msg, int, flags);
#endif
#ifdef L_sendto
+extern __typeof(sendto) __libc_sendto;
#ifdef __NR_sendto
#define __NR___libc_sendto __NR_sendto
_syscall6(ssize_t, __libc_sendto, int, sockfd, const void *, buffer, size_t, len,
function without parameters instead. */
void (*error_print_progname) (void) = NULL;
-
-attribute_hidden void __error (int status, int errnum, const char *message, ...)
+extern __typeof(error) __error attribute_hidden;
+void __error (int status, int errnum, const char *message, ...)
{
va_list args;
exit (status);
}
-attribute_hidden void __error_at_line (int status, int errnum, const char *file_name,
+extern __typeof(error_at_line) __error_at_line attribute_hidden;
+void __error_at_line (int status, int errnum, const char *file_name,
unsigned int line_number, const char *message, ...)
{
va_list args;
exit (status);
}
-#undef error
-#undef error_at_line
-strong_alias(__error,error)
+/* psm: keep this weak, to many use this outside of libc */
+weak_alias(__error,error)
strong_alias(__error_at_line,error_at_line)
#ifdef __NR_ipc
/* The actual system call: all functions are multiplexed by this. */
-extern int __syscall_ipc __P((unsigned int __call, int __first, int __second,
- int __third, void *__ptr)) attribute_hidden;
+extern int __syscall_ipc (unsigned int __call, int __first, int __second,
+ int __third, void *__ptr) attribute_hidden;
/* The codes for the functions to use the multiplexer `__syscall_ipc'. */
#include <unistd.h>
#include <sys/file.h>
#include <paths.h>
+#include <shadow.h>
libc_hidden_proto(memset)
libc_hidden_proto(open)
/* Allocate real-time signal with highest/lowest available
priority. Please note that we don't use a lock since we assume
this function to be called at program start. */
+int __libc_allocate_rtsig (int high);
int __libc_allocate_rtsig (int high)
{
if (current_rtmin == -1 || current_rtmin > current_rtmax)
libc_hidden_proto(getpid)
libc_hidden_proto(kill)
-int attribute_hidden __raise(int signo)
+int __raise (int signo) attribute_hidden;
+int __raise(int signo)
{
return kill(getpid(), signo);
}
before doing a `__setjmp' on ENV[0].__jmpbuf.
Always return zero. */
-attribute_hidden
+int __sigjmp_save (sigjmp_buf env, int savemask) attribute_hidden;
int __sigjmp_save (sigjmp_buf env, int savemask)
{
env[0].__mask_was_saved = (savemask &&
/* Set the handler for the signal SIG to HANDLER,
returning the old handler, or SIG_ERR on error. */
+extern __typeof(bsd_signal) __bsd_signal;
attribute_hidden __sighandler_t
__bsd_signal (int sig, __sighandler_t handler)
{
libc_hidden_proto(sigwaitinfo)
-int attribute_hidden __sigwait (const sigset_t *set, int *sig)
+int __sigwait (const sigset_t *set, int *sig) attribute_hidden;
+int __sigwait (const sigset_t *set, int *sig)
{
int ret = 1;
if ((ret = sigwaitinfo(set, NULL)) != -1) {
#define FPO_STR_WIDTH (0x80 | ' ');
#define FPO_STR_PREC 'p'
-ssize_t attribute_hidden _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
+ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
+ __fp_outfunc_t fp_outfunc) attribute_hidden;
+ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
__fp_outfunc_t fp_outfunc)
{
#ifdef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
#include "_stdio.h"
#include <printf.h>
-uintmax_t attribute_hidden _load_inttype(int desttype, register const void *src, int uflag)
+uintmax_t _load_inttype(int desttype, register const void *src, int uflag) attribute_hidden;
+uintmax_t _load_inttype(int desttype, register const void *src, int uflag)
{
if (uflag >= 0) { /* unsigned */
#if LONG_MAX != INT_MAX
/* We assume int may be short or long, but short and long are different. */
-void attribute_hidden _store_inttype(register void *dest, int desttype, uintmax_t val)
+void _store_inttype(register void *dest, int desttype, uintmax_t val) attribute_hidden;
+void _store_inttype(register void *dest, int desttype, uintmax_t val)
{
if (desttype == __PA_FLAG_CHAR) { /* assume char not int */
*((unsigned char *) dest) = val;
* with the same dso handle. Otherwise, if D is NULL, call all of the
* registered handlers.
*/
+void __cxa_finalize (void *dso_handle);
void __cxa_finalize (void *dso_handle)
{
struct exit_function *efp;
struct drand48_data __libc_drand48_data attribute_hidden;
-int attribute_hidden
+int __drand48_iterate (unsigned short int xsubi[3], struct drand48_data *buffer) attribute_hidden;
+int
__drand48_iterate (unsigned short int xsubi[3], struct drand48_data *buffer)
{
uint64_t X;
#include <limits.h> /* for PATH_MAX */
#include <sys/param.h> /* for MAXPATHLEN */
#include <errno.h>
+#include <stdlib.h>
#include <sys/stat.h> /* for S_IFLNK */
must be used directly. This is all complicated by the fact that we try
to reuse values once generated for a `setenv' call since we can never
free the strings. */
-int attribute_hidden __add_to_environ (const char *name, const char *value,
+int __add_to_environ (const char *name, const char *value,
+ const char *combined, int replace) attribute_hidden;
+int __add_to_environ (const char *name, const char *value,
const char *combined, int replace)
{
register char **ep;
#include <signal.h>
#include <unistd.h>
#include <sys/wait.h>
+#include <stdlib.h>
libc_hidden_proto(_exit)
libc_hidden_proto(wait4)
/* uClinux-2.0 has vfork, but Linux 2.0 doesn't */
#include <sys/syscall.h>
-#if ! defined __NR_vfork
-#define vfork fork
+#ifndef __NR_vfork
+# define vfork fork
libc_hidden_proto(fork)
#endif
-int __libc_system(char *command)
+extern __typeof(system) __libc_system;
+int __libc_system(const char *command)
{
int wait_val, pid;
__sighandler_t save_quit, save_int, save_chld;
*/
#include "_string.h"
+#include <libgen.h>
char *__xpg_basename(register char *path)
{
*/
#include "_string.h"
+#include <libgen.h>
char *dirname(char *path)
{
#include <features.h>
#include <stdio.h>
#include <string.h>
+#include <signal.h>
libc_hidden_proto(fprintf)
libc_hidden_proto(strsignal)
* Returns strlen(src), so truncation occurred if the return value is >= n. */
#ifdef WANT_WIDE
-attribute_hidden
+size_t Wstrlcpy(register Wchar *__restrict dst,
+ register const Wchar *__restrict src,
+ size_t n) attribute_hidden;
#endif
size_t Wstrlcpy(register Wchar *__restrict dst,
register const Wchar *__restrict src,
/* This routine is jumped to by all the syscall handlers, to stash
* an error number into errno. */
-int attribute_hidden __syscall_error(int err_no)
+int __syscall_error(int err_no) attribute_hidden;
+int __syscall_error(int err_no)
{
__set_errno(-err_no);
return -1;
extern void __default_sa_restorer(void);
extern void __default_rt_sa_restorer(void);
+extern __typeof(sigaction) __libc_sigaction;
+
/* When RT signals are in use we need to use a different return stub. */
#ifdef __NR_rt_sigreturn
#define choose_restorer(flags) \
#include "syscalls.h"
#ifdef __NR_socketcall
#define __NR___socketcall __NR_socketcall
-attribute_hidden _syscall2(int, __socketcall, int, call, unsigned long *, args);
+int __socketcall(int __call, unsigned long *__args) attribute_hidden;
+_syscall2(int, __socketcall, int, call, unsigned long *, args);
#endif
#ifdef __NR_ipc
#define __NR___syscall_ipc __NR_ipc
-attribute_hidden _syscall5(int, __syscall_ipc, unsigned int, call, int, first, int, second, int,
+#include "../../../misc/sysvipc/ipc.h"
+_syscall5(int, __syscall_ipc, unsigned int, call, int, first, int, second, int,
third, void *, ptr);
#endif
#ifdef __NR_rt_sigaction
#include <signal.h>
+int __syscall_rt_sigaction (int __signum, const struct sigaction *__act, struct sigaction *__oldact, size_t __size) attribute_hidden;
#define __NR___syscall_rt_sigaction __NR_rt_sigaction
-#undef sigaction
-attribute_hidden _syscall4(int, __syscall_rt_sigaction, int, signum,
+_syscall4(int, __syscall_rt_sigaction, int, signum,
const struct sigaction *, act, struct sigaction *, oldact,
size_t, size);
#endif
#ifndef __NR_rt_sigaction
#define __NR___syscall_sigaction __NR_sigaction
#include <signal.h>
-#undef sigaction
-attribute_hidden _syscall3(int, __syscall_sigaction, int, signum, const struct sigaction *,
+int __syscall_sigaction (int __signum, const struct sigaction *__act, struct sigaction *__oldact) attribute_hidden;
+_syscall3(int, __syscall_sigaction, int, signum, const struct sigaction *,
act, struct sigaction *, oldact);
#endif
*/
#include "syscalls.h"
+int capget(void *header, void *data);
#ifdef __NR_capget
_syscall2(int, capget, void *, header, void *, data);
#else
*/
#include "syscalls.h"
+int capset(void *header, const void *data);
#ifdef __NR_capset
_syscall2(int, capset, void *, header, const void *, data);
#else
#include "syscalls.h"
#include <unistd.h>
+extern __typeof(close) __libc_close;
#define __NR___libc_close __NR_close
_syscall1(int, __libc_close, int, fd);
libc_hidden_proto(close)
#ifdef __NR_create_module
+unsigned long create_module(const char *name, size_t size);
+
#if defined(__UCLIBC_BROKEN_CREATE_MODULE__)
# define __NR___create_module __NR_create_module
static inline _syscall2(long, __create_module, const char *, name, size_t, size);
#endif
#else /* !__NR_create_module */
+caddr_t create_module(const char *name attribute_unused, size_t size attribute_unused);
caddr_t create_module(const char *name attribute_unused, size_t size attribute_unused)
{
__set_errno(ENOSYS);
*/
#include "syscalls.h"
+int delete_module(const char *name);
#ifdef __NR_delete_module
_syscall1(int, delete_module, const char *, name);
#else
#ifdef __ARCH_HAS_MMU__
#ifdef __NR_fork
+extern __typeof(fork) __libc_fork;
#define __NR___libc_fork __NR_fork
_syscall0(pid_t, __libc_fork);
libc_hidden_proto(fork)
#include "syscalls.h"
#include <unistd.h>
+extern __typeof(fsync) __libc_fsync;
#define __NR___libc_fsync __NR_fsync
_syscall1(int, __libc_fsync, int, fd);
weak_alias(__libc_fsync, fsync)
#include "syscalls.h"
struct kernel_sym;
+int get_kernel_syms(struct kernel_sym *table attribute_unused);
#ifdef __NR_get_kernel_syms
_syscall1(int, get_kernel_syms, struct kernel_sym *, table);
#else
/* Return the system page size. */
/* couldn't make __getpagesize hidden, because shm.h uses it in a macro */
+extern __typeof(getpagesize) __getpagesize;
int __getpagesize(void)
{
if (__pagesize != 0)
*/
#include "syscalls.h"
+#include <unistd.h>
#define __NR___syscall_getpgid __NR_getpgid
static inline _syscall1(__kernel_pid_t, __syscall_getpgid, __kernel_pid_t, pid);
#include "syscalls.h"
#include <unistd.h>
+extern __typeof(getpid) __libc_getpid;
#if defined __NR_getxpid
# define __NR_getpid __NR_getxpid
#endif
*/
#include "syscalls.h"
+#include <unistd.h>
#ifdef __NR_getresgid
# define __NR___syscall_getresgid __NR_getresgid
*/
#include "syscalls.h"
+#include <unistd.h>
#ifdef __NR_getresuid
# define __NR___syscall_getresuid __NR_getresuid
*/
#include "syscalls.h"
+int init_module(void *first, void *second, void *third, void *fourth, void *fifth);
#ifdef __NR_init_module
/* This may have 5 arguments (for old 2.0 kernels) or 2 arguments
* (for 2.2 and 2.4 kernels). Use the greatest common denominator,
#include "syscalls.h"
#if defined __ARCH_HAS_MMU__ && defined __NR_ioperm
+#include <sys/perm.h>
_syscall3(int, ioperm, unsigned long, from, unsigned long, num, int, turn_on);
#endif
#include "syscalls.h"
/* Tuns out the m68k unistd.h kernel header is broken */
#if defined __ARCH_HAS_MMU__ && defined __NR_iopl && ( !defined(__mc68000__))
+#include <sys/perm.h>
_syscall1(int, iopl, int, level);
#endif
#include "syscalls.h"
#include <unistd.h>
+#include <sys/klog.h>
#define __NR__syslog __NR_syslog
static inline _syscall3(int, _syslog, int, type, char *, buf, int, len);
int klogctl(int type, char *buf, int len)
#include "syscalls.h"
#include <unistd.h>
+extern __typeof(lseek64) __libc_lseek64;
+
#if defined __NR__llseek && defined __UCLIBC_HAS_LFS__
# ifndef INLINE_SYSCALL
extern void __longjmp (__jmp_buf __env, int __val) attribute_noreturn;
libc_hidden_proto(__longjmp)
+extern __typeof(longjmp) __libc_longjmp attribute_noreturn;
/* Set the signal mask to the one specified in ENV, and jump
to the position specified in ENV, causing the setjmp
call there to return VAL, or 1 if VAL is 0. */
-void attribute_noreturn __libc_longjmp (sigjmp_buf env, int val)
+void __libc_longjmp (sigjmp_buf env, int val)
{
#if 0
/* Perform any cleanups needed by the frames being unwound. */
*/
#include "syscalls.h"
+#include <sys/mman.h>
#ifdef __NR_madvise
_syscall3(int, madvise, void *, __addr, size_t, __len, int, __advice);
#endif
#include "syscalls.h"
#include <unistd.h>
+#include <sys/mman.h>
#ifdef __NR_mincore
_syscall3(int, mincore, void *, start, size_t, length, unsigned char *, vec);
#include "syscalls.h"
+int modify_ldt (int func, void *ptr, unsigned long bytecount);
#ifdef __NR_modify_ldt
_syscall3(int, modify_ldt, int, func, void *, ptr, unsigned long, bytecount);
#endif
#include <unistd.h>
#include <sys/mman.h>
+extern __typeof(msync) __libc_msync;
#define __NR___libc_msync __NR_msync
_syscall3(int, __libc_msync, void *, addr, size_t, length, int, flags);
weak_alias(__libc_msync,msync)
#include "syscalls.h"
#include <time.h>
-
+extern __typeof(nanosleep) __libc_nanosleep;
#define __NR___libc_nanosleep __NR_nanosleep
_syscall2(int, __libc_nanosleep, const struct timespec *, req,
struct timespec *, rem);
#include <libc-internal.h>
void
+__cyg_profile_func_enter (attribute_unused void *this_fn, attribute_unused void *call_site);
+void
__cyg_profile_func_enter (attribute_unused void *this_fn, attribute_unused void *call_site)
{
}
# define O_LARGEFILE 0100000
#endif
+extern __typeof(open64) __libc_open64;
extern __typeof(open) __libc_open;
libc_hidden_proto(__libc_open)
#include "syscalls.h"
#include <unistd.h>
+extern __typeof(pause) __libc_pause;
#ifdef __NR_pause
#define __NR___libc_pause __NR_pause
_syscall0(int, __libc_pause);
#include "syscalls.h"
+int pivot_root(const char *new_root, const char *put_old);
#ifdef __NR_pivot_root
_syscall2(int, pivot_root, const char *, new_root, const char *, put_old);
#else
#include "syscalls.h"
#include <stdarg.h>
-//#include <sys/prctl.h>
+/* psm: including sys/prctl.h would depend on kernel headers */
+extern int prctl (int, int, int, int, int);
_syscall5(int, prctl, int, a, int, b, int, c, int, d, int, e);
#include <unistd.h>
#include <stdint.h>
+extern __typeof(pread) __libc_pread;
+extern __typeof(pwrite) __libc_pwrite;
+#ifdef __UCLIBC_HAS_LFS__
+extern __typeof(pread64) __libc_pread64;
+extern __typeof(pwrite64) __libc_pwrite64;
+#endif
+
#ifdef __NR_pread
# define __NR___syscall_pread __NR_pread
*/
#include "syscalls.h"
+int query_module(const char *name attribute_unused, int which attribute_unused,
+ void *buf attribute_unused, size_t bufsize attribute_unused, size_t * ret attribute_unused);
#ifdef __NR_query_module
_syscall5(int, query_module, const char *, name, int, which,
void *, buf, size_t, bufsize, size_t *, ret);
#include "syscalls.h"
#include <unistd.h>
+extern __typeof(read) __libc_read;
#define __NR___libc_read __NR_read
_syscall3(ssize_t, __libc_read, int, fd, __ptr_t, buf, size_t, count);
libc_hidden_proto(read)
*/
#include "syscalls.h"
+#include <sys/reboot.h>
#define __NR__reboot __NR_reboot
static inline _syscall3(int, _reboot, int, magic, int, magic2, int, flag);
int reboot(int flag)
/* On some architectures, this helps needless PIC pointer setup
that would be needed just for the __stack_chk_fail call. */
-void attribute_noreturn attribute_hidden
-__stack_chk_fail_local (void)
+void __stack_chk_fail_local (void) attribute_noreturn attribute_hidden;
+void __stack_chk_fail_local (void)
{
__stack_chk_fail ();
}
_exit(127);
}
-void attribute_noreturn __stack_smash_handler(char func[], int damaged __attribute__ ((unused)));
-void attribute_noreturn __stack_smash_handler(char func[], int damaged)
+void __stack_smash_handler(char func[], int damaged __attribute__ ((unused))) attribute_noreturn;
+void __stack_smash_handler(char func[], int damaged)
{
static const char message[] = ": stack smashing attack in function ";
terminate();
}
-void attribute_noreturn __stack_chk_fail(void)
+void __stack_chk_fail(void) attribute_noreturn;
+void __stack_chk_fail(void)
{
static const char msg1[] = "stack smashing detected: ";
static const char msg3[] = " terminated";
}
#if 0
-void attribute_noreturn __chk_fail(void)
+void __chk_fail(void) attribute_noreturn;
+void __chk_fail(void)
{
static const char msg1[] = "buffer overflow detected: ";
static const char msg3[] = " terminated";
*/
#include "syscalls.h"
+/* psm: including sys/sysctl.h would depend on kernel headers */
+extern int sysctl (int *__name, int __nlen, void *__oldval,
+ size_t *__oldlenp, void *__newval, size_t __newlen) __THROW;
+
struct __sysctl_args {
int *name;
int nlen;
#include "syscalls.h"
#include <unistd.h>
#ifdef __NR_uselib
+int uselib (const char *library);
_syscall1(int, uselib, const char *, library);
#endif
libc_hidden_proto(wait4)
+extern __typeof(wait) __libc_wait;
+
/* Wait for a child to die. When one does, put its status in *STAT_LOC
* and return its process ID. For errors, return (pid_t) -1. */
__pid_t __libc_wait (__WAIT_STATUS_DEFN stat_loc)
#include <sys/resource.h>
libc_hidden_proto(wait4)
-
+
+extern __typeof(waitpid) __libc_waitpid;
__pid_t __libc_waitpid(__pid_t pid, int *wait_stat, int options)
{
return wait4(pid, wait_stat, options, NULL);
#include "syscalls.h"
#include <unistd.h>
+extern __typeof(write) __libc_write;
#define __NR___libc_write __NR_write
_syscall3(ssize_t, __libc_write, int, fd, const __ptr_t, buf, size_t, count);
libc_hidden_proto(write)
#include "syscalls.h"
#include <unistd.h>
+#include <sys/xattr.h>
/* sets */
#ifdef __NR_setxattr
#endif
#ifdef __NR_flistxattr
-_syscall3(size_t, flistxattr, int, filedes, char *, list, size_t, size);
+_syscall3(ssize_t, flistxattr, int, filedes, char *, list, size_t, size);
#else
ssize_t flistxattr(int __fd, char *__list, size_t __size)
{
/* This routine is jumped to by all the syscall handlers, to stash
* an error number into errno. */
-int attribute_hidden __syscall_error(int err_no)
+int __syscall_error(int err_no) attribute_hidden;
+int __syscall_error(int err_no)
{
__set_errno(err_no);
return -1;
#include <errno.h>
#include <features.h>
-int attribute_hidden __syscall_error(void)
+int __syscall_error(void) attribute_hidden;
+int __syscall_error(void)
{
register int edx __asm__ ("%edx");
__asm__ ("mov %eax, %edx\n\t"
#define SA_RESTORER 0x04000000
+extern __typeof(sigaction) __libc_sigaction;
#if defined __NR_rt_sigaction
libc_hidden_proto(memcpy)
/* This routine is jumped to by all the syscall handlers, to stash
* an error number into errno. */
-int attribute_hidden __syscall_error(void)
+int __syscall_error(void) attribute_hidden;
+int __syscall_error(void)
{
register int err_no asm("%d0");
__set_errno(-err_no);
extern void __longjmp (__jmp_buf __env, int __val) attribute_noreturn;
libc_hidden_proto(__longjmp)
-void attribute_noreturn __longjmp (__jmp_buf env, int val_arg)
+void __longjmp (__jmp_buf env, int val_arg)
{
/* gcc 1.39.19 miscompiled the longjmp routine (as it did setjmp before
the hack around it); force it to use $a1 for the longjmp value.
/* This routine is jumped to by all the syscall handlers, to stash
* an error number into errno. */
-int attribute_hidden __syscall_error(int err_no)
+int __syscall_error(int err_no) attribute_hidden;
+int __syscall_error(int err_no)
{
__set_errno(err_no);
return -1;
#define SA_RESTORER 0x04000000
+extern __typeof(sigaction) __libc_sigaction;
-#if defined __NR_rt_sigaction
+#ifdef __NR_rt_sigaction
libc_hidden_proto(memcpy)
/* This routine is jumped to by all the syscall handlers, to stash
* an error number into errno. */
-int attribute_hidden __syscall_error(int err_no)
+int __syscall_error(int err_no) attribute_hidden;
+int __syscall_error(int err_no)
{
__set_errno(err_no);
return -1;
/* This routine is jumped to by all the syscall handlers, to stash
* an error number into errno. */
-int attribute_hidden __syscall_error(int err_no)
+int __syscall_error(int err_no) attribute_hidden;
+int __syscall_error(int err_no)
{
__set_errno(err_no);
return -1;
/* This routine is jumped to by all the syscall handlers, to stash
* an error number into errno. */
-int attribute_hidden __syscall_error(void)
+int __syscall_error(void) attribute_hidden;
+int __syscall_error(void)
{
register int err_no asm("%rax");
__set_errno(-err_no);
/* We do not globally define the SA_RESTORER flag so do it here. */
#define SA_RESTORER 0x04000000
-#if defined __NR_rt_sigaction
+extern __typeof(sigaction) __libc_sigaction;
+
+#ifdef __NR_rt_sigaction
/* Using the hidden attribute here does not change the code but it
helps to avoid warnings. */
extern void restore_rt (void) asm ("__restore_rt") attribute_hidden;
libc_hidden_proto(ioctl)
+extern __typeof(tcdrain) __libc_tcdrain;
/* Wait for pending output to be written on FD. */
int __libc_tcdrain (int fd)
{
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include <stdio.h>
libc_hidden_proto(strcpy)
libc_hidden_proto(strncpy)
block[(i << 5) | j] = (io[i] & bits32[j]) ? 1 : 0;
}
-char attribute_hidden *
+char *__des_crypt(const char *key, const char *setting) attribute_hidden;
+char *
__des_crypt(const char *key, const char *setting)
{
u_int32_t count, salt, l, r0, r1, keybuf[2];
#include "math_private.h"
+double gamma_r(double x, int *signgamp);
#ifdef __STDC__
double gamma_r(double x, int *signgamp) /* wrapper lgamma_r */
#else
void __pthread_manager_adjust_prio(int thread_prio);
void __pthread_initialize_minimal (void);
+extern void __pthread_exit (void *retval);
+
extern int __pthread_attr_setguardsize __P ((pthread_attr_t *__attr,
size_t __guardsize));
extern int __pthread_attr_getguardsize __P ((__const pthread_attr_t *__attr,