This is the mail archive of the gdb-cvs@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]

[binutils-gdb] -Wwrite-strings: Fix Solaris "set procfs-file"


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=3e83a920090130052a407621b94b94513f539fda

commit 3e83a920090130052a407621b94b94513f539fda
Author: Pedro Alves <palves@redhat.com>
Date:   Wed Apr 5 19:21:36 2017 +0100

    -Wwrite-strings: Fix Solaris "set procfs-file"
    
    Compiling GDB with -Wwrite-strings flags this code in gdb/proc-api.c:
    
      static char *procfs_filename = "procfs_trace";
    
    as needing a cast.  However, this variable is a command variable, and
    as such it's incorrect to initialize it to a literal, since when you
    use the corresponding set command, gdb frees the old string...
    
    I didn't manage to fully build Solaris gdb (fails for other reasons),
    but I confirmed that the system GDB on Solaris 11 crashes when running
    this command:
    
     (gdb) set procfs-file foo
     Segmentation Fault (core dumped)
    
    So I don't think this commit can make it worse than the status quo.
    
    gdb/ChangeLog:
    2017-04-05  Pedro Alves  <palves@redhat.com>
    
    	* proc-api.c (procfs_filename): Don't initialize
            procfs_filename.
    	(prepare_to_trace): Assume procfs_filename is non-NULL.
    	(_initialize_proc_api): Give procfs_filename a default value here.

Diff:
---
 gdb/ChangeLog  | 7 +++++++
 gdb/proc-api.c | 6 +++---
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d391859..f4e9562 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,12 @@
 2017-04-05  Pedro Alves  <palves@redhat.com>
 
+	* proc-api.c (procfs_filename): Don't initialize
+        procfs_filename.
+	(prepare_to_trace): Assume procfs_filename is non-NULL.
+	(_initialize_proc_api): Give procfs_filename a default value here.
+
+2017-04-05  Pedro Alves  <palves@redhat.com>
+
 	* break-catch-throw.c (handle_gnu_v3_exceptions): Constify
 	'cond_string' parameter.
 	(extract_exception_regexp): Constify 'string' parameter.
diff --git a/gdb/proc-api.c b/gdb/proc-api.c
index 72746ce..dbadd55 100644
--- a/gdb/proc-api.c
+++ b/gdb/proc-api.c
@@ -60,15 +60,14 @@ struct trans {
 
 static int   procfs_trace    = 0;
 static FILE *procfs_file     = NULL;
-static char *procfs_filename = "procfs_trace";
+static char *procfs_filename;
 
 static void
 prepare_to_trace (void)
 {
   if (procfs_trace)			/* if procfs tracing turned on */
     if (procfs_file == NULL)		/* if output file not yet open */
-      if (procfs_filename != NULL)	/* if output filename known */
-	procfs_file = fopen (procfs_filename, "a");	/* open output file */
+      procfs_file = fopen (procfs_filename, "a");	/* open output file */
 }
 
 static void
@@ -785,6 +784,7 @@ Show tracing for /proc api calls."), NULL,
 			   NULL, /* FIXME: i18n: */
 			   &setlist, &showlist);
 
+  procfs_filename = xstrdup ("procfs_trace");
   add_setshow_filename_cmd ("procfs-file", no_class, &procfs_filename, _("\
 Set filename for /proc tracefile."), _("\
 Show filename for /proc tracefile."), NULL,


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