gdb: use compiled_regex instead of std::regex

In GDB we should be using compiled_regex instead of std::regex.
Replace one use in producer.c.

There should be no user visible changes after this commit.

gdb/ChangeLog:

	* producer.c: Replace 'regex' include with 'gdb_regex.h'.
	(producer_is_icc): Replace use of std::regex with gdb's
	compiled_regex.
This commit is contained in:
Andrew Burgess
2021-04-15 18:30:57 +01:00
parent 229597a129
commit f5dc2ee39d
2 changed files with 15 additions and 9 deletions

View File

@ -1,3 +1,9 @@
2021-04-19 Andrew Burgess <andrew.burgess@embecosm.com>
* producer.c: Replace 'regex' include with 'gdb_regex.h'.
(producer_is_icc): Replace use of std::regex with gdb's
compiled_regex.
2021-04-17 Tom Tromey <tom@tromey.com>
PR gdb/23743:

View File

@ -20,7 +20,7 @@
#include "defs.h"
#include "producer.h"
#include "gdbsupport/selftest.h"
#include <regex>
#include "gdb_regex.h"
/* See producer.h. */
@ -91,9 +91,8 @@ producer_is_icc_ge_19 (const char *producer)
bool
producer_is_icc (const char *producer, int *major, int *minor)
{
std::regex i_re ("Intel\\(R\\)");
std::cmatch i_m;
if ((producer == nullptr) || !std::regex_search (producer, i_m, i_re))
compiled_regex i_re ("Intel(R)", 0, "producer_is_icc");
if (producer == nullptr || i_re.exec (producer, 0, nullptr, 0) != 0)
return false;
/* Prepare the used fields. */
@ -106,12 +105,13 @@ producer_is_icc (const char *producer, int *major, int *minor)
*minor = 0;
*major = 0;
std::regex re ("[0-9]+\\.[0-9]+");
std::cmatch version;
if (std::regex_search (producer, version, re))
compiled_regex re ("[0-9]+\\.[0-9]+", REG_EXTENDED, "producer_is_icc");
regmatch_t version[1];
if (re.exec (producer, ARRAY_SIZE (version), version, 0) == 0
&& version[0].rm_so != -1)
{
sscanf (version.str ().c_str (), "%d.%d", major, minor);
const char *version_str = producer + version[0].rm_so;
sscanf (version_str, "%d.%d", major, minor);
return true;
}