about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux')
-rw-r--r--sysdeps/unix/sysv/linux/Dist3
-rw-r--r--sysdeps/unix/sysv/linux/Makefile4
-rw-r--r--sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h2
-rw-r--r--sysdeps/unix/sysv/linux/alpha/mmap64.c1
-rw-r--r--sysdeps/unix/sysv/linux/alpha/net/route.h140
-rw-r--r--sysdeps/unix/sysv/linux/alpha/syscalls.list4
-rw-r--r--sysdeps/unix/sysv/linux/bits/socket.h3
-rw-r--r--sysdeps/unix/sysv/linux/i386/Dist2
-rw-r--r--sysdeps/unix/sysv/linux/i386/sigaction.c4
-rw-r--r--sysdeps/unix/sysv/linux/net/route.h3
-rw-r--r--sysdeps/unix/sysv/linux/netatalk/at.h6
-rw-r--r--sysdeps/unix/sysv/linux/netax25/ax25.h147
-rw-r--r--sysdeps/unix/sysv/linux/netrom/netrom.h80
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c7
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/kernel_termios.h2
-rw-r--r--sysdeps/unix/sysv/linux/sigaction.c4
-rw-r--r--sysdeps/unix/sysv/linux/sigpending.c2
-rw-r--r--sysdeps/unix/sysv/linux/sigprocmask.c2
-rw-r--r--sysdeps/unix/sysv/linux/sigsuspend.c4
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c1
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list1
-rw-r--r--sysdeps/unix/sysv/linux/stdio_lim.h.in5
-rw-r--r--sysdeps/unix/sysv/linux/sys/kd.h4
-rw-r--r--sysdeps/unix/sysv/linux/sys/mman.h10
24 files changed, 410 insertions, 31 deletions
diff --git a/sysdeps/unix/sysv/linux/Dist b/sysdeps/unix/sysv/linux/Dist
index e22cec7dec..6743794281 100644
--- a/sysdeps/unix/sysv/linux/Dist
+++ b/sysdeps/unix/sysv/linux/Dist
@@ -5,6 +5,7 @@ kernel_sigaction.h
 kernel_stat.h
 kernel_termios.h
 llseek.c
+oldsiglist.c
 s_pread64.c
 s_pwrite64.c
 siglist.h
@@ -21,6 +22,7 @@ net/ppp-comp.h
 net/ppp_defs.h
 net/route.h
 netatalk/at.h
+netax25/ax25.h
 netinet/if_fddi.h
 netinet/if_tr.h
 netinet/igmp.h
@@ -30,6 +32,7 @@ netinet/ip_icmp.h
 netinet/tcp.h
 netinet/udp.h
 netipx/ipx.h
+netrom/netrom.h
 nfs/nfs.h
 rt_sigaction.c
 rt_sigpending.c
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 152c7984bd..29f1566753 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -69,7 +69,7 @@ ifeq ($(subdir),stdio-common)
 inhibit-siglist := yes
 
 ifeq ($(versioning),yes)
-aux += oldsiglist
+sysdep_routines += oldsiglist
 endif
 
 shared-only-routines += oldsiglist
@@ -79,7 +79,7 @@ ifeq ($(subdir),inet)
 sysdep_headers += netinet/in_systm.h netinet/udp.h \
 		  netinet/if_fddi.h netinet/if_tr.h netinet/igmp.h \
 		  netinet/ip_fw.h  netinet/ip_icmp.h netipx/ipx.h \
-		  sys/socketvar.h
+		  sys/socketvar.h netax25/ax25.h netrom/netrom.h
 endif
 
 ifeq ($(subdir),posix)
diff --git a/sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h b/sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h
index 6f8bc9bcd4..f8c42e0a1e 100644
--- a/sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h
+++ b/sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h
@@ -1,7 +1,7 @@
 /* This is the sigaction struction from the Linux 2.1.20 kernel.  */
 
 struct old_kernel_sigaction {
-	__sighandler_t sa_handler;
+	__sighandler_t k_sa_handler;
 	unsigned long sa_mask;
 	unsigned int sa_flags;
 };
