aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2015-02-04 18:14:33 +0100
committerMark Wielaard <mjw@redhat.com>2015-02-10 21:20:38 +0100
commitb1ffba5a7fe1eb1fb97f3e81dd5cc78b59eb1fea (patch)
tree8e4b94d03e580b3dca27cc1408540eab86e7ed4f /gdb
parent01b088bc51fe37e07905d36547f4ea43904837c0 (diff)
downloadbinutils-b1ffba5a7fe1eb1fb97f3e81dd5cc78b59eb1fea.zip
binutils-b1ffba5a7fe1eb1fb97f3e81dd5cc78b59eb1fea.tar.gz
binutils-b1ffba5a7fe1eb1fb97f3e81dd5cc78b59eb1fea.tar.bz2
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.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/dwarf2read.c2
-rw-r--r--gdb/utils.c25
-rw-r--r--gdb/utils.h4
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);