about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--bits/elfclass.h3
-rw-r--r--elf/dl-load.c2
-rw-r--r--elf/dl-lookup.c4
-rw-r--r--elf/do-lookup.h2
-rw-r--r--elf/elf.h4
-rw-r--r--elf/link.h4
-rw-r--r--sysdeps/generic/bits/elfclass.h3
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/elfclass.h14
9 files changed, 37 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index a09a398bbd..310d9a7c11 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+1999-07-25  Jakub Jelinek  <jj@ultra.linux.cz>
+
+	* elf/link.h (struct link_map): Use Elf_Symndx instead of ElfXX_Symndx.
+	* elf/dl-lookup.c (_dl_setup_hash): Likewise.
+	* elf/dl-load.c (_dl_map_object): Likewise.
+	* elf/do-lookup.h (do_lookup*): Likewise.
+	* sysdeps/generic/bits/elfclass.h: Define Elf_Symndx as uint32_t.
+	* sysdeps/unix/sysv/linux/alpha/bits/elfclass.h: Define Elf_symndx
+	as uint64_t.
+	* elf/elf.h: Remove Elf32_Symndx and Elf64_Symndx.
+
 1999-07-26  Ulrich Drepper  <drepper@cygnus.com>
 
 	* sysdeps/unix/sysv/sysv4/setsid.c: Correct types.
diff --git a/bits/elfclass.h b/bits/elfclass.h
index bb4dd545c1..180227d9e7 100644
--- a/bits/elfclass.h
+++ b/bits/elfclass.h
@@ -9,3 +9,6 @@
 #include <bits/wordsize.h>
 
 #define __ELF_NATIVE_CLASS __WORDSIZE
+
+/* The entries in the .hash table always have a size of 32 bits.  */
+typedef uint32_t Elf_Symndx;
diff --git a/elf/dl-load.c b/elf/dl-load.c
index e8b42a96e2..7640ec3289 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -1416,7 +1416,7 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded,
 	     are only interested in the list of libraries this isn't
 	     so severe.  Fake an entry with all the information we
 	     have.  */
-	  static const ElfW(Symndx) dummy_bucket = STN_UNDEF;
+	  static const Elf_Symndx dummy_bucket = STN_UNDEF;
 
 	  /* Enter the new object in the list of loaded objects.  */
 	  if ((name_copy = local_strdup (name)) == NULL
diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c
index 4120cb1e64..611effea6a 100644
--- a/elf/dl-lookup.c
+++ b/elf/dl-lookup.c
@@ -320,8 +320,8 @@ void
 internal_function
 _dl_setup_hash (struct link_map *map)
 {
-  ElfW(Symndx) *hash;
-  ElfW(Symndx) nchain;
+  Elf_Symndx *hash;
+  Elf_Symndx nchain;
 
   if (!map->l_info[DT_HASH])
     return;
diff --git a/elf/do-lookup.h b/elf/do-lookup.h
index f83b13ccf3..3c5e6f4e9b 100644
--- a/elf/do-lookup.h
+++ b/elf/do-lookup.h
@@ -43,7 +43,7 @@ FCT (const char *undef_name, struct link_map *undef_map,
       const ElfW(Sym) *symtab;
       const char *strtab;
       const ElfW(Half) *verstab;
-      ElfW(Symndx) symidx;
+      Elf_Symndx symidx;
       const ElfW(Sym) *sym;
 #if ! VERSIONED
       int num_versions = 0;
diff --git a/elf/elf.h b/elf/elf.h
index e541be8bc8..e722acbef5 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -56,10 +56,6 @@ typedef uint64_t Elf64_Off;
 typedef uint16_t Elf32_Section;
 typedef uint16_t Elf64_Section;
 
-/* Type of symbol indices.  */
-typedef uint32_t Elf32_Symndx;
-typedef uint64_t Elf64_Symndx;
-
 
 /* The ELF file header.  This appears at the start of every ELF file.  */
 
diff --git a/elf/link.h b/elf/link.h
index d3a54fc011..2de39e5711 100644
--- a/elf/link.h
+++ b/elf/link.h
@@ -151,8 +151,8 @@ struct link_map
     struct link_map *l_loader;
 
     /* Symbol hash table.  */
-    ElfW(Symndx) l_nbuckets;
-    const ElfW(Symndx) *l_buckets, *l_chain;
+    Elf_Symndx l_nbuckets;
+    const Elf_Symndx *l_buckets, *l_chain;
 
     unsigned int l_opencount;	/* Reference count for dlopen/dlclose.  */
     enum			/* Where this object came from.  */
diff --git a/sysdeps/generic/bits/elfclass.h b/sysdeps/generic/bits/elfclass.h
index bb4dd545c1..180227d9e7 100644
--- a/sysdeps/generic/bits/elfclass.h
+++ b/sysdeps/generic/bits/elfclass.h
@@ -9,3 +9,6 @@
 #include <bits/wordsize.h>
 
 #define __ELF_NATIVE_CLASS __WORDSIZE
+
+/* The entries in the .hash table always have a size of 32 bits.  */
+typedef uint32_t Elf_Symndx;
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/elfclass.h b/sysdeps/unix/sysv/linux/alpha/bits/elfclass.h
new file mode 100644
index 0000000000..e5aa4a0fbd
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/alpha/bits/elfclass.h
@@ -0,0 +1,14 @@
+/* This file specifies the native word size of the machine, which indicates
+   the ELF file class used for executables and shared objects on this
+   machine.  */
+
+#ifndef _LINK_H
+# error "Never use <bits/elfclass.h> directly; include <link.h> instead."
+#endif
+
+#include <bits/wordsize.h>
+
+#define __ELF_NATIVE_CLASS __WORDSIZE
+
+/* Linux/Alpha is exceptional as it has .hash section with 64 bit entries.  */
+typedef uint64_t Elf_Symndx;