diff --git a/sysdeps/unix/sysv/linux/alpha/mmap64.c b/sysdeps/unix/sysv/linux/alpha/mmap64.c
new file mode 100644
index 0000000000..0dbd384a6a
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/alpha/mmap64.c
@@ -0,0 +1 @@
+/* mmap64 is the same as mmap. */
diff --git a/sysdeps/unix/sysv/linux/alpha/net/route.h b/sysdeps/unix/sysv/linux/alpha/net/route.h
new file mode 100644
index 0000000000..6c7d8dd015
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/alpha/net/route.h
@@ -0,0 +1,140 @@
+/* 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.  */
+
+/* Based on the 4.4BSD and Linux version of this file.  */
+
+#ifndef _NET_ROUTE_H
+#define _NET_ROUTE_H	1
+
+#include <features.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+
+
+/* This structure gets passed by the SIOCADDRT and SIOCDELRT calls. */
+struct rtentry
+  {
+    unsigned long int rt_pad1;
+    struct sockaddr rt_dst;		/* Target address.  */
+    struct sockaddr rt_gateway;		/* Gateway addr (RTF_GATEWAY).  */
+    struct sockaddr rt_genmask;		/* Target network mask (IP).  */
+    unsigned short int rt_flags;
+    short int rt_pad2;
+    unsigned long int rt_pad3;
+    unsigned char rt_tos;
+    unsigned char rt_class;
+    short int rt_pad4[3];
+    short int rt_metric;		/* +1 for binary compatibility!  */
+    char *rt_dev;			/* Forcing the device at add.  */
+    unsigned long int rt_mtu;		/* Per route MTU/Window.  */
+    unsigned long int rt_window;	/* Window clamping.  */
+    unsigned short int rt_irtt;		/* Initial RTT.  */
+  };
+/* Compatibility hack.  */
+#define rt_mss	rt_mtu
+
+
+struct in6_rtmsg
+  {
+    struct in6_addr rtmsg_dst;
+    struct in6_addr rtmsg_src;
+    struct in6_addr rtmsg_gateway;
+    u_int32_t rtmsg_type;
+    u_int16_t rtmsg_dst_len;
+    u_int16_t rtmsg_src_len;
+    u_int32_t rtmsg_metric;
+    unsigned long int rtmsg_info;
+    u_int32_t rtmsg_flags;
+    int rtmsg_ifindex;
+  };
+
+
+#define	RTF_UP		0x0001		/* Route usable.  */
+#define	RTF_GATEWAY	0x0002		/* Destination is a gateway.  */
+
+#define	RTF_HOST	0x0004		/* Host entry (net otherwise).  */
+#define RTF_REINSTATE	0x0008		/* Reinstate route after timeout.  */
+#define	RTF_DYNAMIC	0x0010		/* Created dyn. (by redirect).  */
+#define	RTF_MODIFIED	0x0020		/* Modified dyn. (by redirect).  */
+#define RTF_MTU		0x0040		/* Specific MTU for this route.  */
+#define RTF_MSS		RTF_MTU		/* Compatibility.  */
+#define RTF_WINDOW	0x0080		/* Per route window clamping.  */
+#define RTF_IRTT	0x0100		/* Initial round trip time.  */
+#define RTF_REJECT	0x0200		/* Reject route.  */
+#define	RTF_STATIC	0x0400		/* Manually injected route.  */
+#define	RTF_XRESOLVE	0x0800		/* External resolver.  */
+#define RTF_NOFORWARD   0x1000		/* Forwarding inhibited.  */
+#define RTF_THROW	0x2000		/* Go to next class.  */
+#define RTF_NOPMTUDISC  0x4000		/* Do not send packets with DF.  */
+
+/* for IPv6 */
+#define RTF_DEFAULT	0x00010000	/* default - learned via ND	*/
+#define RTF_ALLONLINK	0x00020000	/* fallback, no routers on link	*/
+#define RTF_ADDRCONF	0x00040000	/* addrconf route - RA		*/
+
+#define RTF_LINKRT	0x00100000	/* link specific - device match	*/
+#define RTF_NONEXTHOP	0x00200000	/* route with no nexthop	*/
+
+#define RTF_CACHE	0x01000000	/* cache entry			*/
+#define RTF_FLOW	0x02000000	/* flow significant route	*/
+#define RTF_POLICY	0x04000000	/* policy route			*/
+
+#define RTCF_VALVE	0x00200000
+#define RTCF_MASQ	0x00400000
+#define RTCF_NAT	0x00800000
+#define RTCF_DOREDIRECT 0x01000000
+#define RTCF_LOG	0x02000000
+#define RTCF_DIRECTSRC	0x04000000
+
+#define RTF_LOCAL	0x80000000
+#define RTF_INTERFACE	0x40000000
+#define RTF_MULTICAST	0x20000000
+#define RTF_BROADCAST	0x10000000
+#define RTF_NAT		0x08000000
+
+#define RTF_ADDRCLASSMASK	0xF8000000
+#define RT_ADDRCLASS(flags)	((__u_int32_t) flags >> 23)
+
+#define RT_TOS(tos)		((tos) & IPTOS_TOS_MASK)
+
+#define RT_LOCALADDR(flags)	((flags & RTF_ADDRCLASSMASK) \
+				 == (RTF_LOCAL|RTF_INTERFACE))
+
+#define RT_CLASS_UNSPEC		0
+#define RT_CLASS_DEFAULT	253
+
+#define RT_CLASS_MAIN		254
+#define RT_CLASS_LOCAL		255
+#define RT_CLASS_MAX		255
+
+
+#define RTMSG_ACK		NLMSG_ACK
+#define RTMSG_OVERRUN		NLMSG_OVERRUN
+
+#define RTMSG_NEWDEVICE		0x11
+#define RTMSG_DELDEVICE		0x12
+#define RTMSG_NEWROUTE		0x21
+#define RTMSG_DELROUTE		0x22
+#define RTMSG_NEWRULE		0x31
+#define RTMSG_DELRULE		0x32
+#define RTMSG_CONTROL		0x40
+
+#define RTMSG_AR_FAILED		0x51	/* Address Resolution failed.  */
+
+#endif /* net/route.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/syscalls.list b/sysdeps/unix/sysv/linux/alpha/syscalls.list
index af964718bc..9406892124 100644
--- a/sysdeps/unix/sysv/linux/alpha/syscalls.list
+++ b/sysdeps/unix/sysv/linux/alpha/syscalls.list
@@ -19,13 +19,13 @@ osf_sigprocmask	-	osf_sigprocmask	2	__osf_sigprocmask
 
 getpeername	-	getpeername	3	__getpeername	getpeername
 getpriority	-	getpriority	2	__getpriority	getpriority
