(bfd_byte *) x_dynp->d_un.d_ptr);
return dyn_ptr;
}
- else if (dyn_tag == DT_MIPS_RLD_MAP)
+ else if (dyn_tag == DT_MIPS_RLD_MAP ||
+ dyn_tag == DT_MIPS_RLD_MAP_REL)
{
char *pbuf;
int pbuf_size = TARGET_PTR_BIT / HOST_CHAR_BIT;
of the dynamic link structure. */
dyn_ptr = bfd_h_get_64 (exec_bfd,
(bfd_byte *) x_dynp->d_un.d_ptr);
+ if (dyn_tag == DT_MIPS_RLD_MAP_REL)
+ dyn_ptr += (entry_addr - bfd_get_start_address(exec_bfd));
if (target_read_memory (dyn_ptr, pbuf, pbuf_size))
return 0;
return extract_unsigned_integer (pbuf, pbuf_size);
/* Address of auxiliary .dynamic. */
#define DT_MIPS_AUX_DYNAMIC 0x70000031
+
+/* Relative address of run time loader map, used for debugging. */
+#define DT_MIPS_RLD_MAP_REL 0x70000035
\f
/* Flags which may appear in a DT_MIPS_FLAGS entry. */