• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10.1/xnu-2782.1.97/libkern/kxld/

Lines Matching defs:symtab

58 static kern_return_t init_macho(KXLDSymtab *symtab, struct symtab_command *src,
64 static kern_return_t init_syms_32(KXLDSymtab *symtab, u_char *macho, u_long offset,
68 static kern_return_t init_syms_64(KXLDSymtab *symtab, u_char *macho, u_long offset,
72 static void restrict_private_symbols(KXLDSymtab *symtab)
89 kxld_symtab_init_from_macho_32(KXLDSymtab *symtab, struct symtab_command *src,
92 return init_macho(symtab, src, macho, kernel_linkedit_seg,
101 kxld_symtab_init_from_macho_64(KXLDSymtab *symtab, struct symtab_command *src,
104 return init_macho(symtab, src, macho, kernel_linkedit_seg,
112 init_macho(KXLDSymtab *symtab, struct symtab_command *src,
120 check(symtab);
126 rval = kxld_array_init(&symtab->syms, sizeof(KXLDSym), src->nsyms);
134 * the symtab offsets directly, because the kernel file has been mapped
150 symtab->strings = (char *)(uintptr_t)kernel_linkedit_seg->base_addr +
155 symtab->strings = (char *) (macho + src->stroff);
158 symtab->strsize = src->strsize;
164 symtab, macho_or_linkedit, symoff, src->nsyms);
168 (void) restrict_private_symbols(symtab);
183 init_syms_32(KXLDSymtab *symtab, u_char *macho, u_long offset, u_int nsyms)
191 sym = kxld_array_get_item(&symtab->syms, i);
194 rval = kxld_sym_init_from_macho32(sym, symtab->strings, &src_syms[i]);
210 init_syms_64(KXLDSymtab *symtab, u_char *macho, u_long offset, u_int nsyms)
218 sym = kxld_array_get_item(&symtab->syms, i);
221 rval = kxld_sym_init_from_macho64(sym, symtab->strings, &src_syms[i]);
239 restrict_private_symbols(KXLDSymtab *symtab)
253 kxld_symtab_iterator_init(&iter, symtab, kxld_sym_is_exported, FALSE);
270 kxld_symtab_iterator_init(KXLDSymtabIterator *iter, const KXLDSymtab *symtab,
274 check(symtab);
277 iter->symtab = symtab;
286 kxld_symtab_clear(KXLDSymtab *symtab)
288 check(symtab);
290 kxld_array_clear(&symtab->syms);
291 kxld_dict_clear(&symtab->cxx_index);
292 kxld_dict_clear(&symtab->name_index);
293 symtab->strings = NULL;
294 symtab->strsize = 0;
295 symtab->cxx_index_initialized = 0;
296 symtab->name_index_initialized = 0;
302 kxld_symtab_deinit(KXLDSymtab *symtab)
304 check(symtab);
306 kxld_array_deinit(&symtab->syms);
307 kxld_dict_deinit(&symtab->cxx_index);
308 kxld_dict_deinit(&symtab->name_index);
309 bzero(symtab, sizeof(*symtab));
315 kxld_symtab_get_num_symbols(const KXLDSymtab *symtab)
317 check(symtab);
319 return symtab->syms.nitems;
325 kxld_symtab_get_symbol_by_index(const KXLDSymtab *symtab, u_int idx)
327 check(symtab);
329 return kxld_array_get_item(&symtab->syms, idx);
335 kxld_symtab_get_symbol_by_name(const KXLDSymtab *symtab, const char *name)
340 for (i = 0; i < symtab->syms.nitems; ++i) {
341 sym = kxld_array_get_item(&symtab->syms, i);
354 kxld_symtab_get_locally_defined_symbol_by_name(const KXLDSymtab *symtab,
357 check(symtab);
360 return kxld_dict_find(&symtab->name_index, name);
366 kxld_symtab_get_cxx_symbol_by_value(const KXLDSymtab *symtab, kxld_addr_t value)
368 check(symtab);
370 return kxld_dict_find(&symtab->cxx_index, &value);
376 kxld_symtab_get_sym_index(const KXLDSymtab *symtab, const KXLDSym *sym,
381 rval = kxld_array_get_index(&symtab->syms, sym, symindex);
401 kxld_symtab_get_macho_data_size(const KXLDSymtab *symtab, boolean_t is_32_bit)
408 check(symtab);
410 kxld_symtab_iterator_init(&iter, symtab,
432 kxld_symtab_export_macho(const KXLDSymtab *symtab, u_char *buf,
446 check(symtab);
465 kxld_symtab_iterator_init(&iter, symtab,
524 for (idx = iter->idx; idx < iter->symtab->syms.nitems; ++idx) {
525 count += iter->test(kxld_array_get_item(&iter->symtab->syms, idx));
534 kxld_symtab_index_cxx_symbols_by_value(KXLDSymtab *symtab)
541 check(symtab);
543 if (symtab->cxx_index_initialized) {
549 kxld_symtab_iterator_init(&iter, symtab, sym_is_defined_cxx, FALSE);
553 rval = kxld_dict_init(&symtab->cxx_index, kxld_dict_kxldaddr_hash,
559 rval = kxld_dict_insert(&symtab->cxx_index, &sym->base_addr, sym);
563 symtab->cxx_index_initialized = TRUE;
580 kxld_symtab_index_symbols_by_name(KXLDSymtab *symtab)
587 check(symtab);
589 if (symtab->name_index_initialized) {
595 kxld_symtab_iterator_init(&iter, symtab, sym_is_name_indexed, FALSE);
599 rval = kxld_dict_init(&symtab->name_index, kxld_dict_string_hash,
605 rval = kxld_dict_insert(&symtab->name_index, sym->name, sym);
609 symtab->name_index_initialized = TRUE;
626 kxld_symtab_relocate(KXLDSymtab *symtab, const KXLDArray *sectarray)
633 check(symtab);
636 kxld_symtab_iterator_init(&iter, symtab, kxld_sym_is_section, FALSE);
658 kxld_symtab_add_symbol(KXLDSymtab *symtab, char *name, kxld_addr_t link_addr,
663 u_int symindex = symtab->syms.nitems;
665 rval = kxld_array_resize(&symtab->syms, symindex + 1);
668 sym = kxld_array_get_item(&symtab->syms, symindex);
671 rval = kxld_dict_insert(&symtab->name_index, sym->name, sym);
692 for (; iter->idx < iter->symtab->syms.nitems; ++iter->idx) {
693 tmp = kxld_array_get_item(&iter->symtab->syms, iter->idx);