-mmap		-	mmap		6	__mmap		mmap
+mmap		-	mmap		6	__mmap		mmap __mmap64 mmap64
 llseek		EXTRA	lseek		3	__llseek	llseek lseek64
 pread		EXTRA	pread		4	__pread		pread __pread64 pread64
 pwrite		EXTRA	pwrite		4	__pwrite	pwrite __pwrite64 pwrite64
 fstatfs		-	fstatfs		2	__fstatfs	fstatfs fstatfs64
 statfs		-	statfs		2	__statfs	statfs statfs64
-getrlimit	-	getrlimit	2	getrlimit	getrlimit64
+getrlimit	-	getrlimit	2	__getrlimit	getrlimit getrlimit64
 setrlimit	-	setrlimit	2	setrlimit	setrlimit64
 ftruncate	-	ftruncate	2	ftruncate	ftruncate64
 truncate	-	truncate	2	truncate	truncate64
diff --git a/sysdeps/unix/sysv/linux/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h
index 42a4f8b74f..34c2be4271 100644
--- a/sysdeps/unix/sysv/linux/bits/socket.h
+++ b/sysdeps/unix/sysv/linux/bits/socket.h
@@ -107,9 +107,6 @@ enum __socket_type
 #define SOL_IPV6        41
 #define SOL_ICMPV6      58
 #define SOL_RAW		255
-#define SOL_AX25        257
-#define SOL_ATALK       258
-#define SOL_NETROM      259
 #define SOL_ROSE        260
 #define SOL_DECNET      261
 #define SOL_X25         262
diff --git a/sysdeps/unix/sysv/linux/i386/Dist b/sysdeps/unix/sysv/linux/i386/Dist
index d762dc9416..75955fcc15 100644
--- a/sysdeps/unix/sysv/linux/i386/Dist
+++ b/sysdeps/unix/sysv/linux/i386/Dist
@@ -1,4 +1,6 @@
 bits/mman.h
 clone.S
+s_pwrite64.S
+s_pread64.S
 sys/perm.h
 sys/vm86.h
