================
@@ -424,7 +424,13 @@ static bool checkAddrInSegment(const Elf_Phdr *phdr, 
size_t image_base,
 static bool checkForUnwindInfoSegment(const Elf_Phdr *phdr, size_t image_base,
                                       dl_iterate_cb_data *cbdata) {
 #if defined(_LIBUNWIND_SUPPORT_DWARF_INDEX)
+#if defined(PT_SUNW_EH_FRAME) && defined(PT_SUNW_UNWIND)
+  // illumos/Solaris use PT_SUNW_EH_FRAME and PT_SUNW_UNWIND instead of 
PT_GNU_EH_FRAME.
+  // FreeBSD defines PT_SUNW_UNWIND but not PT_SUNW_EH_FRAME, so check for 
both.
----------------
jmcarp wrote:

Sorry if I'm misunderstanding, but I think PT_SUNW_EH_FRAME and PT_SUNW_UNWIND 
refer to different values. From the illumos source:

```
  PT_SUNW_UNWIND and PT_SUNW_EH_FRAME perform the same function,
  providing access to the .eh_frame_hdr section of the object.
  PT_SUNW_UNWIND is the original value, while PT_SUNW_EH_FRAME is
  required by the amd64 psABI. The Solaris link-editor (ld) tags output
  objects with PT_SUNW_UNWIND, but the Solaris runtime linker (ld.so.1)
  will accept and use either value.

  #define PT_SUNW_UNWIND    0x6464e550
  #define PT_SUNW_EH_FRAME  0x6474e550
  #define PT_GNU_EH_FRAME   PT_SUNW_EH_FRAME
```

So I think we need to check both values on illumos, and the cmake change 
wouldn't be enough. I updated the patch to fix the comment. Let me know if I'm 
missing something.

https://github.com/llvm/llvm-project/pull/176988
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to