Remove gdb::hash_enum gdb::hash_enum is a workaround for a small oversight in C++11: std::hash was not defined for enumeration types. This was rectified in C++14 and so we can remove the local workaround. Approved-By: Simon Marchi <simon.marchi@efficios.com>
diff --git a/gdb/dwarf2/aranges.c b/gdb/dwarf2/aranges.c index 0d1dc11..e391ca6 100644 --- a/gdb/dwarf2/aranges.c +++ b/gdb/dwarf2/aranges.c
@@ -38,9 +38,7 @@ read_addrmap_from_aranges (dwarf2_per_objfile *per_objfile, struct gdbarch *gdbarch = objfile->arch (); dwarf2_per_bfd *per_bfd = per_objfile->per_bfd; - std::unordered_map<sect_offset, - dwarf2_per_cu_data *, - gdb::hash_enum<sect_offset>> + std::unordered_map<sect_offset, dwarf2_per_cu_data *> debug_info_offset_to_per_cu; for (const auto &per_cu : per_bfd->all_units) {
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 2a29b84..30ef69a 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c
@@ -79,7 +79,6 @@ #include "gdbsupport/function-view.h" #include <optional> #include "gdbsupport/underlying.h" -#include "gdbsupport/hash_enum.h" #include "filename-seen-cache.h" #include "producer.h" #include <fcntl.h> @@ -11873,8 +11872,7 @@ 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, gdb::hash_enum<sect_offset>> - offset_map_type; +typedef std::unordered_map<sect_offset, int> offset_map_type; /* Compute the discriminant range for a given variant. OBSTACK is where the results will be stored. VARIANT is the variant to
diff --git a/gdb/dwarf2/read.h b/gdb/dwarf2/read.h index 6637483..e311309 100644 --- a/gdb/dwarf2/read.h +++ b/gdb/dwarf2/read.h
@@ -29,7 +29,6 @@ #include "dwarf2/section.h" #include "dwarf2/cu.h" #include "gdbsupport/gdb_obstack.h" -#include "gdbsupport/hash_enum.h" #include "gdbsupport/function-view.h" #include "gdbsupport/packed.h" @@ -555,8 +554,7 @@ struct dwarf2_per_bfd /* Mapping from abstract origin DIE to concrete DIEs that reference it as DW_AT_abstract_origin. */ - std::unordered_map<sect_offset, std::vector<sect_offset>, - gdb::hash_enum<sect_offset>> + std::unordered_map<sect_offset, std::vector<sect_offset>> abstract_to_concrete; /* Current directory, captured at the moment that object this was
diff --git a/gdb/stap-probe.c b/gdb/stap-probe.c index 9558351..9a2ff92 100644 --- a/gdb/stap-probe.c +++ b/gdb/stap-probe.c
@@ -38,7 +38,6 @@ #include "elf-bfd.h" #include "expop.h" #include <unordered_map> -#include "gdbsupport/hash_enum.h" #include <ctype.h> @@ -435,8 +434,7 @@ 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 *, - gdb::hash_enum<exp_opcode>> stap_maker_map; +static std::unordered_map<exp_opcode, binop_maker_ftype *> stap_maker_map; /* Helper function to create a binary operation. */ static expr::operation_up
diff --git a/gdbsupport/hash_enum.h b/gdbsupport/hash_enum.h deleted file mode 100644 index 5ef0e15..0000000 --- a/gdbsupport/hash_enum.h +++ /dev/null
@@ -1,45 +0,0 @@ -/* A hasher for enums. - - Copyright (C) 2017-2024 Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -#ifndef COMMON_HASH_ENUM_H -#define COMMON_HASH_ENUM_H - -/* A hasher for enums, which was missing in C++11: - http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2148 -*/ - -namespace gdb { - -/* Helper struct for hashing enum types. */ -template<typename T> -struct hash_enum -{ - typedef size_t result_type; - typedef T argument_type; - - size_t operator() (T val) const noexcept - { - using underlying = typename std::underlying_type<T>::type; - return std::hash<underlying> () (static_cast<underlying> (val)); - } -}; - -} /* namespace gdb */ - -#endif /* COMMON_HASH_ENUM_H */