summaryrefslogtreecommitdiffstats
path: root/libdw/dwarf_haschildren.c
diff options
context:
space:
mode:
Diffstat (limited to 'libdw/dwarf_haschildren.c')
-rw-r--r--libdw/dwarf_haschildren.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/libdw/dwarf_haschildren.c b/libdw/dwarf_haschildren.c
index fe431955..fa9892f4 100644
--- a/libdw/dwarf_haschildren.c
+++ b/libdw/dwarf_haschildren.c
@@ -57,12 +57,11 @@
int
-dwarf_haschildren (die)
+__libdw_haschildren_rdlock (die)
Dwarf_Die *die;
{
/* Find the abbreviation entry. */
- Dwarf_Abbrev *abbrevp = die->abbrev;
- if (abbrevp != DWARF_END_ABBREV)
+ if (die->abbrev != DWARF_END_ABBREV)
{
const unsigned char *readp = (unsigned char *) die->addr;
@@ -71,7 +70,7 @@ dwarf_haschildren (die)
unsigned int abbrev_code;
get_uleb128 (abbrev_code, readp);
- abbrevp = __libdw_findabbrev (die->cu, abbrev_code);
+ Dwarf_Abbrev *abbrevp = __libdw_findabbrev (die->cu, abbrev_code);
die->abbrev = abbrevp ?: DWARF_END_ABBREV;
}
if (unlikely (die->abbrev == DWARF_END_ABBREV))
@@ -82,4 +81,15 @@ dwarf_haschildren (die)
return die->abbrev->has_children;
}
+
+int
+dwarf_haschildren (die)
+ Dwarf_Die *die;
+{
+ rwlock_rdlock (die->cu->dbg->lock);
+ int retval = __libdw_haschildren_rdlock (die);
+ rwlock_unlock (die->cu->dbg->lock);
+
+ return retval;
+}
INTDEF (dwarf_haschildren)