about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/alpha/Dist2
-rw-r--r--sysdeps/alpha/strchr.c84
-rw-r--r--sysdeps/alpha/stxcpy.S33
-rw-r--r--sysdeps/libm-ieee754/w_cabs.c10
-rw-r--r--sysdeps/libm-ieee754/w_log10.c2
-rw-r--r--sysdeps/stub/e_log10l.c11
-rw-r--r--sysdeps/stub/e_logl.c11
-rw-r--r--sysdeps/stub/e_sqrtl.c11
-rw-r--r--sysdeps/stub/s_atanl.c12
-rw-r--r--sysdeps/stub/s_log1pl.c12
-rw-r--r--sysdeps/unix/sysv/linux/Dist8
-rw-r--r--sysdeps/unix/sysv/linux/Makefile3
-rw-r--r--sysdeps/unix/sysv/linux/alpha/brk.S1
-rw-r--r--sysdeps/unix/sysv/linux/sigcontext.h (renamed from sysdeps/unix/sysv/linux/i386/sigcontext.h)0
-rw-r--r--sysdeps/unix/sysv/linux/sys/procfs.h1
15 files changed, 96 insertions, 105 deletions
diff --git a/sysdeps/alpha/Dist b/sysdeps/alpha/Dist
index c9419e6ef3..3cc9595dfb 100644
--- a/sysdeps/alpha/Dist
+++ b/sysdeps/alpha/Dist
@@ -3,3 +3,5 @@ DEFS.h
 divrem.h
 divl.S divlu.S divq.S divqu.S reml.S remlu.S remq.S remqu.S
 _mcount.S
+stxcpy.S
+stxncpy.S
diff --git a/sysdeps/alpha/strchr.c b/sysdeps/alpha/strchr.c
deleted file mode 100644
index 69afa4b87f..0000000000
--- a/sysdeps/alpha/strchr.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-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., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
-
-#include <string.h>
-
-/* Return the length of the null-terminated string STR.  Scan for
-   the null terminator quickly by testing eight bytes at a time.  */
-
-char *
-strchr (const char *str, int c)
-{
-  const char *char_ptr;
-  const unsigned long int *longword_ptr;
-  unsigned long int charmask;
-
-  c = (unsigned char) c;
-
-  /* Handle the first few characters by reading one character at a time.
-     Do this until STR is aligned on a 8-byte border.  */
-  for (char_ptr = str; ((unsigned long int) char_ptr & 7) != 0; ++char_ptr)
-    if (*char_ptr == c)
-      return (char *) char_ptr;
-    else if (*char_ptr == '\0')
-      return NULL;
-
-  longword_ptr = (unsigned long int *) char_ptr;
-
-  /* Set up a longword, each of whose bytes is C.  */
-  charmask = c | (c << 8);
-  charmask |= charmask << 16;
-  charmask |= charmask << 32;
-
-  for (;;)
-    {
-      const unsigned long int longword = *longword_ptr++;
-      int ge, le, zero;
-
-      /* Set bits in ZERO if bytes in LONGWORD are zero.  */
-      asm ("cmpbge $31, %1, %0" : "=r" (zero) : "r" (longword));
-
-      /* Set bits in GE if bytes in CHARMASK are >= bytes in LONGWORD.  */
-      asm ("cmpbge %1, %2, %0" : "=r" (ge) : "r" (charmask), "r" (longword));
-
-      /* Set bits in LE if bytes in CHARMASK are <= bytes in LONGWORD.  */
-      asm ("cmpbge %2, %1, %0" : "=r" (le) : "r" (charmask), "r" (longword));
-
-      /* Bytes that are both <= and >= are == to C.  */
-      if (zero || (ge & le))
-	{
-	  /* Which of the bytes was the C?  */
-
-	  char *cp = (char *) (longword_ptr - 1);
-	  int i;
-
-	  for (i = 0; i < 8; i++)
-	    {
-	      if (cp[i] == c)
-		return &cp[i];
-	      if (cp[i] == 0)
-		return NULL;
-	    }
-	  return NULL;
-	}
-    }
-}
-
-#ifdef weak_alias
-#undef index
-weak_alias (strchr, index)
-#endif
diff --git a/sysdeps/alpha/stxcpy.S b/sysdeps/alpha/stxcpy.S
index e381b704cd..49dd8e5c64 100644
--- a/sysdeps/alpha/stxcpy.S
+++ b/sysdeps/alpha/stxcpy.S
@@ -36,7 +36,7 @@ Cambridge, MA 02139, USA.  */
    Furthermore, v0, a3-a5, t11, and t12 are untouched.
 */
 
