SYM_SEARCH_SELF|SYM_NOWARNNOTFOUND|SYM_PLT, SYM_NOTPLT, NULL);
SYM_SEARCH_SELF|SYM_NOWARNNOTFOUND|SYM_PLT, 0, NULL);
_dl_md_reloc_got(elf_object_t *object, int lazy){	Elf_Addr *pltresolve;	Elf_Addr *first_rela;	Elf_RelA *relas;	Elf_Addr  plt_addr;	int	numrela;	int i;	int index;	Elf32_Addr *r_addr;	Elf_Addr ooff;	const Elf_Sym *this;	if (object->Dyn.info[DT_PLTREL] != DT_RELA)		return;	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 = 0;	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 (!lazy) {		_dl_md_reloc(object, DT_JMPREL, DT_PLTRELSZ);		return;	}	first_rela = (Elf32_Addr *)	    (((Elf32_Rela *)(object->Dyn.info[DT_JMPREL]))->r_offset +	    object->load_offs);	pltresolve = (Elf32_Addr *)(first_rela) - 18;	relas = (Elf32_Rela *)(object->Dyn.info[DT_JMPREL]);	numrela = object->Dyn.info[DT_PLTRELSZ] / sizeof(Elf32_Rela);	r_addr = (Elf32_Addr *)(relas->r_offset + object->load_offs);	for (i = 0, index = 0; i < numrela; i++, r_addr+=2, index++) {		if (index > (2 << 14)) {			/* addis r11,r11,.PLTtable@ha*/			r_addr[0] = ADDIS_R11_R0 | HA(index*4);			r_addr[1] = ADDI_R11_R11 | L(index*4);			BR(r_addr[2], pltresolve);			/* only every other slot is used after 2^14 entries */			r_addr += 2;			index++;		} else {			r_addr[0] = LI_R11 | (index * 4);			BR(r_addr[1], pltresolve);		}		_dl_dcbf(&r_addr[0]);		_dl_dcbf(&r_addr[2]);	}	if (object->got_size != 0) {		_dl_mprotect((void*)object->got_start, object->got_size,		    PROT_READ|PROT_EXEC); /* only PPC is PROT_EXE */		_dl_syncicache((void*)object->got_addr, 4);	}	if (object->plt_size != 0)		_dl_mprotect((void*)object->plt_start, object->plt_size,		    PROT_READ|PROT_EXEC);}