return lazy;
elf_machine_runtime_setup (struct link_map *l, int lazy){  Elf32_Addr *plt;  extern void _dl_runtime_resolve (Elf32_Word);  if (l->l_info[DT_JMPREL] && lazy)    {      /* 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_addr + l->l_info[DT_PLTGOT]->d_un.d_ptr);      /* 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_SP64; /* save %sp, -64, %sp */      /* Construct PC-relative word address.  */      plt[1] = OPCODE_CALL | (((Elf32_Addr) &_dl_runtime_resolve -			       (Elf32_Addr) &plt[1]) >> 2);      plt[2] = OPCODE_NOP;	/* Fill call delay slot.  */      plt[3] = (Elf32_Addr *) l;    }  /* This code is used in dl-runtime.c to call the `fixup' function     and then redirect to the address it returns.  */#define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\# Trampoline for _dl_runtime_resolver	.globl _dl_runtime_resolve	.type _dl_runtime_resolve, @function_dl_runtime_resolve:	t 1	#call  %g0	# Pass two args to fixup: the PLT address computed from the PC saved	# in the PLT's call insn, and the reloc offset passed in %g1.	#ld [%o7 + 8], %o1      | Second arg, loaded from PLTPC[2].	#call fixup	#shrl %g1, 22, %o0      | First arg, set in delay slot of call.	# Jump to the real function.	#jmpl %o0, %g0	# In the delay slot of that jump, restore the register window	# saved by the first insn of the PLT.	#restore	.size _dl_runtime_resolve, . - _dl_runtime_resolve");/* The PLT uses Elf32_Rela relocs.  */#define elf_machine_relplt elf_machine_rela}/* Mask identifying addresses reserved for the user program,   where the dynamic linker should not map anything.  */#define ELF_MACHINE_USER_ADDRESS_MASK	???/* Initial entry point code for the dynamic linker.   The C function `_dl_start' is the real entry point;   its return value is the user program's entry point.  */#define RTLD_START __asm__ ( \".text\n\ .globl _start\n\ .type _start,@function\n\_start:\n\  /* Pass pointer to argument block to _dl_start.  */\n\  add %sp,64,%o0\n\  call _dl_start\n\   nop\n\  \n\  mov %o0,%l0\n\  \n\2:\n\   call 1f\n\   nop\n\1:\n\  sethi %hi(_GLOBAL_OFFSET_TABLE_-(2b-.)),%l2\n\  sethi %hi(_dl_default_scope),%l3\n\  or    %l2,%lo(_GLOBAL_OFFSET_TABLE_-(2b-.)),%l2\n\  or    %l3,%lo(_dl_default_scope),%l3\n\  add   %o7,%l2,%l1\n\  # %l1 has the GOT. %l3 has _dl_default_scope GOT offset\n\  ld    [%l1+%l3],%l4\n\  # %l4 has pointer to _dl_default_scope.  Now, load _dl_default_scope [2]\n\  ld    [%l4+8],%l4\n\  # %l4 has _dl_default_scope [2]\n\  # call _dl_init_next until it returns 0, pass _dl_default_scope [2]\n\3:\n\  call  _dl_init_next\n\   mov   %l4,%o0\n\  cmp   %o0,%g0\n\  bz,a  4f\n\   nop\n\  call  %o0\n\  /* Pass pointer to argument block to this init function */\n\   add %sp,64,%o0\n\  b,a   3b\n\4:\n\  # Clear the _dl_starting_up variable and pass _dl_fini in %g1 as per ELF ABI.\n\  sethi %hi(_dl_starting_up),%l4\n\  sethi %hi(_dl_fini),%l3\n\  or    %l4,%lo(_dl_starting_up),%l4\n\  or    %l3,%lo(_dl_fini),%l3\n\  # clear _dl_starting_up\n\  ld    [%l1+%l4],%l5\n\  st    %g0,[%l5]\n\  # load out fini function for atexit in %g1\n\  ld    [%l3+%l1],%g1\n\  # jump to the user program entry point.\n\  jmpl %l0,%g0\n\  nop\n\");