summaryrefslogtreecommitdiff
path: root/libdw/dwarf_getscopes_die.c
diff options
context:
space:
mode:
Diffstat (limited to 'libdw/dwarf_getscopes_die.c')
-rw-r--r--libdw/dwarf_getscopes_die.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libdw/dwarf_getscopes_die.c b/libdw/dwarf_getscopes_die.c
index 07fb9b00..3262670e 100644
--- a/libdw/dwarf_getscopes_die.c
+++ b/libdw/dwarf_getscopes_die.c
@@ -86,10 +86,13 @@ dwarf_getscopes_die (Dwarf_Die *die, Dwarf_Die **scopes)
if (die == NULL)
return -1;
+ rwlock_rdlock (die->cu->dbg->lock);
struct Dwarf_Die_Chain cu = { .die = CUDIE (die->cu), .parent = NULL };
void *info = die->addr;
int result = __libdw_visit_scopes (1, &cu, &scope_visitor, NULL, &info);
if (result > 0)
*scopes = info;
+ rwlock_unlock (die->cu->dbg->lock);
+
return result;
}