aboutsummaryrefslogtreecommitdiff
path: root/elf
diff options
context:
space:
mode:
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);
}