return lazy;
elf_machine_runtime_setup (struct link_map *map, int lazy){  if (map->l_info[DT_JMPREL])    {      int i;      /* Fill in the PLT. Its initial contents are directed to a	 function earlier in the PLT which arranges for the dynamic	 linker to be called back.  */      Elf32_Word *plt = (Elf32_Word *) ((char *) map->l_addr					+ map->l_info[DT_PLTGOT]->d_un.d_val);      Elf32_Word num_plt_entries = (map->l_info[DT_PLTRELSZ]->d_un.d_val				    / sizeof (Elf32_Rela));      Elf32_Word rel_offset_words = PLT_DATA_START_WORDS (num_plt_entries);      extern void _dl_runtime_resolve (void);      Elf32_Word size_modified;      if (lazy)	for (i = 0; i < num_plt_entries; i++)	{	  Elf32_Word offset = PLT_ENTRY_START_WORDS (i);	  if (i >= PLT_DOUBLE_SIZE)	    {	      plt[offset  ] = OPCODE_LI (11, i * 4);	      plt[offset+1] = OPCODE_ADDIS (11, 11, (i * 4 + 0x8000) >> 16);	      plt[offset+2] = OPCODE_B (-(4 * (offset + 2)));	    }	  else	    {	      plt[offset  ] = OPCODE_LI (11, i * 4);	      plt[offset+1] = OPCODE_B (-(4 * (offset + 1)));	    }	}      /* Multiply index of entry by 3 (in r11).  */      plt[0] = OPCODE_SLWI (12, 11, 1);      plt[1] = OPCODE_ADD (11, 12, 11);      if ((Elf32_Word) (char *) _dl_runtime_resolve <= 0x01fffffc ||	  (Elf32_Word) (char *) _dl_runtime_resolve >= 0xfe000000)	{	  /* Load address of link map in r12.  */	  plt[2] = OPCODE_LI (12, (Elf32_Word) (char *) map);	  plt[3] = OPCODE_ADDIS (12, 12, (((Elf32_Word) (char *) map					   + 0x8000) >> 16));	  /* Call _dl_runtime_resolve.  */	  plt[4] = OPCODE_BA ((Elf32_Word) (char *) _dl_runtime_resolve);	}      else	{	  /* Get address of _dl_runtime_resolve in CTR.  */	  plt[2] = OPCODE_LI (12, (Elf32_Word) (char *) _dl_runtime_resolve);	  plt[3] = OPCODE_ADDIS (12, 12, ((((Elf32_Word) (char *)					    _dl_runtime_resolve)					   + 0x8000) >> 16));	  plt[4] = OPCODE_MTCTR (12);	  /* Load address of link map in r12.  */	  plt[5] = OPCODE_LI (12, (Elf32_Word) (char *) map);	  plt[6] = OPCODE_ADDIS (12, 12, (((Elf32_Word) (char *) map					   + 0x8000) >> 16));	  /* Call _dl_runtime_resolve.  */	  plt[7] = OPCODE_BCTR ();	}      /* Convert the index in r11 into an actual address, and get the	 word at that address.  */      plt[PLT_LONGBRANCH_ENTRY_WORDS] =	OPCODE_ADDIS (11, 11, (((Elf32_Word) (char*) (plt + rel_offset_words)				+ 0x8000) >> 16));      plt[PLT_LONGBRANCH_ENTRY_WORDS+1] =	OPCODE_LWZ (11, (Elf32_Word) (char*) (plt+rel_offset_words), 11);      /* Call the procedure at that address.  */      plt[PLT_LONGBRANCH_ENTRY_WORDS+2] = OPCODE_MTCTR (11);      plt[PLT_LONGBRANCH_ENTRY_WORDS+3] = OPCODE_BCTR ();      /* Now, we've modified code (quite a lot of code, possibly).  We	 need to write the changes from the data cache to a	 second-level unified cache, then make sure that stale data in	 the instruction cache is removed.  (In a multiprocessor	 system, the effect is more complex.)	 Assumes the cache line size is at least 32 bytes, or at least	 that dcbst and icbi apply to 32-byte lines. At present, all	 PowerPC processors have line sizes of exactly 32 bytes.  */      size_modified = lazy ? rel_offset_words : PLT_INITIAL_ENTRY_WORDS;      for (i = 0; i < size_modified; i+=8)	PPC_DCBST (plt + i);      PPC_SYNC;      for (i = 0; i < size_modified; i+=8)	PPC_ICBI (plt + i);      PPC_ISYNC;    }}