plt = (Elf32_Addr *) l->l_info[DT_PLTGOT]->d_un.d_ptr;
plt = (Elf32_Addr *) D_PTR (l, l_info[DT_PLTGOT]);
elf_machine_runtime_setup (struct link_map *l, int lazy, int profile){  Elf32_Addr *plt;  extern void _dl_runtime_resolve (Elf32_Word);  extern void _dl_runtime_profile (Elf32_Word);  if (l->l_info[DT_JMPREL] && lazy)    {      Elf32_Addr rfunc;      /* The entries for functions in the PLT have not yet been filled in.	 Their initial contents will arrange when called to set the high 22	 bits of %g1 with an offset into the .rela.plt section and jump to	 the beginning of the PLT.  */      plt = (Elf32_Addr *) l->l_info[DT_PLTGOT]->d_un.d_ptr;      if (! profile)	rfunc = (Elf32_Addr) &_dl_runtime_resolve;      else	{	  rfunc = (Elf32_Addr) &_dl_runtime_profile;	  if (_dl_name_match_p (_dl_profile, l))	    _dl_profile_map = l;	}      /* The beginning of the PLT does:	 	save %sp, -64, %sp	 pltpc:	call _dl_runtime_resolve		nop		.word MAP         This saves the register window containing the arguments, and the	 PC value (pltpc) implicitly saved in %o7 by the call points near the	 location where we store the link_map pointer for this object.  */      plt[0] = OPCODE_SAVE_SP;      /* Construct PC-relative word address.  */      plt[1] = OPCODE_CALL | ((rfunc - (Elf32_Addr) &plt[1]) >> 2);      plt[2] = OPCODE_NOP;	/* Fill call delay slot.  */      plt[3] = (Elf32_Addr) l;    }  return lazy;}