Module Name:    src
Committed By:   thorpej
Date:           Sat Dec 19 08:40:58 UTC 2009

Modified Files:
        src/external/bsd/libelf/dist: libelf_convert.m4

Log Message:
Fix all sorts of problems with lint and compiler warnings.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/external/bsd/libelf/dist/libelf_convert.m4

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

Modified files:

Index: src/external/bsd/libelf/dist/libelf_convert.m4
diff -u src/external/bsd/libelf/dist/libelf_convert.m4:1.5 src/external/bsd/libelf/dist/libelf_convert.m4:1.6
--- src/external/bsd/libelf/dist/libelf_convert.m4:1.5	Sat Dec 19 07:33:06 2009
+++ src/external/bsd/libelf/dist/libelf_convert.m4	Sat Dec 19 08:40:57 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: libelf_convert.m4,v 1.5 2009/12/19 07:33:06 thorpej Exp $	*/
+/*	$NetBSD: libelf_convert.m4,v 1.6 2009/12/19 08:40:57 thorpej Exp $	*/
 
 /*-
  * Copyright (c) 2006,2007 Joseph Koshy
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 /* __FBSDID("$FreeBSD: src/lib/libelf/libelf_convert.m4,v 1.4.2.1.2.1 2009/10/25 01:10:29 kensmith Exp $"); */
-__RCSID("$NetBSD: libelf_convert.m4,v 1.5 2009/12/19 07:33:06 thorpej Exp $");
+__RCSID("$NetBSD: libelf_convert.m4,v 1.6 2009/12/19 08:40:57 thorpej Exp $");
 
 #include <sys/types.h>
 
@@ -46,9 +46,9 @@
 
 #define	SWAP_HALF(X) 	do {						\
 		uint16_t _x = (uint16_t) (X);				\
-		uint16_t _t = _x & 0xFF;				\
+		uint32_t _t = _x & 0xFF;				\
 		_t <<= 8; _x >>= 8; _t |= _x & 0xFF;			\
-		(X) = _t;						\
+		(X) = (uint16_t)(_t & 0xFFFF);				\
 	} while (/*CONSTCOND*/0)
 #define	SWAP_WORD(X) 	do {						\
 		uint32_t _x = (uint32_t) (X);				\
@@ -85,44 +85,53 @@
  * destination pointer is incremented after the write.
  */
 #define	WRITE_BYTE(P,X) do {						\
-		unsigned char *const _p = (unsigned char *) (P);	\
+		unsigned char *const _p = (void *) (P);			\
 		_p[0]		= (unsigned char) (X);			\
-		(P)		= _p + 1;				\
+		(P)		= (void *)(_p + 1);			\
 	} while (/*CONSTCOND*/0)
 #define	WRITE_HALF(P,X)	do {						\
-		uint16_t _t	= (X);					\
-		unsigned char *const _p	= (unsigned char *) (P);	\
-		unsigned const char *const _q = (unsigned char *) &_t;	\
-		_p[0]		= _q[0];				\
-		_p[1]		= _q[1];				\
-		(P) 		= _p + 2;				\
+		union {							\
+			uint16_t val;					\
+			uint8_t bytes[2];				\
+		} _t;							\
+		unsigned char *const _p	= (void *) (P);			\
+		_t.val = (X);						\
+		_p[0]		= _t.bytes[0];				\
+		_p[1]		= _t.bytes[1];				\
+		(P) 		= (void *)(_p + 2);			\
 	} while (/*CONSTCOND*/0)
 #define	WRITE_WORD(P,X)	do {						\
-		uint32_t _t	= (X);					\
-		unsigned char *const _p	= (unsigned char *) (P);	\
-		unsigned const char *const _q = (unsigned char *) &_t;	\
-		_p[0]		= _q[0];				\
-		_p[1]		= _q[1];				\
-		_p[2]		= _q[2];				\
-		_p[3]		= _q[3];				\
-		(P)		= _p + 4;				\
+		union {							\
+			uint32_t val;					\
+			uint8_t bytes[4];				\
+		} _t;							\
+		unsigned char *const _p	= (void *) (P);			\
+		_t.val = (X);						\
+		_p[0]		= _t.bytes[0];				\
+		_p[1]		= _t.bytes[1];				\
+		_p[2]		= _t.bytes[2];				\
+		_p[3]		= _t.bytes[3];				\
+		(P)		= (void *)(_p + 4);			\
 	} while (/*CONSTCOND*/0)
 #define	WRITE_ADDR32(P,X)	WRITE_WORD(P,X)
 #define	WRITE_OFF32(P,X)	WRITE_WORD(P,X)
 #define	WRITE_SWORD(P,X)	WRITE_WORD(P,X)
 #define	WRITE_WORD64(P,X)	do {					\
