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.
This commit is contained in:
Mark Wielaard 2015-02-04 18:14:33 +01:00
parent 01b088bc51
commit b1ffba5a7f
4 changed files with 29 additions and 10 deletions

View file

@ -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;
}