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-28 09:09:28 -0700
commit91830952e35976d2c000e16cb971cb17b4481522 (patch)
treed6d59992253ea50581df67ec6f2d9b1cb789b7eb
parente5ecd9cf89de41c6e272d51c5e1f494439afe2b0 (diff)
downloadlibunwind-91830952e35976d2c000e16cb971cb17b4481522.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;