Lines Matching refs:size_t
26 static size_t ldso_page_size;
57 size_t args[2];
68 size_t *dynv;
73 size_t phentsize;
80 size_t *lazy, lazy_cnt;
82 size_t map_len;
94 size_t ndeps_direct;
95 size_t next_dep;
99 size_t tls_id;
100 size_t relro_start, relro_end;
113 size_t *got;
115 size_t *got;
124 typedef void (*stage3_func)(size_t *, size_t *);
134 static size_t *saved_addends, *apply_addends_to;
149 static size_t tls_cnt, tls_offset, tls_align = MIN_TLS_ALIGN;
150 static size_t static_tls_cnt;
182 static void *laddr(const struct dso *p, size_t v)
184 size_t j=0;
189 static void *laddr_pg(const struct dso *p, size_t v)
191 size_t j=0;
192 size_t pgsz = PAGE_SIZE;
195 size_t a = p->loadmap->segs[j].p_vaddr;
196 size_t b = a + p->loadmap->segs[j].p_memsz;
218 static void decode_vec(size_t *v, size_t *a, size_t cnt)
220 size_t i;
229 static int search_vec(size_t *v, size_t *r, size_t key)
259 size_t i;
274 uint32_t *buckets = hashtab + 4 + hashtab[2]*(sizeof(size_t)/4);
292 static Sym *gnu_lookup_filtered(uint32_t h1, uint32_t *hashtab, struct dso *dso, const char *s, uint32_t fofs, size_t fmask)
294 const size_t *bloomwords = (const void *)(hashtab+4);
295 size_t f = bloomwords[fofs & (hashtab[2]-1)];
316 uint32_t h = 0, gh = gnu_hash(s), gho = gh / (8*sizeof(size_t)), *ght;
317 size_t ghm = 1ul << gh % (8*sizeof(size_t));
365 size_t l;
384 static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stride)
395 size_t *reloc_addr;
396 size_t sym_val;
397 size_t tls_val;
398 size_t addend;
408 for (; rel_size; rel+=stride, rel_size-=stride*sizeof(size_t)) {
457 sym_val = def.sym ? (size_t)laddr(def.dso, def.sym->st_value) : 0;
470 addend -= (size_t)reloc_addr;
477 memcpy(reloc_addr, &(size_t){sym_val + addend}, sizeof(size_t));
480 *reloc_addr = (size_t)base + addend;
484 else *reloc_addr = (size_t)base + addend;
491 - (size_t)reloc_addr;
494 *reloc_addr = def.sym ? (size_t)(def.dso->funcdescs
500 reloc_addr[1] = def.sym ? (size_t)def.dso->got : 0;
534 reloc_addr[0] = (size_t)__tlsdesc_dynamic;
535 reloc_addr[1] = (size_t)new;
537 reloc_addr[0] = (size_t)__tlsdesc_static;
549 size_t tmp = reloc_addr[0];
563 static void do_relr_relocs(struct dso *dso, size_t *relr, size_t relr_size)
567 size_t *reloc_addr;
568 for (; relr_size; relr++, relr_size-=sizeof(size_t))
571 *reloc_addr++ += (size_t)base;
574 for (size_t bitmap=relr[0]; (bitmap>>=1); i++)
576 reloc_addr[i] += (size_t)base;
577 reloc_addr += 8*sizeof(size_t)-1;
587 size_t size = p->lazy_cnt*3*sizeof(size_t);
606 static void reclaim(struct dso *dso, size_t start, size_t end)
618 size_t phcnt = dso->phnum;
629 static ssize_t read_loop(int fd, void *p, size_t n)
631 for (size_t i=0; i<n; ) {
643 static void *mmap_fixed(void *p, size_t n, int prot, int flags, int fd, off_t off)
675 size_t i;
692 size_t phsize;
693 size_t addr_min=SIZE_MAX, addr_max=0, map_len;
694 size_t this_min, this_max;
695 size_t nsegs = 0;
701 size_t dyn=0;
702 size_t tls_image=0;
703 size_t i;
775 dso->loadmap->segs[i].addr = (size_t)map +
781 size_t brk = (ph->p_vaddr & PAGE_SIZE-1)
783 size_t pgbrk = brk + PAGE_SIZE-1 & -PAGE_SIZE;
784 size_t pgend = brk + ph->p_memsz - ph->p_filesz
849 size_t p_vaddr = (next_ph->p_vaddr & -(PAGE_SIZE));
862 size_t brk = (size_t)base+ph->p_vaddr+ph->p_filesz;
863 size_t pgbrk = brk+PAGE_SIZE-1 & -PAGE_SIZE;
865 if (pgbrk-(size_t)base < this_max && mmap_fixed((void *)pgbrk, (size_t)base+this_max-pgbrk, prot, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) == MAP_FAILED)
869 for (i=0; ((size_t *)(base+dyn))[i]; i+=2)
870 if (((size_t *)(base+dyn))[i]==DT_TEXTREL) {
890 static int path_open(const char *name, const char *s, char *buf, size_t buf_size)
892 size_t l;
916 static int fixup_rpath(struct dso *p, char *buf, size_t buf_size)
918 size_t n, l;
995 size_t dyn[DYN_CNT];
1013 static size_t count_syms(struct dso *p)
1017 size_t nsym, i;
1018 uint32_t *buckets = p->ghashtab + 4 + (p->ghashtab[2]*sizeof(size_t)/4);
1032 static void *dl_mmap(size_t n)
1047 size_t nsym = count_syms(p);
1048 size_t i, size = nsym * sizeof(*p->funcdescs);
1083 size_t alloc_size;
1149 size_t prefix_len;
1169 size_t n = 0;
1249 size_t per_th = temp_dso.tls.size + temp_dso.tls.align
1284 p->new_dtv = (void *)(-sizeof(size_t) &
1285 (uintptr_t)(p->name+strlen(p->name)+sizeof(size_t)));
1305 size_t i, cnt=0;
1349 size_t i, j, cnt, ndeps_all;
1432 static void do_mips_relocs(struct dso *p, size_t *got)
1434 size_t i, j, rel[2];
1440 while (i--) *got++ += (size_t)base;
1446 for (i-=j; i; i--, sym++, rel[0]+=sizeof(size_t)) {
1454 size_t dyn[DYN_CNT];
1483 size_t min_addr = -1, max_addr = 0, cnt;
1514 size_t dyn[DYN_CNT];
1530 size_t n = dyn[DT_FINI_ARRAYSZ]/sizeof(size_t);
1531 size_t *fn = (size_t *)laddr(p, dyn[DT_FINI_ARRAY])+n;
1554 size_t cnt, qpos, spos, i;
1624 size_t dyn[DYN_CNT], i;
1648 size_t n = dyn[DT_INIT_ARRAYSZ]/sizeof(size_t);
1649 size_t *fn = laddr(p, dyn[DT_INIT_ARRAY]);
1675 void __init_tls(size_t *auxv)
1698 size_t i, j;
1699 size_t old_cnt = self->dtv[0];
1752 hidden void __dls2(unsigned char *base, size_t *sp)
1754 size_t *auxv;
1761 size_t aux[AUX_CNT];
1787 size_t dyn[DYN_CNT];
1789 size_t *rel = laddr(&ldso, dyn[DT_REL]);
1790 size_t rel_size = dyn[DT_RELSZ];
1791 size_t symbolic_rel_cnt = 0;
1793 for (; rel_size; rel+=2, rel_size-=2*sizeof(size_t))
1796 size_t addends[symbolic_rel_cnt+1];
1818 void __dls2b(size_t *sp, size_t *auxv)
1841 void __dls3(size_t *sp, size_t *auxv)
1844 size_t aux[AUX_CNT];
1845 size_t i;
1848 size_t vdso_base;
1876 if (aux[AT_PHDR] != (size_t)ldso.phdr) {
1877 size_t interp_off = 0;
1878 size_t tls_image = 0;
1887 interp_off = (size_t)phdr->p_vaddr;
1918 size_t l = strlen(ldname);
1967 aux[AT_ENTRY] = (size_t)laddr(&app, ehdr->e_entry);
1999 app.loadmap->segs[0].addr = (size_t)app.map;
2000 app.loadmap->segs[0].p_vaddr = (size_t)app.map
2001 - (size_t)app.base;
2050 app.dynv[i+1] = (size_t)&debug;
2052 size_t *ptr = (size_t *) app.dynv[i+1];
2053 *ptr = (size_t)&debug;
2056 size_t *ptr = (size_t *)((size_t)&app.dynv[i] + app.dynv[i+1]);
2057 *ptr = (size_t)&debug;
2095 size_t tmp_tls_size = libc.tls_size;
2138 size_t dyn[DYN_CNT], n, flags1=0;
2145 size_t j=0; search_vec(p->dynv, &j, DT_MIPS_GOTSYM);
2146 size_t i=0; search_vec(p->dynv, &i, DT_MIPS_SYMTABNO);
2149 p->lazy = calloc(n, 3*sizeof(size_t));
2162 size_t orig_tls_cnt, orig_tls_offset, orig_tls_align;
2163 size_t i;
2303 static void *addr2dso(size_t a)
2306 size_t i;
2309 if (a-(size_t)p->funcdescs < i*sizeof(*p->funcdescs))
2321 size_t phcnt = p->phnum;
2322 size_t entsz = p->phentsize;
2323 size_t base = (size_t)p->base;
2329 if (a-(size_t)p->map < p->map_len)
2342 p = addr2dso((size_t)ra);
2363 size_t addr = (size_t)addr_arg;
2368 size_t best = 0;
2369 size_t besterr = -1;
2382 size_t idx = (addr-(size_t)p->funcdescs)
2385 best = (size_t)(p->funcdescs + idx);
2395 size_t symaddr = (size_t)laddr(p, sym->st_value);
2421 best = (size_t)(p->funcdescs + (bestsym - p->syms));
2445 size_t l = strnlen(s, sizeof redir);
2464 int dl_iterate_phdr(int(*callback)(struct dl_phdr_info *info, size_t size, void *data), void *data)