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]

Re: [PATCH] Avoid producing broken non-native core files


On Tue, 29 Oct 2013, Steve Ellcey wrote:

> Maciej,  I believe this change is the cause of a build failure for me
> when using an old GCC (4.1.2) to build gdb.  I get:
> 
> cc1: warnings being treated as errors
> /scratch/gcc/nightly/src/binutils-gdb/gdb/linux-tdep.c: In function
> 'linux_corefile_thread_callback':
> /scratch/gcc/nightly/src/binutils-gdb/gdb/linux-tdep.c:1196: warning:
> 'siginfo_size' may be used uninitialized in this function
> 
> I do not get this error when using a newer GCC (like 4.4.3 or above).  I
> can work around it by setting siginfo_size to 0 when it is declared.  I
> don't know if there is a minimum GCC version required for building gdb
> but my build with GCC 4.1.2 used to work.  Do you think initializing
> siginfo_size is reasonable to allow us to use older GCC's to build gdb?

 You're right, I noticed this problem in a build I did after I had already 
committed that change -- it looks like GCC tries to recurse into the 
static function being called (that is passed a pointer to siginfo_size) to 
figure out when the variable is initialised and when it is not.  And for 
some compiler's versions (4.3.3 in my case) it gets confused and 
complains.  Sorry to have caused this regression.

 Here's a change I made last week before I ran out of time; I gather it is 
the same as yours and it fixes the problem for me.  Any objections before 
I apply it?

 Do we have an established practice of making comments within the source 
around compiler shortcoming/bug workarounds -- so that we can remove such
clutter later on when we no longer support a given compiler's version?

2013-10-29  Maciej W. Rozycki  <macro@codesourcery.com>

	gdb/
	* linux-tdep.c (linux_corefile_thread_callback): Preinitialize
	siginfo_size.

  Maciej

gdb-core-siginfo-size-init.diff
Index: gdb-fsf-trunk-quilt/gdb/linux-tdep.c
===================================================================
--- gdb-fsf-trunk-quilt.orig/gdb/linux-tdep.c	2013-10-26 20:59:40.000000000 +0100
+++ gdb-fsf-trunk-quilt/gdb/linux-tdep.c	2013-10-26 21:01:02.848280142 +0100
@@ -1193,7 +1193,7 @@ linux_corefile_thread_callback (struct t
       struct cleanup *old_chain;
       struct regcache *regcache;
       gdb_byte *siginfo_data;
-      LONGEST siginfo_size;
+      LONGEST siginfo_size = 0;
 
       regcache = get_thread_arch_regcache (info->ptid, args->gdbarch);
 


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