aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2021-03-15 08:59:17 -0600
committerTom Tromey <tromey@adacore.com>2021-03-15 11:30:51 -0600
commit675da9a57e0ab1c384e0dfd20ddf715a83c18673 (patch)
tree6de259cf85f6c945919c93b079a5b04a6675f631
parent4800761a71cf4eb1024ab586385be4832d62aabb (diff)
downloadgdb-675da9a57e0ab1c384e0dfd20ddf715a83c18673.zip
gdb-675da9a57e0ab1c384e0dfd20ddf715a83c18673.tar.gz
gdb-675da9a57e0ab1c384e0dfd20ddf715a83c18673.tar.bz2
Fix GDB build with GCC 4.8.2
PR build/27579 points out that the expression rewrite series introduced a build failure with GCC 4.8.2. The bug is that there's no std::hash specialization for enum exp_opcode. This patch fixes the problem by using gdb::hash_enum. 2021-03-15 Tom Tromey <tromey@adacore.com> PR build/27579: * rust-exp.y (maker_map): Use gdb::hash_enum. * stap-probe.c (stap_maker_map): Use gdb::hash_enum.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/rust-exp.y4
-rw-r--r--gdb/stap-probe.c4
3 files changed, 12 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 2315d5b..0ac6b29 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2021-03-15 Tom Tromey <tromey@adacore.com>
+
+ PR build/27579:
+ * rust-exp.y (maker_map): Use gdb::hash_enum.
+ * stap-probe.c (stap_maker_map): Use gdb::hash_enum.
+
2021-03-15 Simon Marchi <simon.marchi@polymtl.ca>
* dwarf2/read.c (create_debug_type_hash_table): Remove colon at
diff --git a/gdb/rust-exp.y b/gdb/rust-exp.y
index 9a5bdd7..0400340 100644
--- a/gdb/rust-exp.y
+++ b/gdb/rust-exp.y
@@ -43,6 +43,7 @@
#include "gdbarch.h"
#include "rust-exp.h"
#include <unordered_map>
+#include "gdbsupport/hash_enum.h"
#define GDB_YY_REMAP_PREFIX rust
#include "yy-remap.h"
@@ -2202,7 +2203,8 @@ typedef expr::operation_up binop_maker_ftype (expr::operation_up &&,
/* Map from an expression opcode to a function that will create an
instance of the appropriate operation subclass. Only binary
operations are handled this way. */
-static std::unordered_map<exp_opcode, binop_maker_ftype *> maker_map;
+static std::unordered_map<exp_opcode, binop_maker_ftype *,
+ gdb::hash_enum<exp_opcode>> maker_map;
/* Lower a rust_op to a gdb expression. STATE is the parser state.
OPERATION is the operation to lower. TOP is a pointer to the
diff --git a/gdb/stap-probe.c b/gdb/stap-probe.c
index 5995c28..7f6d98a 100644
--- a/gdb/stap-probe.c
+++ b/gdb/stap-probe.c
@@ -38,6 +38,7 @@
#include "elf-bfd.h"
#include "expop.h"
#include <unordered_map>
+#include "gdbsupport/hash_enum.h"
#include <ctype.h>
@@ -436,7 +437,8 @@ typedef expr::operation_up binop_maker_ftype (expr::operation_up &&,
expr::operation_up &&);
/* Map from an expression opcode to a function that can create a
binary operation of that type. */
-static std::unordered_map<exp_opcode, binop_maker_ftype *> stap_maker_map;
+static std::unordered_map<exp_opcode, binop_maker_ftype *,
+ gdb::hash_enum<exp_opcode>> stap_maker_map;
/* Helper function to create a binary operation. */
static expr::operation_up