tags 189 dlsym_default.c static char *symbol_name(int i, dt_tag *tags) {
tags 190 dlsym_default.c return tags->strtab + tags->symtab[i].st_name;
tags 193 dlsym_default.c static char *version_name(ElfW(Word) version_ndx, dt_tag *tags) {
tags 201 dlsym_default.c (ElfW(Verdef)*)(tags->base_addr + (unsigned long int)(tags->verdef));
tags 209 dlsym_default.c return tags->strtab + first->vda_name;
tags 221 dlsym_default.c static void get_dt_tags(void *handle, dt_tag *tags) {
tags 228 dlsym_default.c tags->base_addr = (char *)(link_map -> l_addr);
tags 230 dlsym_default.c tags->symtab = NULL;
tags 231 dlsym_default.c tags->versym = NULL;
tags 232 dlsym_default.c tags->verdef = NULL;
tags 233 dlsym_default.c tags->strtab = NULL;
tags 234 dlsym_default.c tags->hash = NULL;
tags 235 dlsym_default.c tags->gnu_hash = NULL;
tags 236 dlsym_default.c tags->verdefnum = 0;
tags 243 dlsym_default.c tags->versym = (void *)cur_dyn->d_un.d_ptr;
tags 245 dlsym_default.c tags->verdef = (void *)cur_dyn->d_un.d_ptr;
tags 247 dlsym_default.c tags->verdefnum = (ElfW(Word))cur_dyn->d_un.d_val;
tags 248 dlsym_default.c if (cur_dyn->d_tag == DT_STRTAB && tags->strtab == 0)
tags 249 dlsym_default.c tags->strtab = (void *)cur_dyn->d_un.d_ptr;
tags 253 dlsym_default.c tags->symtab = (void *)cur_dyn->d_un.d_ptr;
tags 255 dlsym_default.c tags->hash = (void *)cur_dyn->d_un.d_ptr;
tags 258 dlsym_default.c tags->gnu_hash = (void *)cur_dyn->d_un.d_ptr;
tags 269 dlsym_default.c dt_tag tags;
tags 311 dlsym_default.c get_dt_tags(handle, &tags);
tags 312 dlsym_default.c assert(tags.hash != NULL || tags.gnu_hash != NULL);
tags 313 dlsym_default.c int use_gnu_hash = (tags.hash == NULL);
tags 314 dlsym_default.c Elf32_Word *hash = (use_gnu_hash ? tags.gnu_hash : tags.hash);
tags 317 dlsym_default.c if (tags.symtab[i].st_name == 0 || tags.symtab[i].st_value == 0)
tags 319 dlsym_default.c if (strcmp(symbol_name(i, &tags), symbol) != 0) // If different symbol name
tags 322 dlsym_default.c if ( !(tags.versym[i] & (1<<15)) ) { // If hidden bit is not set.
tags 331 dlsym_default.c strcmp(version_name(tags.versym[i], &tags),
tags 332 dlsym_default.c version_name(tags.versym[default_symbol_index], &tags)) > 0) {
tags 340 dlsym_default.c tags.base_addr + tags.symtab[default_symbol_index].st_value);
tags 342 dlsym_default.c version_name(tags.versym[default_symbol_index], &tags));
tags 350 dlsym_default.c return tags.base_addr + tags.symtab[default_symbol_index].st_value;