diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2020-04-28 09:49:58 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@efficios.com> | 2020-04-28 09:50:12 -0400 |
commit | 1b95cdb76caca1b7a9ecf9324acf23139f11f7d1 (patch) | |
tree | d1c8f27c992e1f62e45214a3c5d098bf20ac78c0 | |
parent | 56b1e56d2c2fa7611dc87192f26aac1da9fc63df (diff) | |
download | gdb-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/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/dwarf2/read.c | 3 |
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 |