[Ltrace-devel] [PATCH 1/6] Fix building with --enable-debug

Zachary T Welch zwelch at codesourcery.com
Thu Dec 9 02:55:09 UTC 2010


Numerous warnings had snuck into the build, preventing ltrace from
building with --enable-debug (which uses -Wall, -Werror, and more).
This patch fixes the problems, mostly caused by -Wsign-compare.

Signed-off-by: Zachary T Welch <zwelch at codesourcery.com>
---
 display_args.c                |   14 +++++++-------
 ltrace-elf.c                  |    2 +-
 ltrace-elf.h                  |    2 +-
 options.c                     |    2 +-
 options.h                     |    4 ++--
 sysdeps/linux-gnu/arm/trace.c |    2 +-
 sysdeps/linux-gnu/proc.c      |    6 +++---
 sysdeps/linux-gnu/trace.c     |    6 +++---
 8 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/display_args.c b/display_args.c
index 993a808..c639c88 100644
--- a/display_args.c
+++ b/display_args.c
@@ -15,8 +15,8 @@ static int display_value(enum tof type, Process *proc,
 static int display_unknown(enum tof type, Process *proc, long value);
 static int display_format(enum tof type, Process *proc, int arg_num);
 
-static int string_maxlength = INT_MAX;
-static int array_maxlength = INT_MAX;
+static size_t string_maxlength = INT_MAX;
+static size_t array_maxlength = INT_MAX;
 
 static long
 get_length(enum tof type, Process *proc, int len_spec,
@@ -59,8 +59,8 @@ display_arrayptr(enum tof type, Process *proc,
 			    void *addr, arg_type_info * info,
 			    void *st, arg_type_info* st_info) {
 	int len = 0;
-	int i;
-	int array_len;
+	size_t i;
+	size_t array_len;
 
 	if (addr == NULL)
 		return fprintf(options.output, "NULL");
@@ -143,7 +143,7 @@ display_pointer(enum tof type, Process *proc, long value,
 static int
 display_enum(enum tof type, Process *proc,
 		arg_type_info* info, long value) {
-	int ii;
+	size_t ii;
 	for (ii = 0; ii < info->u.enum_info.entries; ++ii) {
 		if (info->u.enum_info.values[ii] == value)
 			return fprintf(options.output, "%s", info->u.enum_info.keys[ii]);
@@ -281,7 +281,7 @@ static int
 display_string(enum tof type, Process *proc, void *addr,
 			  size_t maxlength) {
 	unsigned char *str1;
-	int i;
+	size_t i;
 	int len = 0;
 
 	if (!addr) {
@@ -328,7 +328,7 @@ display_format(enum tof type, Process *proc, int arg_num) {
 	void *addr;
 	unsigned char *str1;
 	int i;
-	int len = 0;
+	size_t len = 0;
 	arg_type_info info;
 
 	info.type = ARGTYPE_POINTER;
diff --git a/ltrace-elf.c b/ltrace-elf.c
index 81185fe..29a8b9d 100644
--- a/ltrace-elf.c
+++ b/ltrace-elf.c
@@ -762,7 +762,7 @@ read_elf(Process *proc) {
 			}
 	}
 
-	int found_count = 0;
+	unsigned found_count = 0;
 
 	for (xptr = opt_x; xptr; xptr = xptr->next) {
 		if (xptr->found)
diff --git a/ltrace-elf.h b/ltrace-elf.h
index 3d23f57..37f2a18 100644
--- a/ltrace-elf.h
+++ b/ltrace-elf.h
@@ -41,7 +41,7 @@ struct ltelf {
 
 #define PLTS_ARE_EXECUTABLE(lte) ((lte->lte_flags & LTE_PLT_EXECUTABLE) != 0)
 
-extern int library_num;
+extern size_t library_num;
 extern char *library[MAX_LIBRARIES];
 
 extern struct library_symbol *read_elf(Process *);
diff --git a/options.c b/options.c
index c7e3be6..74c28bd 100644
--- a/options.c
+++ b/options.c
@@ -37,7 +37,7 @@ struct options_t options = {
 };
 
 char *library[MAX_LIBRARIES];
-int library_num = 0;
+size_t library_num = 0;
 static char *progname;		/* Program name (`ltrace') */
 int opt_i = 0;			/* instruction pointer */
 int opt_r = 0;			/* print relative timestamp */
diff --git a/options.h b/options.h
index 9079cbf..9a00629 100644
--- a/options.h
+++ b/options.h
@@ -11,8 +11,8 @@ struct options_t {
 	FILE *output;   /* output to a specific file */
 	int summary;    /* count time, calls, and report a summary on program exit */
 	int debug;      /* debug */
-	int arraylen;   /* default maximum # of array elements printed */
-	int strlen;     /* default maximum # of bytes printed in strings */
+	size_t arraylen;   /* default maximum # of array elements printed */
+	size_t strlen;     /* default maximum # of bytes printed in strings */
 	int follow;     /* trace child processes */
 	int no_plt;     /* set bps on PLT entries */
 	int no_signals; /* don't print signals */
diff --git a/sysdeps/linux-gnu/arm/trace.c b/sysdeps/linux-gnu/arm/trace.c
index e9fcbdd..39b8264 100644
--- a/sysdeps/linux-gnu/arm/trace.c
+++ b/sysdeps/linux-gnu/arm/trace.c
@@ -46,7 +46,7 @@ syscall_p(Process *proc, int status, int *sysnum) {
 		/* get the user's pc (plus 8) */
 		int pc = ptrace(PTRACE_PEEKUSER, proc->pid, off_pc, 0);
 		/* fetch the SWI instruction */
-		int insn = ptrace(PTRACE_PEEKTEXT, proc->pid, pc - 4, 0);
+		unsigned insn = ptrace(PTRACE_PEEKTEXT, proc->pid, pc - 4, 0);
 		int ip = ptrace(PTRACE_PEEKUSER, proc->pid, off_ip, 0);
 
 		if (insn == 0xef000000 || insn == 0x0f000000
diff --git a/sysdeps/linux-gnu/proc.c b/sysdeps/linux-gnu/proc.c
index 642cb32..3c17e1f 100644
--- a/sysdeps/linux-gnu/proc.c
+++ b/sysdeps/linux-gnu/proc.c
@@ -143,7 +143,7 @@ load_debug_struct(Process *proc) {
 
 static void
 linkmap_add_cb(void *data) { //const char *lib_name, ElfW(Addr) addr) {
-	int i = 0;
+	size_t i = 0;
 	struct cb_data *lm_add = data;
 	struct ltelf lte;
 	struct opt_x_t *xptr;
@@ -252,13 +252,13 @@ hook_libdl_cb(void *data) {
 
 int
 linkmap_init(Process *proc, struct ltelf *lte) {
-	void *dbg_addr = NULL;
+	void *dbg_addr = NULL, *dyn_addr = (void *)(unsigned)lte->dyn_addr;
 	struct r_debug *rdbg = NULL;
 	struct cb_data data;
 
 	debug(DEBUG_FUNCTION, "linkmap_init()");
 
-	if (find_dynamic_entry_addr(proc, (void *)lte->dyn_addr, DT_DEBUG, &dbg_addr) == -1) {
+	if (find_dynamic_entry_addr(proc, dyn_addr, DT_DEBUG, &dbg_addr) == -1) {
 		debug(2, "Couldn't find debug structure!");
 		return -1;
 	}
diff --git a/sysdeps/linux-gnu/trace.c b/sysdeps/linux-gnu/trace.c
index 2ec2904..e4be465 100644
--- a/sysdeps/linux-gnu/trace.c
+++ b/sysdeps/linux-gnu/trace.c
@@ -178,8 +178,8 @@ umovebytes(Process *proc, void *addr, void *laddr, size_t len) {
 		long a;
 		char c[sizeof(long)];
 	} a;
-	int offset = 0, started = 0;
-	size_t bytes_read = 0;
+	int started = 0;
+	size_t offset = 0, bytes_read = 0;
 
 	while (offset < len) {
 		a.a = ptrace(PTRACE_PEEKTEXT, proc->pid, addr + offset, 0);
@@ -215,7 +215,7 @@ umovestr(Process *proc, void *addr, int len, void *laddr) {
 		long a;
 		char c[sizeof(long)];
 	} a;
-	int i;
+	unsigned i;
 	int offset = 0;
 
 	while (offset < len) {
-- 
1.7.2.2




More information about the Ltrace-devel mailing list