diff options
Diffstat (limited to 'elf')
-rw-r--r-- | elf/dl-close.c | 1 | ||||
-rw-r--r-- | elf/dl-lookup.c | 7 | ||||
-rw-r--r-- | elf/elf.h | 4 | ||||
-rw-r--r-- | elf/link.h | 4 | ||||
-rw-r--r-- | elf/rtld.c | 2 |
5 files changed, 12 insertions, 6 deletions
diff --git a/elf/dl-close.c b/elf/dl-close.c index 69fdefa..70d7ab4 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 5f1e6d0..bbccbc0 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; @@ -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. */ @@ -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. */ @@ -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); } |