about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/generic/crypt.h4
-rw-r--r--sysdeps/i386/elf/start.S51
-rw-r--r--sysdeps/i386/init-first.c28
-rw-r--r--sysdeps/posix/sigpause.c1
-rw-r--r--sysdeps/posix/sigwait.c6
-rw-r--r--sysdeps/unix/i386/sysdep.S28
-rw-r--r--sysdeps/unix/sysv/linux/errnos.h6
7 files changed, 65 insertions, 59 deletions
diff --git a/sysdeps/generic/crypt.h b/sysdeps/generic/crypt.h
index 53224596ea..0fdef1843a 100644
--- a/sysdeps/generic/crypt.h
+++ b/sysdeps/generic/crypt.h
@@ -1,7 +1,7 @@
 /*
  * UFC-crypt: ultra fast crypt(3) implementation
  *
- * Copyright (C) 1991, 1992, 1993, 1996 Free Software Foundation, Inc.
+ * Copyright (C) 1991, 1992, 1993, 1996, 1997 Free Software Foundation, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -47,12 +47,10 @@ struct crypt_data
 extern char *crypt __P ((__const char *__key, __const char *__salt));
 
 
-#ifdef __USE_REENTRANT
 /* Reentrant versions of the functions above.  The additional argument
    points to a structure where the results are placed in.  */
 extern char *crypt_r __P ((__const char *__key, __const char *__salt,
 			   struct crypt_data *__data));
-#endif /* reentrant */
 
 __END_DECLS
 
diff --git a/sysdeps/i386/elf/start.S b/sysdeps/i386/elf/start.S
index c5796e8db9..53e324b91b 100644
--- a/sysdeps/i386/elf/start.S
+++ b/sysdeps/i386/elf/start.S
@@ -1,21 +1,21 @@
 /* Startup code compliant to the ELF i386 ABI.
-Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+   Copyright (C) 1995, 1996, 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 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.
+   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.  */
+   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.  */
 
 /* This is the canonical entry point, usually the first thing in the text
    segment.  The SVR4/i386 ABI (pages 3-31, 3-32) says that when the entry
@@ -36,12 +36,12 @@ Cambridge, MA 02139, USA.  */
 					NULL
 */
 
-	.text	
+	.text
 	.globl _start
 _start:
 	/* Clear the frame pointer.  The ABI suggests this be done, to mark
 	   the outermost frame obviously.  */
-	movl $0, %ebp
+	xorl %ebp, %ebp
 
 	/* %edx contains the address of the shared library termination
 	   function, which we will register with `atexit' to be called by
@@ -53,7 +53,8 @@ _start:
 	jz nofini
 	pushl %edx
 	call atexit
-	addl $4, %esp
+	popl %eax		/* Pop value to unused register to remove
+				   argument from stack.  */
 nofini:
 
 	/* Do essential libc initialization.  In statically linked
@@ -66,9 +67,15 @@ nofini:
 	popl %esi		/* Pop the argument count.  */
 	leal 4(%esp,%esi,4), %eax /* envp = &argv[argc + 1] */
 	movl %eax, _environ	/* Store it in the global variable.  */
+	movl %esp, %edx		/* argv starts just at the current stack top.*/
+
+	/* Before pushing the arguments align the stack to a double word
+	   boundary to avoid penalties from misaligned accesses.  Thanks
+	   to Edward Seidl <seidl@janed.com> for pointing this out.  */
+	andl $0xfffffff8, %esp
+
 	pushl %eax		/* Push third argument: envp.  */
-	leal 4(%esp), %eax	/* argv starts just above that word.  */
-	pushl %eax		/* Push second argument: argv.  */
+	pushl %edx		/* Push second argument: argv.  */
 	pushl %esi		/* Push first argument: argc.  */
 
 	/* Call `_init', which is the entry point to our own `.init'
@@ -77,13 +84,13 @@ nofini:
 	call _init
 	pushl $_fini
 	call atexit
-	addl $4, %esp
+	popl %eax
 
 	/* Call the user's main function, and exit with its value.  */
 	call main
 	pushl %eax
-	call exit		/* This should never return.  */
-	hlt			/* Crash if somehow it does return.  */
+	call exit
+	hlt			/* Crash if somehow `exit' does return.  */
 
 /* Define a symbol for the first piece of initialized data.  */
 	.data
diff --git a/sysdeps/i386/init-first.c b/sysdeps/i386/init-first.c
index 0e6e15fa50..0fa08e9d17 100644
--- a/sysdeps/i386/init-first.c
+++ b/sysdeps/i386/init-first.c
@@ -1,21 +1,21 @@
 /* Initialization code run first thing by the ELF startup code.  For i386/Unix.
-Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+  Copyright (C) 1995, 1996, 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 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.
+  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.  */
+  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 <unistd.h>
 
diff --git a/sysdeps/posix/sigpause.c b/sysdeps/posix/sigpause.c
index 414019a40d..d954125ee4 100644
--- a/sysdeps/posix/sigpause.c
+++ b/sysdeps/posix/sigpause.c
@@ -18,6 +18,7 @@
 
 #include <errno.h>
 #include <signal.h>
+#include <stddef.h>		/* For NULL.  */
 
 /* Set the mask of blocked signals to MASK,
    wait for a signal to arrive, and then restore the mask.  */
diff --git a/sysdeps/posix/sigwait.c b/sysdeps/posix/sigwait.c
index 2e70eef568..a754c7c111 100644
--- a/sysdeps/posix/sigwait.c
+++ b/sysdeps/posix/sigwait.c
@@ -1,5 +1,5 @@
-/* sigwait - implementation of sigwait function from POSIX.1c.
-   Copyright (C) 1996 Free Software Foundation, Inc.
+/* Implementation of sigwait function from POSIX.1c.
+   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -21,7 +21,7 @@
 #include <assert.h>
 #include <errno.h>
 #include <signal.h>
-
+#include <stddef.h>		/* For NULL.  */
 
 /* This is our dummy signal handler we use here.  */
 static void ignore_signal (int sig);
diff --git a/sysdeps/unix/i386/sysdep.S b/sysdeps/unix/i386/sysdep.S
index 9bf9feedcc..a65589df72 100644
--- a/sysdeps/unix/i386/sysdep.S
+++ b/sysdeps/unix/i386/sysdep.S
@@ -1,20 +1,20 @@
-/* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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 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.
+   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.  */
+   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 <sysdep.h>
 #define _ERRNO_H
diff --git a/sysdeps/unix/sysv/linux/errnos.h b/sysdeps/unix/sysv/linux/errnos.h
index 982477c8f3..f676d35e49 100644
--- a/sysdeps/unix/sysv/linux/errnos.h
+++ b/sysdeps/unix/sysv/linux/errnos.h
@@ -1,5 +1,5 @@
-/* errnos.h - error constants.  Linux specific version.
-   Copyright (C) 1996 Free Software Foundation, Inc.
+/* Error constants.  Linux specific version.
+   Copyright (C) 1996, 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
@@ -43,7 +43,7 @@ __set_errno (int __err)
 #   endif /* _LIBC_REENTRANT */
 #  endif /* _LIBC */
 
-#  if defined __USE_REENTRANT && (!defined _LIBC || defined _LIBC_REENTRANT)
+#  if !defined _LIBC || defined _LIBC_REENTRANT
 /* When using threads, errno is a per-thread value.  */
 #   define errno (*__errno_location ())
 #  endif