summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/generic/crypt-entry.c2
-rw-r--r--sysdeps/i386/i586/strchr.S25
-rw-r--r--sysdeps/posix/euidaccess.c16
-rw-r--r--sysdeps/stub/e_j0l.c9
-rw-r--r--sysdeps/stub/e_j1l.c9
-rw-r--r--sysdeps/stub/e_jnl.c11
-rw-r--r--sysdeps/unix/sysv/linux/Dist3
-rw-r--r--sysdeps/unix/sysv/linux/alpha/clone.S1
-rw-r--r--sysdeps/unix/sysv/linux/errnos.h17
-rw-r--r--sysdeps/unix/sysv/linux/i386/clone.S1
-rw-r--r--sysdeps/unix/sysv/linux/m68k/clone.S1
-rw-r--r--sysdeps/unix/sysv/linux/net/if_ppp.h1
-rw-r--r--sysdeps/unix/sysv/linux/net/ppp-comp.h1
-rw-r--r--sysdeps/unix/sysv/linux/net/ppp_defs.h1
-rw-r--r--sysdeps/unix/sysv/linux/posix_opt.h3
-rw-r--r--sysdeps/unix/sysv/linux/sys/soundcard.h2
16 files changed, 83 insertions, 20 deletions
diff --git a/sysdeps/generic/crypt-entry.c b/sysdeps/generic/crypt-entry.c
index 84c6974697..de15904b2c 100644
--- a/sysdeps/generic/crypt-entry.c
+++ b/sysdeps/generic/crypt-entry.c
@@ -32,7 +32,7 @@ static const char md5_salt_prefix[] = "$1$";
 /* Prototypes for the MD5 encryption replacement functions.  */
 extern char *md5_crypt_r (const char *key, const char *salt, char *buffer,
 			  int buflen);
-extern char *md5_crpyt (const char *key, const char *salt);
+extern char *md5_crypt (const char *key, const char *salt);
 
 
 /* We recognize an intended call of the MD5 crypt replacement function
diff --git a/sysdeps/i386/i586/strchr.S b/sysdeps/i386/i586/strchr.S
index bc435bfe0a..8a6691f7df 100644
--- a/sysdeps/i386/i586/strchr.S
+++ b/sysdeps/i386/i586/strchr.S
@@ -68,21 +68,18 @@ ENTRY (strchr)
 	andl $3, %edi		/* mask alignment bits */
 
 	jz L11			/* alignment is 0 => start loop */
-	jp L0			/* exactly two bits set */
 
-	movb (%eax), %cl	/* load single byte */
-	cmpb (%eax), %dl	/* is byte == C? */
+	movb %dl, %cl		/* 0 is needed below */
+	jp L0			/* exactly two bits set */
 
-	je L2			/* aligned => return pointer */
+	xorb (%eax), %cl	/* is byte the one we are looking for? */
+	jz L2			/* yes => return pointer */
 
-	cmpb $0, %cl		/* is byte NUL? */
+	xorb %dl, %cl		/* load single byte and test for NUL */
 	je L3			/* yes => return NULL */
 
-	incl %eax		/* increment pointer */
-	xorl $3, %edi		/* was alignment == 3? */
-
-L0:	movb (%eax), %cl	/* load single byte */
-	je L11			/* yes => start loop */
+	movb 1(%eax), %cl	/* load single byte */
+	incl %eax
 
 	cmpb %cl, %dl		/* is byte == C? */
 	je L2			/* aligned => return pointer */
@@ -90,8 +87,12 @@ L0:	movb (%eax), %cl	/* load single byte */
 	cmpb $0, %cl		/* is byte NUL? */
 	je L3			/* yes => return NULL */
 
-	movb 1(%eax), %cl	/* load single byte */
-	incl %eax		/* increment pointer */
+	incl %eax
+	decl %edi
+
+	jne L11
+
+L0:	movb (%eax), %cl	/* load single byte */
 
 	cmpb %cl, %dl		/* is byte == C? */
 	je L2			/* aligned => return pointer */
diff --git a/sysdeps/posix/euidaccess.c b/sysdeps/posix/euidaccess.c
index f3a10c9b9c..04648ce08b 100644
--- a/sysdeps/posix/euidaccess.c
+++ b/sysdeps/posix/euidaccess.c
@@ -137,8 +137,12 @@ euidaccess (path, mode)
   int granted;
 
 #ifdef	_LIBC
