diff options
| author | mrg <mrg@NetBSD.org> | 2009-01-06 04:01:46 +0000 |
|---|---|---|
| committer | mrg <mrg@NetBSD.org> | 2009-01-06 04:01:46 +0000 |
| commit | fb3cc85fefcc474afd10e2bbe715e8d63b87d7a0 (patch) | |
| tree | 3f51d74b83e7c7e55baa2b1c7f612d5eddb7aa9c /libexec | |
| parent | 648c936726b5bba16f25d3cfcce6442b80ce2c4e (diff) | |
add some (uintptr_t) to some casts, so these compile with ELFSIZE=32
*and _LP64. necessary for 32/64 bit combo ldd support.
Diffstat (limited to 'libexec')
| -rw-r--r-- | libexec/ld.elf_so/headers.c | 12 | ||||
| -rw-r--r-- | libexec/ld.elf_so/map_object.c | 20 |
2 files changed, 16 insertions, 16 deletions
diff --git a/libexec/ld.elf_so/headers.c b/libexec/ld.elf_so/headers.c index ce4fee59c20..8aa3ef98575 100644 --- a/libexec/ld.elf_so/headers.c +++ b/libexec/ld.elf_so/headers.c @@ -1,4 +1,4 @@ -/* $NetBSD: headers.c,v 1.26 2007/12/29 01:44:03 christos Exp $ */ +/* $NetBSD: headers.c,v 1.27 2009/01/06 04:01:46 mrg Exp $ */ /* * Copyright 1996 John D. Polstra. @@ -40,7 +40,7 @@ #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: headers.c,v 1.26 2007/12/29 01:44:03 christos Exp $"); +__RCSID("$NetBSD: headers.c,v 1.27 2009/01/06 04:01:46 mrg Exp $"); #endif /* not lint */ #include <err.h> @@ -301,18 +301,18 @@ _rtld_digest_phdr(const Elf_Phdr *phdr, int phnum, caddr_t entry) switch (ph->p_type) { case PT_PHDR: - relocoffs = (char *)phdr - (char *)ph->p_vaddr; + relocoffs = (uintptr_t)phdr - (uintptr_t)ph->p_vaddr; break; case PT_INTERP: - obj->interp = (const char *)vaddr; + obj->interp = (const char *)(uintptr_t)vaddr; break; case PT_LOAD: assert(nsegs < 2); if (nsegs == 0) { /* First load segment */ obj->vaddrbase = round_down(vaddr); - obj->mapbase = (caddr_t)obj->vaddrbase; + obj->mapbase = (caddr_t)(uintptr_t)obj->vaddrbase; obj->relocbase = (void *)relocoffs; obj->textsize = round_up(vaddr + ph->p_memsz) - obj->vaddrbase; @@ -324,7 +324,7 @@ _rtld_digest_phdr(const Elf_Phdr *phdr, int phnum, caddr_t entry) break; case PT_DYNAMIC: - obj->dynamic = (Elf_Dyn *)vaddr; + obj->dynamic = (Elf_Dyn *)(uintptr_t)vaddr; break; } } diff --git a/libexec/ld.elf_so/map_object.c b/libexec/ld.elf_so/map_object.c index b6ba97e45a8..1fdfe7b6eaa 100644 --- a/libexec/ld.elf_so/map_object.c +++ b/libexec/ld.elf_so/map_object.c @@ -1,4 +1,4 @@ -/* $NetBSD: map_object.c,v 1.36 2008/06/03 19:32:32 ad Exp $ */ +/* $NetBSD: map_object.c,v 1.37 2009/01/06 04:01:46 mrg Exp $ */ /* * Copyright 1996 John D. Polstra. @@ -34,7 +34,7 @@ #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: map_object.c,v 1.36 2008/06/03 19:32:32 ad Exp $"); +__RCSID("$NetBSD: map_object.c,v 1.37 2009/01/06 04:01:46 mrg Exp $"); #endif /* not lint */ #include <errno.h> @@ -92,7 +92,7 @@ _rtld_map_object(const char *path, int fd, const struct stat *sb) #endif if (sb != NULL && sb->st_size < sizeof (Elf_Ehdr)) { - _rtld_error("%s: unrecognized file format", path); + _rtld_error("%s: unrecognized file format1", path); return NULL; } @@ -114,7 +114,7 @@ _rtld_map_object(const char *path, int fd, const struct stat *sb) /* Make sure the file is valid */ if (memcmp(ELFMAG, ehdr->e_ident, SELFMAG) != 0 || ehdr->e_ident[EI_CLASS] != ELFCLASS) { - _rtld_error("%s: unrecognized file format", path); + _rtld_error("%s: unrecognized file format2 [%x != %x]", path, ehdr->e_ident[EI_CLASS], ELFCLASS); goto bad; } /* Elf_e_ident includes class */ @@ -156,7 +156,7 @@ _rtld_map_object(const char *path, int fd, const struct stat *sb) while (phdr < phlimit) { switch (phdr->p_type) { case PT_INTERP: - obj->interp = (void *)phdr->p_vaddr; + obj->interp = (void *)(uintptr_t)phdr->p_vaddr; break; case PT_LOAD: @@ -166,13 +166,13 @@ _rtld_map_object(const char *path, int fd, const struct stat *sb) break; case PT_DYNAMIC: - obj->dynamic = (void *)phdr->p_vaddr; + obj->dynamic = (void *)(uintptr_t)phdr->p_vaddr; break; } ++phdr; } - obj->entry = (void *)ehdr->e_entry; + obj->entry = (void *)(uintptr_t)ehdr->e_entry; if (!obj->dynamic) { _rtld_error("%s: not dynamically linked", path); goto bad; @@ -288,11 +288,11 @@ _rtld_map_object(const char *path, int fd, const struct stat *sb) obj->relocbase = mapbase - base_vaddr; if (obj->dynamic) - obj->dynamic = (void *)(obj->relocbase + (Elf_Addr)obj->dynamic); + obj->dynamic = (void *)(obj->relocbase + (Elf_Addr)(uintptr_t)obj->dynamic); if (obj->entry) - obj->entry = (void *)(obj->relocbase + (Elf_Addr)obj->entry); + obj->entry = (void *)(obj->relocbase + (Elf_Addr)(uintptr_t)obj->entry); if (obj->interp) - obj->interp = (void *)(obj->relocbase + (Elf_Addr)obj->interp); + obj->interp = (void *)(obj->relocbase + (Elf_Addr)(uintptr_t)obj->interp); return obj; |