-/* This is generally scheduled for the EV5, but should still be pretty 
+/* This is generally scheduled for the EV5, but should still be pretty
    good for the EV4 too.  */
 
 #include <sysdep.h>
@@ -65,7 +65,7 @@ stxcpy_aligned:
 	lda	t2, -1		# e1    : build a mask against false zero
 	mskqh	t2, a1, t2	# e0    :   detection in the src word
 	mskqh	t1, a1, t3	# e0    :
-	ornot	t1, t2, t2	# .. e1 : 
+	ornot	t1, t2, t2	# .. e1 :
 	mskql	t0, a1, t0	# e0    : assemble the first output word
 	cmpbge	zero, t2, t7	# .. e1 : bits set iff null found
 	or	t0, t3, t1	# e0    :
@@ -99,9 +99,9 @@ $a_eos:
 	/* We're doing a partial word store and so need to combine
 	   our source and original destination words.  */
 	ldq_u	t0, 0(a0)	# e0    :
-	subq	t8, 1, t6	# .. e1 : 
+	subq	t8, 1, t6	# .. e1 :
 	zapnot	t1, t6, t1	# e0    : clear src bytes >= null
-	or	t8, t6, t7	# .. e1 : 
+	or	t8, t6, t7	# .. e1 :
 	zap	t0, t7, t0	# e0    : clear dst bytes <= null
 	or	t0, t1, t1	# e1    :
 
@@ -156,13 +156,13 @@ $u_head:
 	or	t1, t4, t1	# .. e1 :
 	mskqh	t1, a0, t1	# e0    :
 	or	t0, t1, t1	# e1    :
-	
+
 	or	t1, t6, t6	# e0    :
 	cmpbge	zero, t6, t7	# .. e1 :
 	lda	t6, -1		# e0    : for masking just below
 	bne	t7, $u_final	# .. e1 :
 
-	mskql	t6, a1, t6		# e0    : mask out the bits we have 
+	mskql	t6, a1, t6		# e0    : mask out the bits we have
 	or	t6, t2, t2		# e1    :   already extracted before
 	cmpbge	zero, t2, t7		# e0    :   testing eos
 	bne	t7, $u_late_head_exit	# .. e1 (zdb)
@@ -181,7 +181,7 @@ $u_head:
 
 	/* Unaligned copy main loop.  In order to avoid reading too much,
 	   the loop is structured to detect zeros in aligned source words.
-	   This has, unfortunately, effectively pulled half of a loop 
+	   This has, unfortunately, effectively pulled half of a loop
 	   iteration out into the head and half into the tail, but it does
 	   prevent nastiness from accumulating in the very thing we want
 	   to run as fast as possible.
@@ -207,7 +207,7 @@ $u_loop:
 
 	/* We've found a zero somewhere in the source word we just read.
 	   If it resides in the lower half, we have one (probably partial)
-	   word to write out, and if it resides in the upper half, we 
+	   word to write out, and if it resides in the upper half, we
 	   have one full and one partial word left to write out.
 
 	   On entry to this basic block:
@@ -234,7 +234,7 @@ $u_final:
 	negq	t7, t6		# e0    : isolate low bit set
 	and	t6, t7, t8	# e1    :
 
-	and	t8, 0x80, t6	# e0    : avoid dest word load if we can 
+	and	t8, 0x80, t6	# e0    : avoid dest word load if we can
 	bne	t6, 1f		# .. e1 (zdb)
 
 	ldq_u	t0, 0(a0)	# e0    :
@@ -256,7 +256,7 @@ $unaligned:
 	and	a0, 7, t4	# .. e1 : find dest misalignment
 	and	a1, 7, t5	# e0    : find src misalignment
 
-	/* Conditionally load the first destination word and a bytemask 
+	/* Conditionally load the first destination word and a bytemask
 	   with 0xff indicating that the destination byte is sacrosanct.  */
 
 	mov	zero, t0	# .. e1 :