-		uint64_t _t	= (X);					\
-		unsigned char *const _p	= (unsigned char *) (P);	\
-		unsigned const char *const _q = (unsigned char *) &_t;	\
-		_p[0]		= _q[0];				\
-		_p[1]		= _q[1];				\
-		_p[2]		= _q[2];				\
-		_p[3]		= _q[3];				\
-		_p[4]		= _q[4];				\
-		_p[5]		= _q[5];				\
-		_p[6]		= _q[6];				\
-		_p[7]		= _q[7];				\
-		(P)		= _p + 8;				\
+		union {							\
+			uint64_t val;					\
+			uint8_t bytes[8];				\
+		} _t;							\
+		unsigned char *const _p	= (void *) (P);			\
+		_t.val = (X);						\
+		_p[0]		= _t.bytes[0];				\
+		_p[1]		= _t.bytes[1];				\
+		_p[2]		= _t.bytes[2];				\
+		_p[3]		= _t.bytes[3];				\
+		_p[4]		= _t.bytes[4];				\
+		_p[5]		= _t.bytes[5];				\
+		_p[6]		= _t.bytes[6];				\
+		_p[7]		= _t.bytes[7];				\
+		(P)		= (void *)(_p + 8);			\
 	} while (/*CONSTCOND*/0)
 #define	WRITE_ADDR64(P,X)	WRITE_WORD64(P,X)
 #define	WRITE_LWORD(P,X)	WRITE_WORD64(P,X)
@@ -142,15 +151,15 @@
 
 #define	READ_BYTE(P,X)	do {						\
 		const unsigned char *const _p =				\
-			(const unsigned char *) (P);			\
+			(const void *) (P);				\
 		(X)		= _p[0];				\
 		(P)		= (P) + 1;				\
 	} while (/*CONSTCOND*/0)
 #define	READ_HALF(P,X)	do {						\
 		uint16_t _t;						\
-		unsigned char *const _q = (unsigned char *) &_t;	\
+		unsigned char *const _q = (void *) &_t;			\
 		const unsigned char *const _p =				\
-			(const unsigned char *) (P);			\
+			(const void *) (P);				\
 		_q[0]		= _p[0];				\
 		_q[1]		= _p[1];				\
 		(P)		= (P) + 2;				\
@@ -158,9 +167,9 @@
 	} while (/*CONSTCOND*/0)
 #define	READ_WORD(P,X)	do {						\
 		uint32_t _t;						\
-		unsigned char *const _q = (unsigned char *) &_t;	\
+		unsigned char *const _q = (void *) &_t;			\
 		const unsigned char *const _p =				\
-			(const unsigned char *) (P);			\
+			(const void *) (P);				\
 		_q[0]		= _p[0];				\
 		_q[1]		= _p[1];				\
 		_q[2]		= _p[2];				\
@@ -173,9 +182,9 @@
 #define	READ_SWORD(P,X)		READ_WORD(P,X)
 #define	READ_WORD64(P,X)	do {					\
 		uint64_t _t;						\
-		unsigned char *const _q = (unsigned char *) &_t;	\
+		unsigned char *const _q = (void *) &_t;			\
 		const unsigned char *const _p =				\
-			(const unsigned char *) (P);			\
+			(const void *) (P);				\
 		_q[0]		= _p[0];				\
 		_q[1]		= _p[1];				\
 		_q[2]		= _p[2];				\
@@ -475,10 +484,10 @@
  * simple memcpy suffices for both directions of conversion.
  */
 
+/*ARGSUSED*/
 static void
-libelf_cvt_BYTE_tox(char *dst, char *src, size_t count, int byteswap)
+libelf_cvt_BYTE_tox(char *dst, char *src, size_t count, int byteswap __unused)
 {
-	(void) byteswap;
 	if (dst != src)
 		(void) memcpy(dst, src, count);
 }

Reply via email to