summary refs log tree commit diff
path: root/elf
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 /elf
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 'elf')
-rw-r--r--elf/dl-close.c1
-rw-r--r--elf/dl-lookup.c7
-rw-r--r--elf/elf.h4
-rw-r--r--elf/link.h4
-rw-r--r--elf/rtld.c2
5 files changed, 12 insertions, 6 deletions
diff --git a/elf/dl-close.c b/elf/dl-close.c
index 69fdefac95..70d7ab4083 100644
--- a/elf/dl-close.c
+++ b/elf/dl-close.c
@@ -20,6 +20,7 @@ Cambridge, MA 02139, USA.  */
 #include <link.h>
 #include <dlfcn.h>
 #include <stdlib.h>
+#include <string.h>
 #include <sys/types.h>
 #include <sys/mman.h>
 
diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c
index 5f1e6d03d9..bbccbc01ef 100644
--- a/elf/dl-lookup.c
+++ b/elf/dl-lookup.c
@@ -20,6 +20,7 @@ Cambridge, MA 02139, USA.  */
 #include <stddef.h>
 #include <link.h>
 #include <assert.h>
+#include <string.h>
 
 
 /* This is the hashing function specified by the ELF ABI.  */
@@ -70,7 +71,7 @@ _dl_lookup_symbol (const char *undef_name, const ElfW(Sym) **ref,
       {
 	const ElfW(Sym) *symtab;
 	const char *strtab;
-	ElfW(Word) symidx;
+	ElfW(Symndx) symidx;
 
 	map = (*scope)->l_searchlist[i];
 
@@ -149,8 +150,8 @@ _dl_lookup_symbol (const char *undef_name, const ElfW(Sym) **ref,
 void
 _dl_setup_hash (struct link_map *map)
 {
-  ElfW(Word) *hash = (void *) map->l_addr + map->l_info[DT_HASH]->d_un.d_ptr;
-  ElfW(Word) nchain;
+  ElfW(Symndx) *hash = (void *)(map->l_addr + map->l_info[DT_HASH]->d_un.d_ptr);
+  ElfW(Symndx) nchain;
   map->l_nbuckets = *hash++;
   nchain = *hash++;
   map->l_buckets = hash;
diff --git a/elf/elf.h b/elf/elf.h
index f6d023d207..0a4ec55cc8 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -54,6 +54,10 @@ typedef unsigned int Elf64_Off     __attribute__ ((mode (DI)));
 typedef unsigned int Elf32_Section __attribute__ ((mode (HI)));
 typedef unsigned int Elf64_Section __attribute__ ((mode (HI)));
 
+/* Type of symbol indices.  */
+typedef unsigned int Elf32_Symndx  __attribute__ ((mode (SI)));
+typedef unsigned int Elf64_Symndx  __attribute__ ((mode (DI)));
+
 
 /* The ELF file header.  This appears at the start of every ELF file.  */
 
diff --git a/elf/link.h b/elf/link.h
index 89dfa2087f..6910445095 100644
--- a/elf/link.h
+++ b/elf/link.h
@@ -110,8 +110,8 @@ struct link_map
     struct link_map *l_loader;
 
     /* Symbol hash table.  */
-    ElfW(Word) l_nbuckets;
-    const ElfW(Word) *l_buckets, *l_chain;
+    ElfW(Symndx) l_nbuckets;
+    const ElfW(Symndx) *l_buckets, *l_chain;
 
     unsigned int l_opencount;	/* Reference count for dlopen/dlclose.  */
     enum			/* Where this object came from.  */
diff --git a/elf/rtld.c b/elf/rtld.c
index 66477274e5..c9ddfb5c63 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -101,7 +101,7 @@ _dl_start (void *arg)
      file access.  It will call `dl_main' (below) to do all the real work
      of the dynamic linker, and then unwind our frame and run the user
      entry point on the same stack we entered on.  */
-  return _dl_sysdep_start (&arg, &dl_main);
+  return _dl_sysdep_start (arg, &dl_main);
 }