summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason King <jason.king@joyent.com>2020-04-04 06:31:43 +0000
committerDave Watson <dade.watson@gmail.com>2020-04-29 08:35:50 -0700
commit04cd751deae301c606b382dba9e9207bdefc7a9d (patch)
tree40fe1ad7aa653917f99baad2eaeccb7ba9be17da
parent6bba070f49138f0569f29088207322fde03e7b04 (diff)
downloadlibunwind-04cd751deae301c606b382dba9e9207bdefc7a9d.tar.gz
Treat PT_SUNW_UNWIND sections on illumos and Solaris as equivalent to PT_GNU_EH_FRAME
-rw-r--r--src/dwarf/Gfind_proc_info-lsb.c4
-rw-r--r--src/dwarf/Gfind_unwind_table.c3
2 files changed, 7 insertions, 0 deletions
diff --git a/src/dwarf/Gfind_proc_info-lsb.c b/src/dwarf/Gfind_proc_info-lsb.c
index 678c80bf..0cfb4d4f 100644
--- a/src/dwarf/Gfind_proc_info-lsb.c
+++ b/src/dwarf/Gfind_proc_info-lsb.c
@@ -572,6 +572,10 @@ dwarf_callback (struct dl_phdr_info *info, size_t size, void *ptr)
}
else if (phdr->p_type == PT_GNU_EH_FRAME)
p_eh_hdr = phdr;
+#if defined __sun
+ else if (phdr->p_type == PT_SUNW_UNWIND)
+ p_eh_hdr = phdr;
+#endif
else if (phdr->p_type == PT_DYNAMIC)
p_dynamic = phdr;
}
diff --git a/src/dwarf/Gfind_unwind_table.c b/src/dwarf/Gfind_unwind_table.c
index 6a2ad504..f5f7ad06 100644
--- a/src/dwarf/Gfind_unwind_table.c
+++ b/src/dwarf/Gfind_unwind_table.c
@@ -80,6 +80,9 @@ dwarf_find_unwind_table (struct elf_dyn_info *edi, unw_addr_space_t as,
break;
case PT_GNU_EH_FRAME:
+#if defined __sun
+ case PT_SUNW_UNWIND:
+#endif
peh_hdr = phdr + i;
break;