• Home
  • Raw
  • Download

Lines Matching refs:binary

159 static bool read_private_lds_symbols(struct ac_rtld_binary *binary, unsigned part_idx,  in read_private_lds_symbols()  argument
177 struct ac_rtld_part *part = &binary->parts[part_idx]; in read_private_lds_symbols()
210 const struct ac_rtld_symbol *shared = find_symbol(&binary->lds_symbols, s.name, part_idx); in read_private_lds_symbols()
217 util_dynarray_append(&binary->lds_symbols, struct ac_rtld_symbol, s); in read_private_lds_symbols()
232 bool ac_rtld_open(struct ac_rtld_binary *binary, struct ac_rtld_open_info i) in ac_rtld_open() argument
240 memset(binary, 0, sizeof(*binary)); in ac_rtld_open()
241 memcpy(&binary->options, &i.options, sizeof(binary->options)); in ac_rtld_open()
242 binary->wave_size = i.wave_size; in ac_rtld_open()
243 binary->gfx_level = i.info->gfx_level; in ac_rtld_open()
244 binary->num_parts = i.num_parts; in ac_rtld_open()
245 binary->parts = calloc(sizeof(*binary->parts), i.num_parts); in ac_rtld_open()
246 if (!binary->parts) in ac_rtld_open()
271 if (!util_dynarray_resize(&binary->lds_symbols, struct ac_rtld_symbol, in ac_rtld_open()
275 memcpy(binary->lds_symbols.data, i.shared_lds_symbols, binary->lds_symbols.size); in ac_rtld_open()
278 util_dynarray_foreach (&binary->lds_symbols, struct ac_rtld_symbol, symbol) in ac_rtld_open()
284 if (!layout_symbols(binary->lds_symbols.data, i.num_shared_lds_symbols, &shared_lds_size)) in ac_rtld_open()
292 binary->lds_size = shared_lds_size; in ac_rtld_open()
298 if (binary->options.halt_at_entry) in ac_rtld_open()
302 struct ac_rtld_part *part = &binary->parts[part_idx]; in ac_rtld_open()
304 util_dynarray_num_elements(&binary->lds_symbols, struct ac_rtld_symbol); in ac_rtld_open()
352 if (part_idx > 0 && first_section && binary->options.waitcnt_wa) { in ac_rtld_open()
368 if (!read_private_lds_symbols(binary, part_idx, section, &lds_end_align)) in ac_rtld_open()
374 if (!layout_symbols(util_dynarray_element(&binary->lds_symbols, struct ac_rtld_symbol, in ac_rtld_open()
376 util_dynarray_num_elements(&binary->lds_symbols, struct ac_rtld_symbol) - in ac_rtld_open()
380 binary->lds_size = MAX2(binary->lds_size, part_lds_size); in ac_rtld_open()
383 binary->rx_end_markers = pasted_text_size; in ac_rtld_open()
391 binary->lds_size = align(binary->lds_size, lds_end_align); in ac_rtld_open()
394 util_dynarray_grow(&binary->lds_symbols, struct ac_rtld_symbol, 1); in ac_rtld_open()
398 lds_end->offset = binary->lds_size; in ac_rtld_open()
402 if (binary->lds_size > max_lds_size) { in ac_rtld_open()
404 (unsigned)binary->lds_size, max_lds_size); in ac_rtld_open()
409 binary->rx_size = pasted_text_size; in ac_rtld_open()
410 binary->rx_size = align(binary->rx_size, rx_align); in ac_rtld_open()
413 struct ac_rtld_part *part = &binary->parts[part_idx]; in ac_rtld_open()
420 s->offset += binary->rx_size; in ac_rtld_open()
424 binary->rx_size += rx_size; in ac_rtld_open()
425 binary->exec_size = exec_size; in ac_rtld_open()
433 ac_rtld_close(binary); in ac_rtld_open()
437 void ac_rtld_close(struct ac_rtld_binary *binary) in ac_rtld_close() argument
439 for (unsigned i = 0; i < binary->num_parts; ++i) { in ac_rtld_close()
440 struct ac_rtld_part *part = &binary->parts[i]; in ac_rtld_close()
445 util_dynarray_fini(&binary->lds_symbols); in ac_rtld_close()
446 free(binary->parts); in ac_rtld_close()
447 binary->parts = NULL; in ac_rtld_close()
448 binary->num_parts = 0; in ac_rtld_close()
472 bool ac_rtld_get_section_by_name(struct ac_rtld_binary *binary, const char *name, const char **data, in ac_rtld_get_section_by_name() argument
475 assert(binary->num_parts == 1); in ac_rtld_get_section_by_name()
476 return get_section_by_name(&binary->parts[0], name, data, nbytes); in ac_rtld_get_section_by_name()
479 bool ac_rtld_read_config(const struct radeon_info *info, struct ac_rtld_binary *binary, in ac_rtld_read_config() argument
482 for (unsigned i = 0; i < binary->num_parts; ++i) { in ac_rtld_read_config()
483 struct ac_rtld_part *part = &binary->parts[i]; in ac_rtld_read_config()
492 ac_parse_shader_binary_config(config_data, config_nbytes, binary->wave_size, info, &c); in ac_rtld_read_config()
529 const struct ac_rtld_symbol *lds_sym = find_symbol(&u->binary->lds_symbols, name, part_idx); in resolve_symbol()
538 if (u->get_external_symbol(u->binary->gfx_level, u->cb_data, name, value)) in resolve_symbol()
545 struct ac_rtld_part *part = &u->binary->parts[part_idx]; in resolve_symbol()
581 struct ac_rtld_part *part = &u->binary->parts[part_idx]; in apply_relocs()
717 if (u->binary->options.halt_at_entry) { in ac_rtld_upload()
723 for (unsigned i = 0; i < u->binary->num_parts; ++i) { in ac_rtld_upload()
724 struct ac_rtld_part *part = &u->binary->parts[i]; in ac_rtld_upload()
740 if (i > 0 && first_section && u->binary->options.waitcnt_wa) { in ac_rtld_upload()
752 if (u->binary->rx_end_markers) { in ac_rtld_upload()
753 uint32_t *dst = (uint32_t *)(u->rx_ptr + u->binary->rx_end_markers); in ac_rtld_upload()
761 for (unsigned i = 0; i < u->binary->num_parts; ++i) { in ac_rtld_upload()
762 struct ac_rtld_part *part = &u->binary->parts[i]; in ac_rtld_upload()