summaryrefslogtreecommitdiff
path: root/libexec
diff options
context:
space:
mode:
authormrg <mrg@NetBSD.org>2009-01-06 04:01:46 +0000
committermrg <mrg@NetBSD.org>2009-01-06 04:01:46 +0000
commitfb3cc85fefcc474afd10e2bbe715e8d63b87d7a0 (patch)
tree3f51d74b83e7c7e55baa2b1c7f612d5eddb7aa9c /libexec
parent648c936726b5bba16f25d3cfcce6442b80ce2c4e (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.c12
-rw-r--r--libexec/ld.elf_so/map_object.c20
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;