From: Tom Tromey Date: Fri, 1 Nov 2024 19:07:16 +0000 (-0600) Subject: Remove gdb::hash_enum X-Git-Tag: gdb-16-branchpoint~536 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8675d15227529517e0a7e78e1524ad9cc76afc14;p=thirdparty%2Fbinutils-gdb.git 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 --- diff --git a/gdb/dwarf2/aranges.c b/gdb/dwarf2/aranges.c index 0d1dc11e27a..e391ca6f933 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> + std::unordered_map 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 2a29b844845..30ef69aea30 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -79,7 +79,6 @@ #include "gdbsupport/function-view.h" #include #include "gdbsupport/underlying.h" -#include "gdbsupport/hash_enum.h" #include "filename-seen-cache.h" #include "producer.h" #include @@ -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> - offset_map_type; +typedef std::unordered_map 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 66374834a17..e311309dd5c 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, - gdb::hash_enum> + std::unordered_map> 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 9558351f93d..9a2ff92ea29 100644 --- a/gdb/stap-probe.c +++ b/gdb/stap-probe.c @@ -38,7 +38,6 @@ #include "elf-bfd.h" #include "expop.h" #include -#include "gdbsupport/hash_enum.h" #include @@ -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> stap_maker_map; +static std::unordered_map 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 5ef0e15c9ff..00000000000 --- 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 . */ - -#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 -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::type; - return std::hash () (static_cast (val)); - } -}; - -} /* namespace gdb */ - -#endif /* COMMON_HASH_ENUM_H */