aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@efficios.com>2020-04-28 09:49:58 -0400
committerSimon Marchi <simon.marchi@efficios.com>2020-04-28 09:50:12 -0400
commit1b95cdb76caca1b7a9ecf9324acf23139f11f7d1 (patch)
treed1c8f27c992e1f62e45214a3c5d098bf20ac78c0
parent56b1e56d2c2fa7611dc87192f26aac1da9fc63df (diff)
downloadgdb-1b95cdb76caca1b7a9ecf9324acf23139f11f7d1.zip
gdb-1b95cdb76caca1b7a9ecf9324acf23139f11f7d1.tar.gz
gdb-1b95cdb76caca1b7a9ecf9324acf23139f11f7d1.tar.bz2
gdb: use gdb:hash_enum as hash function in offset_map_type
When building with g++ 4.8, we get this error (just an excerpt, because g++ outputs a very long error message): CXX dwarf2/read.o ... /home/smarchi/src/binutils-gdb/gdb/dwarf2/read.c:14616:31: required from here /usr/include/c++/4.8/bits/hashtable_policy.h:1070:12: error: invalid use of incomplete type ‘struct std::hash<sect_offset>’ struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, This is the same problem and fix as in commit f23f598e28ad ("[gdb] Fix build breaker with gcc 4.8"). Pass an explicit hash function rather than relying on the default std::hash<sect_offset>. gdb/ChangeLog: PR gdb/25881 * dwarf2/read.c (offset_map_type): Use gdb:hash_enum<sect_offset> as hash function.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/dwarf2/read.c3
2 files changed, 8 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 76f6cf7..f7931c2 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2020-04-28 Simon Marchi <simon.marchi@efficios.com>
+
+ PR gdb/25881
+ * dwarf2/read.c (offset_map_type): Use
+ gdb:hash_enum<sect_offset> as hash function.
+
2020-04-28 Tom de Vries <tdevries@suse.de>
* dwarf2/read.c (process_structure_scope): Add symbol for struct decl
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index 82564ed..c552888 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -14513,7 +14513,8 @@ dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
/* A convenience typedef that's used when finding the discriminant
field for a variant part. */
-typedef std::unordered_map<sect_offset, int> offset_map_type;
+typedef std::unordered_map<sect_offset, int, gdb::hash_enum<sect_offset>>
+ offset_map_type;
/* Compute the discriminant range for a given variant. OBSTACK is
where the results will be stored. VARIANT is the variant to