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] Change producer_is_gcc function return type to bool.


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

commit b1ffba5a7fe1eb1fb97f3e81dd5cc78b59eb1fea
Author: Mark Wielaard <mjw@redhat.com>
Date:   Wed Feb 4 18:14:33 2015 +0100

    Change producer_is_gcc function return type to bool.
    
    gdb/ChangeLog:
    
            * utils.h (producer_is_gcc): Change return type to bool. Add major
            argument.
            * utils.c (producer_is_gcc): Likewise.
            (producer_is_gcc_ge_4): Adjust producer_is_gcc call.
            * dwarf2read.c (check_producer): Likewise.

Diff:
---
 gdb/ChangeLog    |  8 ++++++++
 gdb/dwarf2read.c |  2 +-
 gdb/utils.c      | 25 +++++++++++++++++--------
 gdb/utils.h      |  4 +++-
 4 files changed, 29 insertions(+), 10 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 58df0ca..a23c2d8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2015-02-04  Mark Wielaard  <mjw@redhat.com>
+
+	* utils.h (producer_is_gcc): Change return type to bool. Add major
+	argument.
+	* utils.c (producer_is_gcc): Likewise.
+	(producer_is_gcc_ge_4): Adjust producer_is_gcc call.
+	* dwarf2read.c (check_producer): Likewise.
+
 2015-02-10  Pedro Alves  <palves@redhat.com>
 
 	* infrun.c (displaced_step_fixup): Switch to the event thread
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index db35e7e..a764389 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -12293,7 +12293,7 @@ check_producer (struct dwarf2_cu *cu)
 	 combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
 	 interpreted incorrectly by GDB now - GCC PR debug/48229.  */
     }
-  else if ((major = producer_is_gcc (cu->producer, &minor)) > 0)
+  else if (producer_is_gcc (cu->producer, &major, &minor))
     {
       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
diff --git a/gdb/utils.c b/gdb/utils.c
index 909476b..2b54739 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -3259,7 +3259,9 @@ int
 producer_is_gcc_ge_4 (const char *producer)
 {
   int major, minor;
-  major = producer_is_gcc (producer, &minor);
+
+  if (! producer_is_gcc (producer, &major, &minor))
+    return -1;
   if (major < 4)
     return -1;
   if (major > 4)
@@ -3267,17 +3269,24 @@ producer_is_gcc_ge_4 (const char *producer)
   return minor;
 }
 
-/* Returns the major version number if the given PRODUCER string is GCC and
-   sets the MINOR version.  Returns -1 if the given PRODUCER is NULL or it
-   isn't GCC.  */
-int
-producer_is_gcc (const char *producer, int *minor)
+/* Returns true if the given PRODUCER string is GCC and sets the MAJOR
+   and MINOR versions when not NULL.  Returns false if the given PRODUCER
+   is NULL or it isn't GCC.  */
+
+bool
+producer_is_gcc (const char *producer, int *major, int *minor)
 {
   const char *cs;
-  int major;
 
   if (producer != NULL && strncmp (producer, "GNU ", strlen ("GNU ")) == 0)
     {
+      int maj, min;
+
+      if (major == NULL)
+	major = &maj;
+      if (minor == NULL)
+	minor = &min;
+
       /* Skip any identifier after "GNU " - such as "C11" "C++" or "Java".
 	 A full producer string might look like:
 	 "GNU C 4.7.2"
@@ -3289,7 +3298,7 @@ producer_is_gcc (const char *producer, int *minor)
         cs++;
       if (*cs && isspace (*cs))
         cs++;
-      if (sscanf (cs, "%d.%d", &major, minor) == 2)
+      if (sscanf (cs, "%d.%d", major, minor) == 2)
 	return major;
     }
 
diff --git a/gdb/utils.h b/gdb/utils.h
index 6724d7c..d8afa79 100644
--- a/gdb/utils.h
+++ b/gdb/utils.h
@@ -21,6 +21,8 @@
 #ifndef UTILS_H
 #define UTILS_H
 
+#include <stdbool.h>
+
 #include "exceptions.h"
 
 extern void initialize_utils (void);
@@ -302,7 +304,7 @@ extern pid_t wait_to_die_with_timeout (pid_t pid, int *status, int timeout);
 #endif
 
 extern int producer_is_gcc_ge_4 (const char *producer);
-extern int producer_is_gcc (const char *producer, int *minor);
+extern bool producer_is_gcc (const char *producer, int *major, int *minor);
 
 extern int myread (int, char *, int);


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