Home | History | Annotate | Download | only in linker

Lines Matching defs:base

177     map->l_addr = info->base;
324 if((addr >= si->base) && (addr < (si->base + si->size))) {
333 * Returns the base address of the .ARM.exidx section
348 if ((addr >= si->base) && (addr < (si->base + si->size))) {
350 return (_Unwind_Ptr)(si->base + (unsigned long)si->ARM_exidx);
388 name, si->name, si->base, hash, hash % si->nbucket);
426 _do_lookup(soinfo *si, const char *name, unsigned *base)
489 "found in %s, base = 0x%08x\n",
490 pid, si->name, name, s->st_value, lsi->name, lsi->base);
491 *base = lsi->base;
531 "si->base = 0x%08x\n", pid, name, s->st_value, si->base);
544 if((unsigned)addr >= si->base && (unsigned)addr - si->base < si->size) {
555 unsigned soaddr = (unsigned)addr - si->base;
652 /* Returns the requested base address if the library is prelinked,
680 * Verifies if the object @ base is a valid ELF object
686 * -1 if no valid ELF object is found @ base.
689 verify_elf_object(void *base, const char *name)
691 Elf32_Ehdr *hdr = (Elf32_Ehdr *) base;
709 * Retrieves the base (*base) address where the ELF object should be
724 * 0 if the library did not request a specific base offset (normal
750 TRACE("[ %5d - Prelinked library '%s' requesting base @ 0x%08x ]\n",
792 * si->base: The requested base of the allocation.
796 * -1 on failure, and 0 on success. On success, si->base will contain
802 void *base = mmap((void *)si->base, si->size, PROT_NONE,
804 if (base == MAP_FAILED) {
807 pid, (si->base ? "" : "non-"), si->name, si->base,
810 } else if (base != (void *)si->base) {
812 "not at 0x%08x", pid, (si->base ? "" : "non-"),
813 si->name, (unsigned)base, si->base);
814 munmap(base, si->size);
822 if (si->base) {
831 void *base = mmap(NULL, si->size, PROT_NONE,
833 if (base == MAP_FAILED) {
839 si->base = (unsigned) base;
841 pid, si->name, si->base);
857 * at their appropriate memory offsets off the base address.
873 Elf32_Addr base = (Elf32_Addr) si->base;
886 pid, si->name, (unsigned)si->base);
893 tmp = base + (phdr->p_vaddr & (~PAGE_MASK));
918 * base _+---------------------+ page boundary
925 * base + p_vaddr _| |
944 if (tmp < (base + phdr->p_vaddr + phdr->p_memsz)) {
945 extra_len = base + phdr->p_vaddr + phdr->p_memsz - tmp;
974 len = (((unsigned)base + phdr->p_vaddr + phdr->p_memsz +
996 si->dynamic = (unsigned *)(base + phdr->p_vaddr);
1000 || ((base + phdr->p_vaddr + phdr->p_memsz) < base)) {
1006 si->gnu_relro_start = (Elf32_Addr) (base + phdr->p_vaddr);
1032 (unsigned)si->base, si->size);
1041 munmap((void *)si->base, si->size);
1114 TRACE("[ %5d - '%s' (%s) wants base=0x%08x sz=0x%08x ]\n", pid, name,
1129 si->base = req_base;
1138 pid, name, (void *)si->base, (unsigned) ext_sz);
1147 hdr = (Elf32_Ehdr *)si->base;
1148 si->phdr = (Elf32_Phdr *)((unsigned char *)si->base + hdr->e_phoff);
1166 /* At this point we know that whatever is loaded @ base is a valid ELF
1168 TRACE("[ %5d init_library base=0x%08x sz=0x%08x name='%s') ]\n",
1169 pid, si->base, si->size, si->name);
1175 munmap((void *)si->base, si->size);
1263 munmap((char *)si->base, si->size);
1285 unsigned base;
1292 unsigned reloc = (unsigned)(rel->r_offset + si->base);
1300 s = _do_lookup(si, sym_name, &base);
1319 - The address of nominial base address if the relocation
1320 type is base-relative.
1360 if((base == 0) && (si->base != 0)){
1367 sym_addr = (unsigned)(s->st_value + base);
1436 reloc, si->base);
1437 *((unsigned*)reloc) += si->base;
1676 DEBUG("%5d si->base = 0x%08x si->flags = 0x%08x\n", pid,
1677 si->base, si->flags);
1704 We use the range [si->base, si->base + si->size) to
1706 section. Of course, if a value is between si->base and
1707 (si->base + phdr->p_vaddr), it's not in the executable
1721 if (si->base + phdr->p_vaddr < si->wrprotect_start)
1722 si->wrprotect_start = si->base + phdr->p_vaddr;
1723 _end = (((si->base + phdr->p_vaddr + phdr->p_memsz + PAGE_SIZE - 1) &
1732 mprotect((void *) (si->base + phdr->p_vaddr),
1740 pid, si->name, si->base + phdr->p_vaddr,
1745 si->dynamic = (unsigned *) (si->base + phdr->p_vaddr);
1749 || ((si->base + phdr->p_vaddr + phdr->p_memsz) < si->base)) {
1755 si->gnu_relro_start = (Elf32_Addr) (si->base + phdr->p_vaddr);
1773 si->nbucket = ((unsigned *) (si->base + *d))[0];
1774 si->nchain = ((unsigned *) (si->base + *d))[1];
1775 si->bucket = (unsigned *) (si->base + *d + 8);
1776 si->chain = (unsigned *) (si->base + *d + 8 + si->nbucket * 4);
1779 si->strtab = (const char *) (si->base + *d);
1782 si->symtab = (Elf32_Sym *) (si->base + *d);
1791 si->plt_rel = (Elf32_Rel*) (si->base + *d);
1797 si->rel = (Elf32_Rel*) (si->base + *d);
1804 si->plt_got = (unsigned *)(si->base + *d);
1814 si->init_func = (void (*)(void))(si->base + *d);
1819 si->fini_func = (void (*)(void))(si->base + *d);
1824 si->init_array = (unsigned *)(si->base + *d);
1832 si->fini_array = (unsigned *)(si->base + *d);
1840 si->preinit_array = (unsigned *)(si->base + *d);
1859 DEBUG("%5d si->base = 0x%08x, si->strtab = %p, si->symtab = %p\n",
1860 pid, si->base, si->strtab, si->symtab);
1930 base, wr_offset, PROT_READ | PROT_EXEC);
2123 linker_soinfo.base = 0; // This is the important part; must be zero.
2142 /* Compute the value of si->base. We can't rely on the fact that
2147 si->base = 0;
2150 si->base = (Elf32_Addr) si->phdr - si->phdr[nn].p_vaddr;
2270 linker_so.base = linker_addr;