This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Fix non-pointer-sign gcc warnings


Prompted by Mark's suggestion, this is the only remaining GCC4 warnings
after -Wno-pointer-sign.  GCC4 is much more aggressive about inlining
static functions, especially when only used once.  It then does
uninitialized variable warnings across variables passed by address to
inlined functions.  It also can do uninitialized warnings for members
of structures.

The one in macroexp.c is not a real bug but I think GCC is justified in
not being able to see through it.  The one in stabsread.c is a real bug
and would cause GDB to crash on bad stabs.

-- 
Daniel Jacobowitz
CodeSourcery

2006-01-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* macroexp.c (expand): Initialize argc.
	* stabsread.c (read_type): Handle errors from read_args.
	(read_args): Return NULL for errors.

Index: macroexp.c
===================================================================
RCS file: /cvs/src/src/gdb/macroexp.c,v
retrieving revision 1.8
diff -u -p -r1.8 macroexp.c
--- macroexp.c	17 Dec 2005 22:34:01 -0000	1.8
+++ macroexp.c	15 Jan 2006 20:23:21 -0000
@@ -927,7 +927,7 @@ expand (const char *id,
   else if (def->kind == macro_function_like)
     {
       struct cleanup *back_to = make_cleanup (null_cleanup, 0);
-      int argc;
+      int argc = 0;
       struct macro_buffer *argv = NULL;
       struct macro_buffer substituted;
       struct macro_buffer substituted_src;
Index: stabsread.c
===================================================================
RCS file: /cvs/src/src/gdb/stabsread.c,v
retrieving revision 1.82
diff -u -p -r1.82 stabsread.c
--- stabsread.c	17 Dec 2005 22:34:02 -0000	1.82
+++ stabsread.c	15 Jan 2006 20:23:22 -0000
@@ -1804,6 +1804,8 @@ again:
 
 	  return_type = read_type (pp, objfile);
 	  args = read_args (pp, ';', objfile, &nargs, &varargs);
+	  if (args == NULL)
+	    return error_type (pp, objfile);
 	  type = dbx_alloc_type (typenums, objfile);
 	  smash_to_method_type (type, domain, return_type, args,
 				nargs, varargs);
@@ -3985,8 +3987,8 @@ handle_true_range:
 }
 
 /* Read in an argument list.  This is a list of types, separated by commas
-   and terminated with END.  Return the list of types read in, or (struct type
-   **)-1 if there is an error.  */
+   and terminated with END.  Return the list of types read in, or NULL
+   if there is an error.  */
 
 static struct field *
 read_args (char **pp, int end, struct objfile *objfile, int *nargsp,
@@ -4001,7 +4003,7 @@ read_args (char **pp, int end, struct ob
     {
       if (**pp != ',')
 	/* Invalid argument list: no ','.  */
-	return (struct field *) -1;
+	return NULL;
       (*pp)++;
       STABS_CONTINUE (pp, objfile);
       types[n++] = read_type (pp, objfile);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]