In dl_iterate_phdr phdr is the only capability passed to the callback
that may be used to derive pointers of the elf module, so ensure it
has wide bounds.
info.dlpi_addr = l->l_real->l_addr;
#endif
info.dlpi_name = l->l_real->l_name;
+#ifdef __CHERI_PURE_CAPABILITY__
+ ElfW(Addr) phdr = (ElfW(Addr)) l->l_real->l_phdr - l->l_real->l_addr;
+ info.dlpi_phdr = (const void *) dl_rx_ptr (l->l_real, phdr);
+#else
info.dlpi_phdr = l->l_real->l_phdr;
+#endif
info.dlpi_phnum = l->l_real->l_phnum;
info.dlpi_adds = GL(dl_load_adds);
info.dlpi_subs = GL(dl_load_adds) - nloaded;