binutils-gdb/gdbsupport
Simon Marchi 8f942ca8a5 gdbsupport: add unordered_dense.h 4.4.0
Add a copy of unordered_dense.h from [1].  This file implements an
efficient hash map and hash set with a nice C++ interface (a near
drop-in for std::unordered_map and std::unordered_set).  This is
expected to be used to replace uses of `htab_t`, for improved code
readability and type safety.  Performance-wise, it is preferred to the
std types (std::unordered_map and std::unordered_set) due to it using
open addressing vs closed addressing for the std types.

I chose this particular implementation because it is simple to use, it's
a standalone header and it typically performs well in benchmarks I have
seen (e.g. [2]).  The license being MIT, my understanding is that it's
not a problem to use it and re-distribute it.

Add two additional files, gdbsupport/unordered_map.h and
gdbsupport/unordered_set.h, which make the map and set offered by
gdbsupport/unordered_dense.h available as gdb::unordered_map and
gdb::unordered_set.

[1] https://github.com/martinus/unordered_dense
[2] https://jacksonallan.github.io/c_cpp_hash_tables_benchmark/#conclusion-which-hash-table-to-choose

Change-Id: I0c7469ccf9a14540465479e58b2a5140a2440a7d
Approved-By: Tom Tromey <tom@tromey.com>
2024-11-25 22:07:03 -05:00
..
.dir-locals.el Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
.gitattributes
acinclude.m4 gdb: move libiberty.m4 to gdbsupport 2024-01-10 19:52:52 -05:00
aclocal.m4 [gdbsupport] Rerun autoreconf -f 2024-11-23 12:40:36 +01:00
agent.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
agent.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
alt-stack.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
array-view.h [gdbsupport] Add gdb::array_view::{iterator,const_iterator} 2024-10-19 08:10:38 +02:00
ax.def Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
block-signals.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
break-common.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
btrace-common.cc [gdb] Fix some typos 2024-11-18 09:46:31 +01:00
btrace-common.h btrace: Enable event tracing on Linux for Intel PT. 2024-09-24 14:22:28 +02:00
buildargv.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
byte-vector.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
ChangeLog-2020-2021
check-defines.el gdbsupport: assume that compiler supports std::{is_trivially_constructible,is_trivially_copyable} 2024-02-21 13:30:19 -05:00
cleanups.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
cleanups.h Rewrite final cleanups 2024-02-27 10:30:29 -07:00
common-debug.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
common-debug.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
common-defs.h [gdb/build] Use -fno-hoist-adjacent-loads for gcc <= 13 2024-10-18 00:18:24 +02:00
common-exceptions.cc gdb, gdbserver, gdbsupport: use [[noreturn]] instead of ATTRIBUTE_NORETURN 2024-07-16 18:30:45 -04:00
common-exceptions.h gdb, gdbserver, gdbsupport: use [[noreturn]] instead of ATTRIBUTE_NORETURN 2024-07-16 18:30:45 -04:00
common-gdbthread.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
common-inferior.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
common-inferior.h gdb: remove get_exec_file 2024-06-07 23:09:03 -04:00
common-regcache.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
common-regcache.h [gdb/tdep] Use raw_supply_part_zeroed for AArch64 2024-11-12 11:37:50 +01:00
common-types.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
common-utils.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
common-utils.h gdb: add another overload of startswith 2024-09-07 21:48:34 +01:00
common.m4 btrace, python: Enable ptwrite filter registration. 2024-08-14 11:20:57 +02:00
compiler-type.m4 Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
config.in btrace, python: Enable ptwrite filter registration. 2024-08-14 11:20:57 +02:00
configure [gdbsupport] Rerun autoreconf -f 2024-11-23 12:40:36 +01:00
configure.ac autoupdate: add square brackets around arguments of AC_INIT 2024-06-10 08:25:56 +09:30
create-version.sh Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
def-vector.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
default-init-alloc.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
eintr.h [gdb] Handle EINTR in ser-event.c 2024-11-22 17:44:29 +01:00
enum-flags.h gdb, gdbsupport: use using in enum flags code 2024-08-12 10:58:49 -04:00
environ.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
environ.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
errors.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
errors.h gdb, gdbserver, gdbsupport: use [[noreturn]] instead of ATTRIBUTE_NORETURN 2024-07-16 18:30:45 -04:00
event-loop.cc Use std::vector in event-loop.cc 2024-04-21 19:54:27 -06:00
event-loop.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
event-pipe.cc [gdbsupport] Handle EINTR in event-pipe.cc 2024-11-22 17:44:29 +01:00
event-pipe.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
fileio.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
fileio.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
filestuff.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
filestuff.h Introduce read_remainder_of_file 2024-02-27 09:46:31 -07:00
filtered-iterator.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
format.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
format.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
forward-scope-exit.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
function-view.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb_assert.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb_binary_search.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb_file.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb_locale.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb_obstack.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
gdb_obstack.h Require trivial destructor in allocate_on_obstack 2024-03-21 12:21:24 -06:00
gdb_proc_service.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb_ref_ptr.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb_regex.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
gdb_regex.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb_select.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb_setjmp.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb_signals.h [gdb] Fix common misspellings 2024-10-06 07:59:48 +02:00
gdb_splay_tree.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb_sys_time.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb_tilde_expand.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
gdb_tilde_expand.h gdb: add overloads of gdb_tilde_expand 2024-06-27 15:15:26 +01:00
gdb_unique_ptr.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb_unlinker.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb_vecs.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
gdb_vecs.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb_wait.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
gdb_wait.h [gdb/build] Fix build on postmarketos 2024-03-14 21:28:44 +01:00
gdb-checked-static-cast.h gdbsupport: rename include guard in gdb-checked-static-cast.h 2024-03-19 14:41:51 +00:00
gdb-dlfcn.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
gdb-dlfcn.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb-hashtab.h Remove hashtab_obstack_allocate 2024-06-24 09:11:30 -06:00
gdb-safe-ctype.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb-sigmask.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
gdb-xfree.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
host-defs.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
intrusive_list.h gdbsupport/intrusive-list: add owning_intrusive_list 2024-09-13 07:38:56 -04:00
iterator-range.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
job-control.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
job-control.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
libiberty.m4 Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
Makefile.am gdb: split osabi support between gdb/ and gdbsupport/ directories 2024-10-10 17:36:21 +01:00
Makefile.in gdb: split osabi support between gdb/ and gdbsupport/ directories 2024-10-10 17:36:21 +01:00
netstuff.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
netstuff.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
new-op.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
next-iterator.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
observable.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
offset-type.h [gdb] Fix common misspellings 2024-10-06 07:59:48 +02:00
osabi.cc gdb: split osabi support between gdb/ and gdbsupport/ directories 2024-10-10 17:36:21 +01:00
osabi.def gdb: split osabi support between gdb/ and gdbsupport/ directories 2024-10-10 17:36:21 +01:00
osabi.h gdb: split osabi support between gdb/ and gdbsupport/ directories 2024-10-10 17:36:21 +01:00
owning_intrusive_list.h gdbsupport/intrusive-list: add owning_intrusive_list 2024-09-13 07:38:56 -04:00
packed.h gdbsupport: assume that compiler supports std::{is_trivially_constructible,is_trivially_copyable} 2024-02-21 13:30:19 -05:00
parallel-for.h [gdb/contrib] Add two rules in common-misspellings.txt 2024-11-23 12:20:34 +01:00
pathstuff.cc Pass current directory to gdb_abspath 2024-10-19 13:18:00 -06:00
pathstuff.h Pass current directory to gdb_abspath 2024-10-19 13:18:00 -06:00
poison.h gdbsupport: assume that compiler supports std::{is_trivially_constructible,is_trivially_copyable} 2024-02-21 13:30:19 -05:00
preprocessor.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
print-utils.cc gdbsupport: constify some return values in print-utils.{h,cc} 2024-04-18 10:31:54 -04:00
print-utils.h gdbsupport: constify some return values in print-utils.{h,cc} 2024-04-18 10:31:54 -04:00
ptid.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
ptid.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
ptrace.m4 Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
range-chain.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
README
refcounted-object.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
reference-to-pointer-iterator.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
rsp-low.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
rsp-low.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
run-time-clock.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
run-time-clock.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
safe-iterator.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
safe-strerror.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
scope-exit.h [gdb] Make scope_exit constructor throw 2024-09-24 13:47:56 +02:00
scoped_fd.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
scoped_ignore_signal.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
scoped_ignore_sigttou.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
scoped_mmap.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
scoped_mmap.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
scoped_restore.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
scoped_signal_handler.h gdb: Introduce RAII signal handler setter 2024-11-22 17:38:31 -03:00
search.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
search.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
selftest.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
selftest.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
selftest.m4 Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
signals-state-save-restore.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
signals-state-save-restore.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
signals.cc gdbsupport: remove #ifndef REALTIME_LO in signals.cc 2024-08-12 10:21:15 -04:00
symbol.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
task-group.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
task-group.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
tdesc.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
tdesc.h gdb/gdbserver: change shared set_tdesc_osabi to take gdb_osabi 2024-10-10 17:36:21 +01:00
thread-pool.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
thread-pool.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
traits.h gdb: move RequireLongest to gdbsupport/traits.h 2024-04-22 21:34:19 -04:00
underlying.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
unordered_dense.h gdbsupport: add unordered_dense.h 4.4.0 2024-11-25 22:07:03 -05:00
unordered_map.h gdbsupport: add unordered_dense.h 4.4.0 2024-11-25 22:07:03 -05:00
unordered_set.h gdbsupport: add unordered_dense.h 4.4.0 2024-11-25 22:07:03 -05:00
valid-expr.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
version.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
warning.m4 gdb, gdbserver, gdbsupport: remove -Wno-vla-cxx-extension 2024-08-02 16:54:52 -04:00
x86-xstate.h gdb, gdbserver, python, testsuite: Remove MPX. 2024-09-25 11:06:57 +00:00
xml-utils.cc gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
xml-utils.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00

This is a helper library that is used by gdb and gdbserver.

To send patches, follow the gdb patch submission instructions in
../gdb/CONTRIBUTE.  For maintainers, see ../gdb/MAINTAINERS.