-  uid_t uid = getuid (), euid = geteuid ();
-  gid_t gid = getgid (), egid = getegid ();
+  uid_t euid;
+  gid_t egid;
+
+  if (! __libc_enable_secure)
+    /* If we are not set-uid or set-gid, access does the same.  */
+    return access (path, mode);
 #else
   if (have_ids == 0)
     {
@@ -148,11 +152,11 @@ euidaccess (path, mode)
       euid = geteuid ();
       egid = getegid ();
     }
-#endif
 
   if (uid == euid && gid == egid)
     /* If we are not set-uid or set-gid, access does the same.  */
     return access (path, mode);
+#endif
 
   if (stat (path, &stats))
     return -1;
@@ -165,6 +169,12 @@ euidaccess (path, mode)
   if (mode == F_OK)
     return 0;			/* The file exists. */
 
+#ifdef	_LIBC
+  /* Now we need the IDs.  */
+  euid = geteuid ();
+  egid = getegid ();
+#endif
+
   /* The super-user can read and write any file, and execute any file
      that anyone can execute. */
   if (euid == 0 && ((mode & X_OK) == 0
diff --git a/sysdeps/stub/e_j0l.c b/sysdeps/stub/e_j0l.c
index 90fa2c6ff1..c16e8a8a9d 100644
--- a/sysdeps/stub/e_j0l.c
+++ b/sysdeps/stub/e_j0l.c
@@ -9,3 +9,12 @@ __ieee754_j0l (long double x)
 }
 
 stub_warning (__ieee754_j0l)
+
+long double
+__ieee754_y0l (long double x)
+{
+  fputs ("__ieee754_y0l not implemented\n", stderr);
+  return 0.0;
+}
+
+stub_warning (__ieee754_y0l)
diff --git a/sysdeps/stub/e_j1l.c b/sysdeps/stub/e_j1l.c
index d84e3cd1c2..0a781e5cc1 100644
--- a/sysdeps/stub/e_j1l.c
+++ b/sysdeps/stub/e_j1l.c
@@ -9,3 +9,12 @@ __ieee754_j1l (long double x)
 }
 
 stub_warning (__ieee754_j1l)
+
+long double
+__ieee754_y1l (long double x)
+{
+  fputs ("__ieee754_y1l not implemented\n", stderr);
+  return 0.0;
+}
+
+stub_warning (__ieee754_y1l)
diff --git a/sysdeps/stub/e_jnl.c b/sysdeps/stub/e_jnl.c
index b9f59004ea..86ff03b031 100644
--- a/sysdeps/stub/e_jnl.c
+++ b/sysdeps/stub/e_jnl.c
@@ -2,10 +2,19 @@
 #include <stdio.h>
 
 long double
-__ieee754_jnl (long double x)
+__ieee754_jnl (int n, long double x)
 {
   fputs ("__ieee754_jnl not implemented\n", stderr);
   return 0.0;
 }
 
 stub_warning (__ieee754_jnl)
+
+long double
+__ieee754_ynl (int n, long double x)
+{
+  fputs ("__ieee754_ynl not implemented\n", stderr);
+  return 0.0;
+}
+
+stub_warning (__ieee754_ynl)
diff --git a/sysdeps/unix/sysv/linux/Dist b/sysdeps/unix/sysv/linux/Dist
index db0cd6000d..0879234162 100644
--- a/sysdeps/unix/sysv/linux/Dist
+++ b/sysdeps/unix/sysv/linux/Dist
@@ -1,6 +1,9 @@
 init-first.h
 sysctl.c
 net/if.h
+net/if_ppp.h
+net/ppp-comp.h
+net/ppp_defs.h
 nfs/nfs.h
 sys/acct.h
 sys/io.h
diff --git a/sysdeps/unix/sysv/linux/alpha/clone.S b/sysdeps/unix/sysv/linux/alpha/clone.S
index a1ef324956..71d8053b12 100644
--- a/sysdeps/unix/sysv/linux/alpha/clone.S
+++ b/sysdeps/unix/sysv/linux/alpha/clone.S
@@ -20,6 +20,7 @@ Cambridge, MA 02139, USA.  */
    and invokes a function in the right context after its all over.  */
 
 #include <sysdep.h>
+#define _ERRNO_H	1
 #include <errnos.h>
 
 /* int clone(int (*fn)(), void *child_stack, int flags, int nargs, ...) */
diff --git a/sysdeps/unix/sysv/linux/errnos.h b/sysdeps/unix/sysv/linux/errnos.h
index 8a7055aa6a..40707d1d62 100644
--- a/sysdeps/unix/sysv/linux/errnos.h
+++ b/sysdeps/unix/sysv/linux/errnos.h
@@ -17,6 +17,10 @@ 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.  */
 
