aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2021-04-24 00:10:44 -0400
committerMike Frysinger <vapier@gentoo.org>2021-04-24 00:17:35 -0400
commit837b53fd088d13dda77b1d9db73800163692c2e3 (patch)
tree545d201075d262c1e6692b917fe8ed05e19b49a9
parent9d90335212595f76b0f29698dfb2468c7318c171 (diff)
downloadgdb-837b53fd088d13dda77b1d9db73800163692c2e3.zip
gdb-837b53fd088d13dda77b1d9db73800163692c2e3.tar.gz
gdb-837b53fd088d13dda77b1d9db73800163692c2e3.tar.bz2
sim: options: increase max option count
As we turn on more modules by default for all ports, the number of options has been increasing. The sim-options module has a limit on the number of options it can support, and if it's exceeded, it likes to go into an infinite loop. Increase the ceiling and add an assert so we abort right away instead of hanging. This will be needed to turn on hw support for v850 as it will then exceed the current limit.
-rw-r--r--sim/common/ChangeLog5
-rw-r--r--sim/common/sim-options.c5
2 files changed, 9 insertions, 1 deletions
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index 61149e2..ed4d9f7 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,3 +1,8 @@
+2021-04-24 Mike Frysinger <vapier@gentoo.org>
+
+ * sim-options.c (ARG_HASH_SIZE): Increase to 256.
+ (sim_parse_args): Call SIM_ASSERT.
+
2021-04-22 Tom Tromey <tom@tromey.com>
* sim-utils.c: Update includes.
diff --git a/sim/common/sim-options.c b/sim/common/sim-options.c
index d4434cf..ab95984 100644
--- a/sim/common/sim-options.c
+++ b/sim/common/sim-options.c
@@ -416,7 +416,7 @@ standard_install (SIM_DESC sd)
/* Return non-zero if arg is a duplicate argument.
If ARG is NULL, initialize. */
-#define ARG_HASH_SIZE 97
+#define ARG_HASH_SIZE 256
#define ARG_HASH(a) ((256 * (unsigned char) a[0] + (unsigned char) a[1]) % ARG_HASH_SIZE)
static int
@@ -478,6 +478,9 @@ sim_parse_args (SIM_DESC sd, char * const *argv)
for (opt = ol->options; OPTION_VALID_P (opt); ++opt)
++num_opts;
+ /* We build a hash table of all options, so make sure they all fit. */
+ SIM_ASSERT (num_opts <= ARG_HASH_SIZE);
+
/* Initialize duplicate argument checker. */
(void) dup_arg_p (NULL);