On Wed, Oct 02, 2013 at 02:32:59AM +0000, Ed Maste wrote: > Author: emaste > Date: Wed Oct 2 02:32:58 2013 > New Revision: 255983 > URL: http://svnweb.freebsd.org/changeset/base/255983 > > Log: > Populate .rld_map on MIPS for debuggers > > On MIPS the .dynamic section is read-only, so the pointer to rtld > information for debuggers cannot be stored there (in DT_DEBUG). > Instead, a special section .rld_map is used. > > Sponsored by: DARPA, AFRL > Approved by: re (delphij) > > Modified: > head/libexec/rtld-elf/rtld.c > > Modified: head/libexec/rtld-elf/rtld.c > ============================================================================== > --- head/libexec/rtld-elf/rtld.c Wed Oct 2 00:50:27 2013 > (r255982) > +++ head/libexec/rtld-elf/rtld.c Wed Oct 2 02:32:58 2013 > (r255983) > @@ -1111,11 +1111,7 @@ digest_dynamic1(Obj_Entry *obj, int earl > break; > > case DT_MIPS_RLD_MAP: > -#ifdef notyet > - if (!early) > - dbg("Filling in DT_DEBUG entry"); > - ((Elf_Dyn*)dynp)->d_un.d_ptr = (Elf_Addr) &r_debug; > -#endif > + *((Elf_Addr *)(dynp->d_un.d_ptr)) = (Elf_Addr) &r_debug; > break; > #endif > Could the DT_DEBUG and DT_MIPS_RLD_MAP cases be collapsed some more, e.g. by putting only the 'case <something>:' lines under ifdef ?
Also, you removed the if (!early) test. Is rtld relocated enough in the init_rtld() for this assignment to work correctly ?
pgpUibaV2iS_J.pgp
Description: PGP signature