+#ifdef _ERRNO_H
+
+#undef EDOM
+#undef ERANGE
 #include <linux/errno.h>
 
 #ifndef __ASSEMBLER__
@@ -35,5 +39,14 @@ extern int *__errno_location __P ((void)) __attribute__ ((__const__));
 
 #define __set_errno(val) errno = (val)
 
-#endif
-#endif
+#endif /* __USE_REENTRANT && (!_LIBC || _LIBC_REENTRANT) */
+#endif /* !__ASSEMBLER */
+#endif /* _ERRNO_H */
+
+#if !defined (_ERRNO_H) && defined (__need_Emath)
+/* This is ugly but the kernel header is not clean enough.  We must
+   define only the values EDOM and ERANGE in case __need_Emath is
+   defined.  The value is the same for all Linux ports.  */
+#define EDOM	33	/* Math argument out of domain of function.  */
+#define ERANGE	34	/* Math result not representable.  */
+#endif /* !_ERRNO_H && __need_Emath */
diff --git a/sysdeps/unix/sysv/linux/i386/clone.S b/sysdeps/unix/sysv/linux/i386/clone.S
index 0afbf872d9..0742cc5f74 100644
--- a/sysdeps/unix/sysv/linux/i386/clone.S
+++ b/sysdeps/unix/sysv/linux/i386/clone.S
@@ -20,6 +20,7 @@ Cambridge, MA 02139, USA.  */
    and invokes a function in the right context after its all over.  */
 
 #include <sysdep.h>
+#define _ERRNO_H	1
 #include <errnos.h>
 
 /* int clone(int (*fn)(), void *child_stack, int flags, int nargs, ...) */
diff --git a/sysdeps/unix/sysv/linux/m68k/clone.S b/sysdeps/unix/sysv/linux/m68k/clone.S
index 64077e00de..07280031a5 100644
--- a/sysdeps/unix/sysv/linux/m68k/clone.S
+++ b/sysdeps/unix/sysv/linux/m68k/clone.S
@@ -20,6 +20,7 @@ Cambridge, MA 02139, USA.  */
    and invokes a function in the right context after its all over.  */
 
 #include <sysdep.h>
+#define _ERRNO_H	1
 #include <errnos.h>
 
 /* int clone (int (*fn) (), void *child_stack, int flags, int nargs, ...) */
diff --git a/sysdeps/unix/sysv/linux/net/if_ppp.h b/sysdeps/unix/sysv/linux/net/if_ppp.h
new file mode 100644
index 0000000000..27652546ae
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/net/if_ppp.h
@@ -0,0 +1 @@
+#include <linux/if_ppp.h>
diff --git a/sysdeps/unix/sysv/linux/net/ppp-comp.h b/sysdeps/unix/sysv/linux/net/ppp-comp.h
new file mode 100644
index 0000000000..4a992d5422
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/net/ppp-comp.h
@@ -0,0 +1 @@
+#include <linux/ppp-comp.h>
diff --git a/sysdeps/unix/sysv/linux/net/ppp_defs.h b/sysdeps/unix/sysv/linux/net/ppp_defs.h
new file mode 100644
index 0000000000..e51dba7dea
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/net/ppp_defs.h
@@ -0,0 +1 @@
+#include <linux/ppp_defs.h>
diff --git a/sysdeps/unix/sysv/linux/posix_opt.h b/sysdeps/unix/sysv/linux/posix_opt.h
index c1ff431fc9..8a6fad0eb1 100644
--- a/sysdeps/unix/sysv/linux/posix_opt.h
+++ b/sysdeps/unix/sysv/linux/posix_opt.h
@@ -60,4 +60,7 @@ Boston, MA 02111-1307, USA.  */
    using the value _POSIX_VDISABLE.  */
 #define	_POSIX_VDISABLE	'\0'
 
+/* Filenames are not silently truncated.  */
+#define	_POSIX_NO_TRUNC	1
+
 #endif /* posix_opt.h */
diff --git a/sysdeps/unix/sysv/linux/sys/soundcard.h b/sysdeps/unix/sysv/linux/sys/soundcard.h
index 098fae1c33..fade986fe4 100644
--- a/sysdeps/unix/sysv/linux/sys/soundcard.h
+++ b/sysdeps/unix/sysv/linux/sys/soundcard.h
@@ -1 +1 @@
-#include <linux/soundard.h>
+#include <linux/soundcard.h>