summary refs log tree commit diff
path: root/sysdeps/generic
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1996-06-12 01:54:21 +0000
committerRoland McGrath <roland@gnu.org>1996-06-12 01:54:21 +0000
commit8d6468d0c8aa55b319ba70a83d3b092c292ef0b1 (patch)
treea1365de43a753ca0fbd6aeddb2adf1260816f31c /sysdeps/generic
parent6e86a7c21b25f271304238a0cff0dd638343a5c2 (diff)
downloadglibc-8d6468d0c8aa55b319ba70a83d3b092c292ef0b1.tar.gz
glibc-8d6468d0c8aa55b319ba70a83d3b092c292ef0b1.tar.xz
glibc-8d6468d0c8aa55b319ba70a83d3b092c292ef0b1.zip
Tue Jun 11 19:13:04 1996 Richard Henderson <rth@tamu.edu>
	* elf/dl-close.c: Include <string.h> for memcpy.
	* elf/dl-lookup.c: Same.

	* elf/elf.h: Add Elfxx_Symndx for symbol indices.
	* elf/dl-lookup.c (_dl_lookup_symbol): Use it.
	(_dl_setup_hash): Use it.
	* elf/link.h (struct link_map): Use it.

	* elf/rtld.c (_dl_start): Don't rely on pointer-to-first-arg hack
	for getting the argc/argv/envp block.  Instead, make it the argument.
	sysdeps/i386/dl-machine.h (RTLD_START): Do that.
	sysdeps/m68k/dl-machine.h (RTLD_START): Same.

	* shlib-versions: Add version numbers for alpha-linux.  To avoid
	user confusion, make them the same as i386-linux.

	* sysdeps/alpha/Makefile [subdir elf]: Add -mno-fp-regs to
	sysdep-CFLAGS so that _dl_runtime_resolve doesn't have to save them.
	Add -mbuild-constants to CFLAGS-rtld.c to that we can bootstrap
	without using literal data.

	* sysdeps/generic/dl-sysdep.c: Include <string.h> for memcpy.
	Finish Elf32 -> ElfW migration.
Diffstat (limited to 'sysdeps/generic')
-rw-r--r--sysdeps/generic/dl-sysdep.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/sysdeps/generic/dl-sysdep.c b/sysdeps/generic/dl-sysdep.c
index 41d9cc98f9..9fab0f0922 100644
--- a/sysdeps/generic/dl-sysdep.c
+++ b/sysdeps/generic/dl-sysdep.c
@@ -22,6 +22,9 @@ Cambridge, MA 02139, USA.  */
 #include <fcntl.h>
 #include <link.h>
 #include <unistd.h>
+#include <stdarg.h>
+#include <string.h>
+
 
 extern int _dl_argc;
 extern char **_dl_argv;
@@ -29,21 +32,21 @@ extern char **_environ;
 extern void _start (void);
 extern int _dl_secure;
 
-Elf32_Addr
+ElfW(Addr)
 _dl_sysdep_start (void **start_argptr,
-		  void (*dl_main) (const Elf32_Phdr *phdr, Elf32_Word phnum,
-				   Elf32_Addr *user_entry))
+		  void (*dl_main) (const ElfW(Phdr) *phdr, ElfW(Word) phnum,
+				   ElfW(Addr) *user_entry))
 {
-  const Elf32_Phdr *phdr;
-  Elf32_Word phnum;
-  Elf32_Addr user_entry;
-  Elf32_auxv_t *av;
+  const ElfW(Phdr) *phdr;
+  ElfW(Word) phnum;
+  ElfW(Addr) user_entry;
+  ElfW(auxv_t) *av;
   uid_t uid, euid;
   gid_t gid, egid;
   unsigned int seen;
 
-  user_entry = (Elf32_Addr) &_start;
-  _dl_argc = *(int *) start_argptr;
+  user_entry = (ElfW(Addr)) &_start;
+  _dl_argc = *(long *) start_argptr;
   _dl_argv = (char **) start_argptr + 1;
   _environ = &_dl_argv[_dl_argc + 1];
   start_argptr = (void **) _environ;
@@ -112,8 +115,6 @@ _dl_sysdep_open_zero_fill (void)
   return __open ("/dev/zero", O_RDONLY);
 }
 
-#include <stdarg.h>
-
 void
 _dl_sysdep_fatal (const char *msg, ...)
 {