summaryrefslogtreecommitdiff
path: root/libdw/dwarf_haspc.c
diff options
context:
space:
mode:
Diffstat (limited to 'libdw/dwarf_haspc.c')
-rw-r--r--libdw/dwarf_haspc.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/libdw/dwarf_haspc.c b/libdw/dwarf_haspc.c
index 58b87b65..599631f2 100644
--- a/libdw/dwarf_haspc.c
+++ b/libdw/dwarf_haspc.c
@@ -56,7 +56,7 @@
int
-dwarf_haspc (Dwarf_Die *die, Dwarf_Addr pc)
+__libdw_haspc_rdlock (Dwarf_Die *die, Dwarf_Addr pc)
{
if (die == NULL)
return -1;
@@ -65,11 +65,24 @@ dwarf_haspc (Dwarf_Die *die, Dwarf_Addr pc)
Dwarf_Addr begin;
Dwarf_Addr end;
ptrdiff_t offset = 0;
- while ((offset = INTUSE(dwarf_ranges) (die, offset, &base,
- &begin, &end)) > 0)
+ while ((offset = __libdw_ranges_rdlock (die, offset, &base,
+ &begin, &end)) > 0)
if (pc >= begin && pc < end)
return 1;
return offset;
}
+
+int
+dwarf_haspc (Dwarf_Die *die, Dwarf_Addr pc)
+{
+ if (die == NULL)
+ return -1;
+
+ rwlock_rdlock (die->cu->dbg->lock);
+ int retval = __libdw_haspc_rdlock (die, pc);
+ rwlock_unlock (die->cu->dbg->lock);
+
+ return retval;
+}
INTDEF (dwarf_haspc)