if (object->got_addr != NULL && object->got_size != 0)
if (object->got_size != 0)
_dl_md_reloc_got(elf_object_t *object, int lazy){	Elf_Addr *pltgot;	extern void _dl_bind_start(void);	/* XXX */	Elf_Addr ooff;	Elf_Addr plt_addr;	const Elf_Sym *this;	pltgot = (Elf_Addr *)object->Dyn.info[DT_PLTGOT];	object->got_addr = NULL;	object->got_size = 0;	this = NULL;	ooff = _dl_find_symbol("__got_start", object, &this,	    SYM_SEARCH_SELF|SYM_NOWARNNOTFOUND|SYM_PLT, SYM_NOTPLT,	    NULL);	if (this != NULL)		object->got_addr = ooff + this->st_value;	this = NULL;	ooff = _dl_find_symbol("__got_end", object, &this,	    SYM_SEARCH_SELF|SYM_NOWARNNOTFOUND|SYM_PLT, SYM_NOTPLT,	    NULL);	if (this != NULL)		object->got_size = ooff + this->st_value  - object->got_addr;	plt_addr = NULL;	object->plt_size = 0;	this = NULL;	ooff = _dl_find_symbol("__plt_start", object, &this,	    SYM_SEARCH_SELF|SYM_NOWARNNOTFOUND|SYM_PLT, SYM_NOTPLT,	    NULL);	if (this != NULL)		plt_addr = ooff + this->st_value;	this = NULL;	ooff = _dl_find_symbol("__plt_end", object, &this,	    SYM_SEARCH_SELF|SYM_NOWARNNOTFOUND|SYM_PLT, SYM_NOTPLT,	    NULL);	if (this != NULL)		object->plt_size = ooff + this->st_value  - plt_addr;	if (object->got_addr == NULL)		object->got_start = NULL;	else {		object->got_start = ELF_TRUNC(object->got_addr, _dl_pagesz);		object->got_size += object->got_addr - object->got_start;		object->got_size = ELF_ROUND(object->got_size, _dl_pagesz);	}	if (plt_addr == NULL)		object->plt_start = NULL;	else {		object->plt_start = ELF_TRUNC(plt_addr, _dl_pagesz);		object->plt_size += plt_addr - object->plt_start;		object->plt_size = ELF_ROUND(object->plt_size, _dl_pagesz);	}	 	if (object->obj_type == OBJTYPE_LDR || !lazy || pltgot == NULL) {		_dl_md_reloc(object, DT_JMPREL, DT_PLTRELSZ);		return;	}	if (object->obj_type != OBJTYPE_EXE) {		int i, size;		Elf_Addr *addr;		Elf_RelA *rela;		size = object->Dyn.info[DT_PLTRELSZ] / sizeof(Elf_RelA);		rela = (Elf_RelA *)(object->Dyn.info[DT_JMPREL]);		for (i = 0; i < size; i++) {			addr = (Elf_Addr *)(object->load_offs + rela[i].r_offset);			*addr += object->load_offs;		}	}	pltgot[2] = (Elf_Addr)_dl_bind_start;	pltgot[3] = (Elf_Addr)object;	if (object->got_addr != NULL && object->got_size != 0)		_dl_mprotect((void*)object->got_addr, object->got_size,		    PROT_READ|PROT_EXEC);	if (object->got_size != 0)		_dl_mprotect((void*)object->plt_start, object->plt_size,		    PROT_READ|PROT_EXEC);}