Module Name:    src
Committed By:   pooka
Date:           Thu Nov 26 10:57:26 UTC 2009

Modified Files:
        src/sys/rump/librump/rumpuser: rumpuser_dl.c

Log Message:
Shuffle types around and add some random typecasts to make lint
and LP64 gcc sign comparison shut up.  I'm not sure what benefit
this brings apart from introducing some more bugs for everyone's
debugging pleasure.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/rump/librump/rumpuser/rumpuser_dl.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/rump/librump/rumpuser/rumpuser_dl.c
diff -u src/sys/rump/librump/rumpuser/rumpuser_dl.c:1.7 src/sys/rump/librump/rumpuser/rumpuser_dl.c:1.8
--- src/sys/rump/librump/rumpuser/rumpuser_dl.c:1.7	Thu Nov 26 09:50:38 2009
+++ src/sys/rump/librump/rumpuser/rumpuser_dl.c	Thu Nov 26 10:57:26 2009
@@ -1,4 +1,4 @@
-/*      $NetBSD: rumpuser_dl.c,v 1.7 2009/11/26 09:50:38 pooka Exp $	*/
+/*      $NetBSD: rumpuser_dl.c,v 1.8 2009/11/26 10:57:26 pooka Exp $	*/
 
 /*
  * Copyright (c) 2009 Antti Kantee.  All Rights Reserved.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: rumpuser_dl.c,v 1.7 2009/11/26 09:50:38 pooka Exp $");
+__RCSID("$NetBSD: rumpuser_dl.c,v 1.8 2009/11/26 10:57:26 pooka Exp $");
 
 #include <sys/types.h>
 #include <sys/time.h>
@@ -59,7 +59,7 @@
 
 static void *
 reservespace(void *store, size_t *storesize,
-	size_t storeoff, int64_t required)
+	size_t storeoff, size_t required)
 {
 	size_t chunk, newsize;
 
@@ -88,9 +88,11 @@
 do {									\
 	if (eident == ELFCLASS32) {					\
 		Elf32_Ehdr *ehdr = base;				\
+		/*LINTED*/						\
 		result = ehdr->thevar;					\
 	} else {							\
 		Elf64_Ehdr *ehdr = base;				\
+		/*LINTED*/						\
 		result = ehdr->thevar;					\
 	}								\
 } while (/*CONSTCOND*/0)
@@ -99,9 +101,11 @@
 do {									\
 	if (eident == ELFCLASS32) {					\
 		Elf32_Shdr *shdr = base;				\
+		/*LINTED*/						\
 		result = shdr[n].thevar;				\
 	} else {							\
 		Elf64_Shdr *shdr = base;				\
+		/*LINTED*/						\
 		result = shdr[n].thevar;				\
 	}								\
 } while (/*CONSTCOND*/0)
@@ -154,9 +158,10 @@
 	int i = 0, fd;
 	char *str_base;
 	void *syms_base = NULL; /* XXXgcc */
-	int64_t cursymsize, curstrsize;
+	size_t cursymsize, curstrsize;
 	void *shdr_base;
-	size_t shnum, shsize;
+	size_t shsize;
+	int shnum;
 	uint64_t shoff;
 	void *ed_base;
 	uint64_t ed_tag;
@@ -180,7 +185,8 @@
 	EHDR_GETMEMBER(libbase, e_shentsize, shsize);
 	EHDR_GETMEMBER(libbase, e_shoff, shoff);
 	shdr_base = malloc(shnum * shsize);
-	if (pread(fd, shdr_base, shnum * shsize, (off_t)shoff) != shnum*shsize){
+	if (pread(fd, shdr_base, shnum * shsize, (off_t)shoff)
+	    != (ssize_t)(shnum*shsize)){
 		sverrno = errno;
 		fprintf(stderr, "read section headers for %s failed\n",
 		    map->l_name);
@@ -188,7 +194,7 @@
 		close(fd);
 		return sverrno;
 	}
-	cursymsize = -1;
+	cursymsize = (size_t)-1;
 	for (i = 1; i <= shnum; i++) {
 		int shtype;
 
@@ -200,7 +206,7 @@
 	}
 	free(shdr_base);
 	close(fd);
-	if (cursymsize == -1) {
+	if (cursymsize == (size_t)-1) {
 		fprintf(stderr, "could not find dynsym size from %s\n",
 		    map->l_name);
 		return ENOEXEC;
@@ -208,13 +214,13 @@
 
 	/* find symtab, strtab and strtab size */
 	str_base = NULL;
-	curstrsize = -1;
+	curstrsize = (size_t)-1;
 	ed_base = map->l_ld;
 	i = 0;
 	DYNn_GETMEMBER(ed_base, i, d_tag, ed_tag);
 	while (ed_tag != DT_NULL) {
 		uintptr_t edptr;
-		uint64_t edval;
+		size_t edval;
 
 		switch (ed_tag) {
 		case DT_SYMTAB:
@@ -236,7 +242,7 @@
 		DYNn_GETMEMBER(ed_base, i, d_tag, ed_tag);
 	} while (ed_tag != DT_NULL);
 
-	if (str_base == NULL || syms_base == NULL || curstrsize == -1) {
+	if (str_base == NULL || syms_base == NULL || curstrsize == (size_t)-1) {
 		fprintf(stderr, "could not find strtab, symtab or strtab size "
 		    "in %s\n", map->l_name);
 		return ENOEXEC;

Reply via email to