diff --git a/sysdeps/unix/sysv/linux/i386/sigaction.c b/sysdeps/unix/sysv/linux/i386/sigaction.c
index 05d187c432..90818c1dff 100644
--- a/sysdeps/unix/sysv/linux/i386/sigaction.c
+++ b/sysdeps/unix/sysv/linux/i386/sigaction.c
@@ -32,8 +32,8 @@ extern int __syscall_rt_sigaction (int, const struct sigaction *,
 				   struct sigaction *, size_t);
 
 /* The variable is shared between all wrappers around signal handling
-   functions which have RT equivalents.  It is defined in sigsuspend.c.  */
-extern int __libc_have_rt_sigs;
+   functions which have RT equivalents.  */
+int __libc_have_rt_sigs = -1;
 
 
 /* If ACT is not NULL, change the action for SIG to *ACT.
diff --git a/sysdeps/unix/sysv/linux/net/route.h b/sysdeps/unix/sysv/linux/net/route.h
index 2450d5154a..6cccbeee2e 100644
--- a/sysdeps/unix/sysv/linux/net/route.h
+++ b/sysdeps/unix/sysv/linux/net/route.h
@@ -19,10 +19,9 @@
 /* Based on the 4.4BSD and Linux version of this file.  */
 
 #ifndef _NET_ROUTE_H
-
 #define _NET_ROUTE_H	1
-#include <features.h>
 
+#include <features.h>
 #include <sys/socket.h>
 #include <sys/types.h>
 #include <netinet/in.h>
diff --git a/sysdeps/unix/sysv/linux/netatalk/at.h b/sysdeps/unix/sysv/linux/netatalk/at.h
index e0ccff8552..4c586106c6 100644
--- a/sysdeps/unix/sysv/linux/netatalk/at.h
+++ b/sysdeps/unix/sysv/linux/netatalk/at.h
@@ -16,8 +16,8 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef __NETATALK_ATALK_H
-#define __NETATALK_ATALK_H 1
+#ifndef _NETATALK_AT_H
+#define _NETATALK_AT_H 1
 
 #include <asm/types.h>
 #include <sys/socket.h>
@@ -25,4 +25,4 @@
 
 #define SOL_ATALK       258     /* sockopt level for atalk */
 
