This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Avoid producing broken non-native core files
- From: "Maciej W. Rozycki" <macro at codesourcery dot com>
- To: Steve Ellcey <sellcey at mips dot com>
- Cc: Pedro Alves <palves at redhat dot com>, <gdb-patches at sourceware dot org>
- Date: Tue, 29 Oct 2013 17:20:36 +0000
- Subject: Re: [PATCH] Avoid producing broken non-native core files
- Authentication-results: sourceware.org; auth=none
- References: <alpine dot DEB dot 1 dot 10 dot 1310190205580 dot 12843 at tp dot orcam dot me dot uk> <1383066110 dot 2558 dot 177 dot camel at ubuntu-sellcey>
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);