[PATCH] libdw: add thread-safety to dwarf_getabbrev()

Jonathon Anderson jma14@rice.edu
Mon Aug 26 01:25:00 GMT 2019


Hello Mark,

Next iteration of the patch(es) are ready, hosted on Github (git 
request-pull output below). I think most of the issues we've discussed 
have been addressed; the setup with stdatomic.h is a little WIP, I 
wasn't certain how it should be done moving forward (and, I'm not all 
that familiar with Autotools). The one extra line in dwarf_getcfi.c is 
to account for a failure in the test suite when Valgrind is enabled 
(didn't catch it the first time around).

I like the idea of "owner" threads (and I think it should be simple 
enough to implement), but I'd like to do some performance comparisons 
against the pthread_key_* option before adding too much more complexity.

-Jonathon

The following changes since commit 
37fa94df1554aca83ec10ce50bc9bcb6957b204e:

  config/elfutils.spec.in: package eu-elfclassify (2019-08-15 09:17:41 
+0200)

are available in the Git repository at:

  https://github.com/blue42u/elfutils.git

for you to fetch changes up to 9e40e0b8bb329692b1140e99896164bcb7f791b8:

  lib + libdw: Add and use a concurrent version of the dynamic-size 
hash table. (2019-08-25 18:36:38 -0500)

----------------------------------------------------------------
Jonathon Anderson (3):
      Add configure options for Valgrind annotations.
      Add some supporting framework for C11-style atomics.
      libdw: Rewrite the memory handler to be thread-safe.

Srđan Milaković (1):
      lib + libdw: Add and use a concurrent version of the dynamic-size 
hash table.

 ChangeLog                        |   5 +
 configure.ac                     |  42 ++++
 lib/ChangeLog                    |  11 +
 lib/Makefile.am                  |   5 +-
 lib/atomics.h                    |  37 +++
 lib/dynamicsizehash_concurrent.c | 522 
+++++++++++++++++++++++++++++++++++++++
 lib/dynamicsizehash_concurrent.h | 118 +++++++++
 lib/stdatomic-fbsd.h             | 442 
+++++++++++++++++++++++++++++++++
 libdw/ChangeLog                  |  12 +
 libdw/Makefile.am                |   4 +-
 libdw/dwarf_abbrev_hash.c        |   2 +-
 libdw/dwarf_abbrev_hash.h        |   2 +-
 libdw/dwarf_begin_elf.c          |  13 +-
 libdw/dwarf_end.c                |  22 +-
 libdw/dwarf_getcfi.c             |   1 +
 libdw/libdwP.h                   |  19 +-
 libdw/libdw_alloc.c              |  70 +++++-
 17 files changed, 1300 insertions(+), 27 deletions(-)
 create mode 100644 lib/atomics.h
 create mode 100644 lib/dynamicsizehash_concurrent.c
 create mode 100644 lib/dynamicsizehash_concurrent.h
 create mode 100644 lib/stdatomic-fbsd.h



More information about the Elfutils-devel mailing list