-#endif
+#endif	/* netatalk/at.h */
diff --git a/sysdeps/unix/sysv/linux/netax25/ax25.h b/sysdeps/unix/sysv/linux/netax25/ax25.h
new file mode 100644
index 0000000000..1bec5920aa
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/netax25/ax25.h
@@ -0,0 +1,147 @@
+/* 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 _NETAX25_AX25_H
+#define _NETAX25_AX25_H	1
+
+#include <features.h>
+#include <bits/sockaddr.h>
+
+/* Setsockoptions(2) level.  Thanks to BSD these must match IPPROTO_xxx.  */
+#define SOL_AX25	257
+
+/* AX.25 flags: */
+#define AX25_WINDOW	1
+#define AX25_T1		2
+#define AX25_T2		5
+#define AX25_T3		4
+#define AX25_N2		3
+#define AX25_BACKOFF	6
+#define AX25_EXTSEQ	7
+#define AX25_IDLE	9
+#define	AX25_PACLEN	10
+#define AX25_IPMAXQUEUE 11
+#define AX25_KILL	99
+
+/* AX.25 socket ioctls: */
+#define SIOCAX25GETUID		(SIOCPROTOPRIVATE)
+#define SIOCAX25ADDUID		(SIOCPROTOPRIVATE+1)
+#define SIOCAX25DELUID		(SIOCPROTOPRIVATE+2)
+#define SIOCAX25NOUID		(SIOCPROTOPRIVATE+3)
+#define SIOCAX25BPQADDR		(SIOCPROTOPRIVATE+4)
+#define SIOCAX25GETPARMS	(SIOCPROTOPRIVATE+5)
+#define SIOCAX25SETPARMS	(SIOCPROTOPRIVATE+6)
+#define SIOCAX25OPTRT		(SIOCPROTOPRIVATE+7)
+#define SIOCAX25CTLCON		(SIOCPROTOPRIVATE+8)
+
+/* unknown: */
+#define AX25_NOUID_DEFAULT	0
+#define AX25_NOUID_BLOCK	1
+#define AX25_SET_RT_IPMODE	2
+
+/* Digipeating flags: */
+#define AX25_DIGI_INBAND	0x01	/* Allow digipeating within port */
+#define AX25_DIGI_XBAND		0x02	/* Allow digipeating across ports */
+
+/* Maximim number of digipeaters: */
+#define AX25_MAX_DIGIS 8
+
+
+typedef struct
+  {
+    char ax25_call[7];		/* 6 call + SSID (shifted ascii) */
+  }
+ax25_address;
+
+struct sockaddr_ax25
+  {
+    sa_family_t sax25_family;
+    ax25_address sax25_call;
+    int sax25_ndigis;
+  };
+
+/*
+ * The sockaddr struct with the digipeater adresses:
+ */
+struct full_sockaddr_ax25
+  {
+    struct sockaddr_ax25 fsa_ax25;
+    ax25_address fsa_digipeater[AX25_MAX_DIGIS];
+  };
+#define sax25_uid	sax25_ndigis
+
+struct ax25_routes_struct
+  {
+    ax25_address port_addr;
+    ax25_address dest_addr;
+    unsigned char digi_count;
+    ax25_address digi_addr[AX25_MAX_DIGIS];
+  };
+
+/* The AX.25 ioctl structure: */
+struct ax25_ctl_struct
+  {
+    ax25_address port_addr;
+    ax25_address source_addr;
+    ax25_address dest_addr;
+    unsigned int cmd;
+    unsigned long arg;
+  };
+
+/* AX.25 route structure: */
+struct ax25_route_opt_struct
+  {
+    ax25_address port_addr;
+    ax25_address dest_addr;
+    int cmd;
+    int arg;
+  };
+
+/* AX.25 BPQ stuff: */
+struct ax25_bpqaddr_struct
+  {
+    char dev[16];
+    ax25_address addr;
+  };
+
+/* Definitions for the AX.25 `values' fields: */
+#define	AX25_VALUES_IPDEFMODE	0	/* 'D'=DG 'V'=VC */
+#define	AX25_VALUES_AXDEFMODE	1	/* 8=Normal 128=Extended Seq Nos */
+#define	AX25_VALUES_NETROM	2	/* Allow NET/ROM  - 0=No 1=Yes */
+#define	AX25_VALUES_TEXT	3	/* Allow PID=Text - 0=No 1=Yes */
+#define	AX25_VALUES_BACKOFF	4	/* 'E'=Exponential 'L'=Linear */
+#define	AX25_VALUES_CONMODE	5	/* Allow connected modes - 0=No 1=Yes */
+#define	AX25_VALUES_WINDOW	6	/* Default window size for standard AX.25 */
+#define	AX25_VALUES_EWINDOW	7	/* Default window size for extended AX.25 */
+#define	AX25_VALUES_T1		8	/* Default T1 timeout value */
+#define	AX25_VALUES_T2		9	/* Default T2 timeout value */
+#define	AX25_VALUES_T3		10	/* Default T3 timeout value */
+#define	AX25_VALUES_N2		11	/* Default N2 value */
+#define	AX25_VALUES_DIGI	12	/* Digipeat mode */
+#define AX25_VALUES_IDLE	13	/* mode vc idle timer */
+#define AX25_VALUES_PACLEN	14	/* AX.25 MTU */
+#define AX25_VALUES_IPMAXQUEUE  15	/* Maximum number of buffers enqueued */
+#define	AX25_MAX_VALUES		20
+
+struct ax25_parms_struct
+  {
+    ax25_address port_addr;
+    unsigned short values[AX25_MAX_VALUES];
+  };
+
+#endif /* netax25/ax25.h */
diff --git a/sysdeps/unix/sysv/linux/netrom/netrom.h b/sysdeps/unix/sysv/linux/netrom/netrom.h
new file mode 100644
index 0000000000..b8c2af0c11
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/netrom/netrom.h
@@ -0,0 +1,80 @@
+/* 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 _NETROM_NETROM_H
+#define _NETROM_NETROM_H	1
+
+#include <netax25/ax25.h>
+
+/* Setsockoptions(2) level.  Thanks to BSD these must match IPPROTO_xxx.  */
+#define SOL_NETROM	259
+
+/* NetRom control values: */
+#define NETROM_T1	1
+#define NETROM_T2	2
+#define NETROM_N2	3
+#define NETROM_PACLEN	5
+
+#define NETROM_KILL	99
+
+/* Type of route: */
+#define NETROM_NEIGH    0
+#define NETROM_NODE     1
+
+struct nr_route_struct
+  {
+    int type;
+    ax25_address callsign;
+    char device[16];
+    unsigned int quality;
+    char mnemonic[7];
+    ax25_address neighbour;
+    unsigned int obs_count;
+  };
+
+/* NetRom socket ioctls: */
+#define	SIOCNRGETPARMS		(SIOCPROTOPRIVATE+0)
+#define	SIOCNRSETPARMS		(SIOCPROTOPRIVATE+1)
+#define	SIOCNRDECOBS		(SIOCPROTOPRIVATE+2)
+#define	SIOCNRRTCTL		(SIOCPROTOPRIVATE+3)
+#define	SIOCNRCTLCON		(SIOCPROTOPRIVATE+4)
+
+/* NetRom parameter structure: */
+struct nr_parms_struct
+  {
+    unsigned int quality;
+    unsigned int obs_count;
+    unsigned int ttl;
+    unsigned int timeout;
+    unsigned int ack_delay;
+    unsigned int busy_delay;
+    unsigned int tries;
+    unsigned int window;
+    unsigned int paclen;
+  };
+
+/* NetRom control structure: */
+struct nr_ctl_struct
+  {
+    unsigned char index;
+    unsigned char id;
+    unsigned int cmd;
+    unsigned long arg;
+  };
+
+#endif /* netrom/netrom.h */
diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
index 6b4373db0f..211a56b9f0 100644
--- a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
+++ b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
@@ -29,12 +29,13 @@
     (envp) = (argv) + (argc) + 1;				\
     for (_tmp = (void **) (envp); *_tmp; ++_tmp)		\
       continue;							\