@@ -290,18 +290,19 @@ $unaligned:
 
 	negq	t7, t6		# .. e1 : build bitmask of bytes <= zero
 	and	t6, t7, t8	# e0    :
-	nop			# .. e1 :
+	and	a1, 7, t5	# .. e1 :
 	subq	t8, 1, t6	# e0    :
 	or	t6, t8, t7	# e1    :
+	srl	t8, t5, t8	# e0    : adjust final null return value
 
-	zapnot	t2, t7, t2	# e0    : prepare source word; mirror changes
+	zapnot	t2, t7, t2	# .. e1 : prepare source word; mirror changes
 	and	t1, t2, t1	# e1    : to source validity mask
-	extql	t2, a1, t2	# e0    :
+	extql	t2, a1, t2	# .. e0 :
 	extql	t1, a1, t1	# e0    :
 
-	andnot	t0, t2, t0	# e0    : zero place for source to reside
+ 	andnot	t0, t2, t0	# .. e1 : zero place for source to reside
 	or	t0, t1, t1	# e1    : and put it there
-	stq_u	t1, 0(a0)	# e0    :
-	ret	(t9)		# .. e1 :
+	stq_u	t1, 0(a0)	# .. e0 :
+	ret	(t9)
 
 	.end __stxcpy
diff --git a/sysdeps/libm-ieee754/w_cabs.c b/sysdeps/libm-ieee754/w_cabs.c
index 6c67436c6a..bf62f22be3 100644
--- a/sysdeps/libm-ieee754/w_cabs.c
+++ b/sysdeps/libm-ieee754/w_cabs.c
@@ -14,7 +14,13 @@ __cabs(z)
 	return __hypot(z.x, z.y);
 }
 weak_alias (__cabs, cabs)
+
 #ifdef NO_LONG_DOUBLE
-strong_alias (__cabs, __cabsl)
-weak_alias (__cabs, cabsl)
+double
+__cabsl(z)
+	struct __cabs_complexl z;
+{
+	return __hypotl(z.x, z.y);
+}
+weak_alias (__cabsl, cabsl)
 #endif
diff --git a/sysdeps/libm-ieee754/w_log10.c b/sysdeps/libm-ieee754/w_log10.c
index fc35607644..8a0a70bdf7 100644
--- a/sysdeps/libm-ieee754/w_log10.c
+++ b/sysdeps/libm-ieee754/w_log10.c
@@ -47,5 +47,5 @@ static char rcsid[] = "$NetBSD: w_log10.c,v 1.6 1995/05/10 20:49:35 jtc Exp $";
 weak_alias (__log10, log10)
 #ifdef NO_LONG_DOUBLE
 strong_alias (__log10, __log10l)
-weak_alias (__log10, log10)
+weak_alias (__log10, log10l)
 #endif
