diff options
author | Tom Tromey <tromey@adacore.com> | 2024-11-01 13:07:16 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2024-11-04 10:49:06 -0700 |
commit | 8675d15227529517e0a7e78e1524ad9cc76afc14 (patch) | |
tree | b85f13a53849770f951cdd79d50984e6b87b9112 | |
parent | ebc73070f4b85e4adee7d2f49cb32e2bd7b16324 (diff) | |
download | binutils-8675d15227529517e0a7e78e1524ad9cc76afc14.zip binutils-8675d15227529517e0a7e78e1524ad9cc76afc14.tar.gz binutils-8675d15227529517e0a7e78e1524ad9cc76afc14.tar.bz2 |
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>
-rw-r--r-- | gdb/dwarf2/aranges.c | 4 | ||||
-rw-r--r-- | gdb/dwarf2/read.c | 4 | ||||
-rw-r--r-- | gdb/dwarf2/read.h | 4 | ||||
-rw-r--r-- | gdb/stap-probe.c | 4 | ||||
-rw-r--r-- | gdbsupport/hash_enum.h | 45 |
5 files changed, 4 insertions, 57 deletions
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 @@ public: /* 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 */ |