-    if (*_tmp == 0 && ((size_t)_tmp & 0xf) != 0)		\
+    /* The following '++' is important!  */			\
+    ++_tmp;							\
+    if (*_tmp == 0)						\
       {								\
 	size_t _test = (size_t)_tmp;				\
 	_test = _test + 0xf & ~0xf;				\
-	if (*(long *)_test == AT_PHDR)				\
-	  _tmp = (void **)_test;				\
+	_tmp = (void **)_test;					\
       }								\
     (auxp) = (void *) _tmp;					\
   } while (0)
diff --git a/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h b/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h
index c3908d7080..a40b3c19bd 100644
--- a/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h
+++ b/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h
@@ -20,7 +20,7 @@
 #define _KERNEL_TERMIOS_H 1
 
 /* We need the definition of tcflag_t, cc_t, and speed_t.  */
-#include <bits/termios.h>
+#include <termios.h>
 
 #define __KERNEL_NCCS 19
 
diff --git a/sysdeps/unix/sysv/linux/sigaction.c b/sysdeps/unix/sysv/linux/sigaction.c
index 3eb721454e..6b3d69d451 100644
--- a/sysdeps/unix/sysv/linux/sigaction.c
+++ b/sysdeps/unix/sysv/linux/sigaction.c
@@ -30,8 +30,8 @@ extern int __syscall_rt_sigaction (int, const struct sigaction *,
 				   struct sigaction *, size_t);
 
 /* The variable is shared between all wrappers around signal handling
-   functions which have RT equivalents.  It is defined in sigsuspend.c.  */
-extern int __libc_have_rt_sigs;
+   functions which have RT equivalents.  */
+int __libc_have_rt_sigs = -1;
 
 
 /* If ACT is not NULL, change the action for SIG to *ACT.
diff --git a/sysdeps/unix/sysv/linux/sigpending.c b/sysdeps/unix/sysv/linux/sigpending.c
index 4cecb8dc60..fade020d26 100644
--- a/sysdeps/unix/sysv/linux/sigpending.c
+++ b/sysdeps/unix/sysv/linux/sigpending.c
@@ -25,7 +25,7 @@ extern int __syscall_rt_sigpending (sigset_t *, size_t);
 
 
 /* The variable is shared between all wrappers around signal handling
-   functions which have RT equivalents.  It is defined in sigsuspend.c.  */
+   functions which have RT equivalents.  It is defined in sigaction.c.  */
 extern int __libc_have_rt_sigs;
 
 
diff --git a/sysdeps/unix/sysv/linux/sigprocmask.c b/sysdeps/unix/sysv/linux/sigprocmask.c
index dc262c88f4..63889a61dd 100644
--- a/sysdeps/unix/sysv/linux/sigprocmask.c
+++ b/sysdeps/unix/sysv/linux/sigprocmask.c
@@ -25,7 +25,7 @@ extern int __syscall_rt_sigprocmask (int, const sigset_t *, sigset_t *,
 				     size_t);
 
 /* The variable is shared between all wrappers around signal handling
-   functions which have RT equivalents.  It is defined in sigsuspend.c.  */
+   functions which have RT equivalents.  It is defined in sigaction.c.  */
 extern int __libc_have_rt_sigs;
 
 