diff --git a/sysdeps/stub/e_log10l.c b/sysdeps/stub/e_log10l.c
new file mode 100644
index 0000000000..0e8cdcaaa9
--- /dev/null
+++ b/sysdeps/stub/e_log10l.c
@@ -0,0 +1,11 @@
+#include <math.h>
+#include <stdio.h>
+
+long double
+__ieee754_log10l (long double x)
+{
+  fputs ("__ieee754_log10l not implemented\n", stderr);
+  return 0.0;
+}
+
+stub_warning (__ieee754_log10l)
diff --git a/sysdeps/stub/e_logl.c b/sysdeps/stub/e_logl.c
new file mode 100644
index 0000000000..b8357543b0
--- /dev/null
+++ b/sysdeps/stub/e_logl.c
@@ -0,0 +1,11 @@
+#include <math.h>
+#include <stdio.h>
+
+long double
+__ieee754_logl (long double x)
+{
+  fputs ("__ieee754_logl not implemented\n", stderr);
+  return 0.0;
+}
+
+stub_warning (__ieee754_logl)
diff --git a/sysdeps/stub/e_sqrtl.c b/sysdeps/stub/e_sqrtl.c
new file mode 100644
index 0000000000..88a7668330
--- /dev/null
+++ b/sysdeps/stub/e_sqrtl.c
@@ -0,0 +1,11 @@
+#include <math.h>
+#include <stdio.h>
+
+long double
+__ieee754_sqrtl (long double x)
+{
+  fputs ("__ieee754_sqrtl not implemented\n", stderr);
+  return 0.0;
+}
+
+stub_warning (__ieee754_sqrtl)
diff --git a/sysdeps/stub/s_atanl.c b/sysdeps/stub/s_atanl.c
new file mode 100644
index 0000000000..38dd6f5991
--- /dev/null
+++ b/sysdeps/stub/s_atanl.c
@@ -0,0 +1,12 @@
+#include <math.h>
+#include <stdio.h>
+
+long double
+__atanl (long double x)
+{
+  fputs ("__atanl not implemented\n", stderr);
+  return 0.0;
+}
+weak_alias (__atanl, atanl)
+
+stub_warning (atanl)
diff --git a/sysdeps/stub/s_log1pl.c b/sysdeps/stub/s_log1pl.c
new file mode 100644
index 0000000000..07282482f3
--- /dev/null
+++ b/sysdeps/stub/s_log1pl.c
@@ -0,0 +1,12 @@
+#include <math.h>
+#include <stdio.h>
+
+long double
+__log1pl (long double x)
+{
+  fputs ("__log1pl not implemented\n", stderr);
+  return 0.0;
+}
+weak_alias (__log1pl, log1pl)
+
+stub_warning (log1pl)
diff --git a/sysdeps/unix/sysv/linux/Dist b/sysdeps/unix/sysv/linux/Dist
index 0879234162..ef0dfbce89 100644
--- a/sysdeps/unix/sysv/linux/Dist
+++ b/sysdeps/unix/sysv/linux/Dist
@@ -1,12 +1,17 @@
 init-first.h
 sysctl.c
+termio.h
 net/if.h
+net/if_arp.h
 net/if_ppp.h
 net/ppp-comp.h
 net/ppp_defs.h
+net/route.h
 nfs/nfs.h
 sys/acct.h
+sys/debugreg.h
 sys/io.h
+sys/kd.h
 sys/kdaemon.h
 sys/klog.h
 sys/module.h
@@ -14,9 +19,10 @@ sys/mount.h
 sys/procfs.h
 sys/quota.h
 sys/socketcall.h
+sys/soundcard.h
 sys/sysctl.h
 sys/sysinfo.h
 sys/sysmacros.h
 sys/timex.h
 sys/user.h
-termio.h
+sys/vt.h
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 7cfa06db66..0f563f082a 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -31,7 +31,8 @@ sysdep_headers += sys/timex.h
 endif
 
 ifeq ($(subdir), socket)
-sysdep_headers += sys/socketcall.h net/if.h
+sysdep_headers += sys/socketcall.h net/if.h net/if_ppp.h net/ppp-comp.h \
+		  net/ppp_defs.h net/if_arp.h net/route.h
 endif
 
 ifeq ($(subdir), sunrpc)
diff --git a/sysdeps/unix/sysv/linux/alpha/brk.S b/sysdeps/unix/sysv/linux/alpha/brk.S
index ad5f021e99..75be949aff 100644
--- a/sysdeps/unix/sysv/linux/alpha/brk.S
+++ b/sysdeps/unix/sysv/linux/alpha/brk.S
@@ -21,6 +21,7 @@ error.  Instead, the error condition is indicated by returning the old
 break value (instead of the new, requested one).  */
 
 #include <sysdep.h>
+#define _ERRNO_H
 #include <errnos.h>
 
 #ifdef PIC
diff --git a/sysdeps/unix/sysv/linux/i386/sigcontext.h b/sysdeps/unix/sysv/linux/sigcontext.h
index 92733ab447..92733ab447 100644
--- a/sysdeps/unix/sysv/linux/i386/sigcontext.h
+++ b/sysdeps/unix/sysv/linux/sigcontext.h
diff --git a/sysdeps/unix/sysv/linux/sys/procfs.h b/sysdeps/unix/sysv/linux/sys/procfs.h
index d4a38980c3..619955c1e5 100644
--- a/sysdeps/unix/sysv/linux/sys/procfs.h
+++ b/sysdeps/unix/sysv/linux/sys/procfs.h
@@ -28,6 +28,7 @@ Boston, MA 02111-1307, USA.  */
 #include <signal.h>
 #include <sys/time.h>
 #include <sys/types.h>
+#include <asm/user.h>
 #include <asm/elf.h>
 
 struct elf_siginfo