diff --git a/sysdeps/unix/sysv/linux/sigsuspend.c b/sysdeps/unix/sysv/linux/sigsuspend.c
index 2cf34eb9b1..8d8fa8e709 100644
--- a/sysdeps/unix/sysv/linux/sigsuspend.c
+++ b/sysdeps/unix/sysv/linux/sigsuspend.c
@@ -25,8 +25,8 @@ extern int __syscall_rt_sigsuspend (const sigset_t *, size_t);
 
 
 /* The variable is shared between all wrappers around signal handling
-   functions which have RT equivalents.  */
-int __libc_have_rt_sigs = 1;
+   functions which have RT equivalents.  It is defined in sigaction.c.  */
+extern int __libc_have_rt_sigs;
 
 
 /* Change the set of blocked signals to SET,
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c b/sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c
new file mode 100644
index 0000000000..0dbd384a6a
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c
@@ -0,0 +1 @@
+/* mmap64 is the same as mmap. */
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
index 7e64daf578..ca142da29c 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
@@ -10,6 +10,7 @@ getrlimit	-	getrlimit	2	getrlimit	getrlimit64
 setrlimit	-	setrlimit	2	setrlimit	setrlimit64
 ftruncate	-	ftruncate	2	ftruncate	ftruncate64
 truncate	-	truncate	2	truncate	truncate64
+mmap		-	mmap		6	__mmap		mmap __mmap64 mmap64
 
 # Override select.S in parent directory:
 select		-	select		5	__select	select
diff --git a/sysdeps/unix/sysv/linux/stdio_lim.h.in b/sysdeps/unix/sysv/linux/stdio_lim.h.in
index 07280956f2..bded904ef0 100644
--- a/sysdeps/unix/sysv/linux/stdio_lim.h.in
+++ b/sysdeps/unix/sysv/linux/stdio_lim.h.in
@@ -21,7 +21,7 @@
 # error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead."
 #endif
 
-#ifndef __need_FOPEN_MAX
+#ifdef _STDIO_H
 # define L_tmpnam 19
 # define TMP_MAX 238328
 
@@ -31,6 +31,9 @@
 # endif
 
 # define FILENAME_MAX	DEFAULT_FILENAME_MAX
+
+# undef __need_FOPEN_MAX
+# define __need_FOPEN_MAX
 #endif
 
 #if defined __need_FOPEN_MAX && !defined __defined_FOPEN_MAX
diff --git a/sysdeps/unix/sysv/linux/sys/kd.h b/sysdeps/unix/sysv/linux/sys/kd.h
index 0ff5220014..b37586abfd 100644
--- a/sysdeps/unix/sysv/linux/sys/kd.h
+++ b/sysdeps/unix/sysv/linux/sys/kd.h
@@ -20,7 +20,9 @@
 #define _SYS_KD_H	1
 
 /* Make sure the <linux/types.h> header is not loaded.  */
-#define _LINUX_TYPES_H	1
+#ifndef _LINUX_TYPES_H
+# define _LINUX_TYPES_H	1
+#endif
 
 #include <linux/kd.h>
 
diff --git a/sysdeps/unix/sysv/linux/sys/mman.h b/sysdeps/unix/sysv/linux/sys/mman.h
index e2434f135f..70f95d080f 100644
--- a/sysdeps/unix/sysv/linux/sys/mman.h
+++ b/sysdeps/unix/sysv/linux/sys/mman.h
@@ -42,18 +42,20 @@ __BEGIN_DECLS
    deallocates any previous mapping for the affected region.  */
 
 extern __ptr_t __mmap __P ((__ptr_t __addr, size_t __len, int __prot,
-			  int __flags, int __fd, __off_t __offset));
+			    int __flags, int __fd, __off_t __offset));
 #ifndef __USE_FILE_OFFSET64
 extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
-			int __flags, int __fd, __off_t __offset));
+			  int __flags, int __fd, __off_t __offset));
 #else
 extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
-			int __flags, int __fd, __off_t __offset))
+			  int __flags, int __fd, __off64_t __offset))
      __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));
+			    int __flags, int __fd, __off64_t __offset));
 #endif
 
 /* Deallocate any mapping for the region starting at ADDR and extending LEN