Lines Matching refs:binary

177 static bool read_private_lds_symbols(struct ac_rtld_binary *binary, unsigned part_idx,  in read_private_lds_symbols()  argument
195 struct ac_rtld_part *part = &binary->parts[part_idx]; in read_private_lds_symbols()
228 const struct ac_rtld_symbol *shared = find_symbol(&binary->lds_symbols, s.name, part_idx); in read_private_lds_symbols()
235 util_dynarray_append(&binary->lds_symbols, struct ac_rtld_symbol, s); in read_private_lds_symbols()
250 bool ac_rtld_open(struct ac_rtld_binary *binary, struct ac_rtld_open_info i) in ac_rtld_open() argument
258 memset(binary, 0, sizeof(*binary)); in ac_rtld_open()
259 memcpy(&binary->options, &i.options, sizeof(binary->options)); in ac_rtld_open()
260 binary->wave_size = i.wave_size; in ac_rtld_open()
261 binary->num_parts = i.num_parts; in ac_rtld_open()
262 binary->parts = calloc(sizeof(*binary->parts), i.num_parts); in ac_rtld_open()
263 if (!binary->parts) in ac_rtld_open()
288 if (!util_dynarray_resize(&binary->lds_symbols, struct ac_rtld_symbol, in ac_rtld_open()
292 memcpy(binary->lds_symbols.data, i.shared_lds_symbols, binary->lds_symbols.size); in ac_rtld_open()
295 util_dynarray_foreach (&binary->lds_symbols, struct ac_rtld_symbol, symbol) in ac_rtld_open()
305 if (!layout_symbols(binary->lds_symbols.data, i.num_shared_lds_symbols, &shared_lds_size)) in ac_rtld_open()
313 binary->lds_size = shared_lds_size; in ac_rtld_open()
319 if (binary->options.halt_at_entry) in ac_rtld_open()
323 struct ac_rtld_part *part = &binary->parts[part_idx]; in ac_rtld_open()
325 util_dynarray_num_elements(&binary->lds_symbols, struct ac_rtld_symbol); in ac_rtld_open()
381 if (!read_private_lds_symbols(binary, part_idx, section, &lds_end_align)) in ac_rtld_open()
387 if (!layout_symbols(util_dynarray_element(&binary->lds_symbols, struct ac_rtld_symbol, in ac_rtld_open()
389 util_dynarray_num_elements(&binary->lds_symbols, struct ac_rtld_symbol) - in ac_rtld_open()
393 binary->lds_size = MAX2(binary->lds_size, part_lds_size); in ac_rtld_open()
396 binary->rx_end_markers = pasted_text_size; in ac_rtld_open()
404 binary->lds_size = align(binary->lds_size, lds_end_align); in ac_rtld_open()
407 util_dynarray_grow(&binary->lds_symbols, struct ac_rtld_symbol, 1); in ac_rtld_open()
411 lds_end->offset = binary->lds_size; in ac_rtld_open()
415 if (binary->lds_size > max_lds_size) { in ac_rtld_open()
417 (unsigned)binary->lds_size, max_lds_size); in ac_rtld_open()
422 binary->rx_size = pasted_text_size; in ac_rtld_open()
423 binary->rx_size = align(binary->rx_size, rx_align); in ac_rtld_open()
426 struct ac_rtld_part *part = &binary->parts[part_idx]; in ac_rtld_open()
433 s->offset += binary->rx_size; in ac_rtld_open()
437 binary->rx_size += rx_size; in ac_rtld_open()
438 binary->exec_size = exec_size; in ac_rtld_open()
456 binary->rx_size = align(binary->rx_size + 3 * 64, 64); in ac_rtld_open()
465 ac_rtld_close(binary); in ac_rtld_open()
469 void ac_rtld_close(struct ac_rtld_binary *binary) in ac_rtld_close() argument
471 for (unsigned i = 0; i < binary->num_parts; ++i) { in ac_rtld_close()
472 struct ac_rtld_part *part = &binary->parts[i]; in ac_rtld_close()
477 util_dynarray_fini(&binary->lds_symbols); in ac_rtld_close()
478 free(binary->parts); in ac_rtld_close()
479 binary->parts = NULL; in ac_rtld_close()
480 binary->num_parts = 0; in ac_rtld_close()
504 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
507 assert(binary->num_parts == 1); in ac_rtld_get_section_by_name()
508 return get_section_by_name(&binary->parts[0], name, data, nbytes); in ac_rtld_get_section_by_name()
511 bool ac_rtld_read_config(const struct radeon_info *info, struct ac_rtld_binary *binary, in ac_rtld_read_config() argument
514 for (unsigned i = 0; i < binary->num_parts; ++i) { in ac_rtld_read_config()
515 struct ac_rtld_part *part = &binary->parts[i]; in ac_rtld_read_config()
524 ac_parse_shader_binary_config(config_data, config_nbytes, binary->wave_size, true, info, &c); in ac_rtld_read_config()
561 const struct ac_rtld_symbol *lds_sym = find_symbol(&u->binary->lds_symbols, name, part_idx); in resolve_symbol()
577 struct ac_rtld_part *part = &u->binary->parts[part_idx]; in resolve_symbol()
613 struct ac_rtld_part *part = &u->binary->parts[part_idx]; in apply_relocs()
746 if (u->binary->options.halt_at_entry) { in ac_rtld_upload()
752 for (unsigned i = 0; i < u->binary->num_parts; ++i) { in ac_rtld_upload()
753 struct ac_rtld_part *part = &u->binary->parts[i]; in ac_rtld_upload()
771 if (u->binary->rx_end_markers) { in ac_rtld_upload()
772 uint32_t *dst = (uint32_t *)(u->rx_ptr + u->binary->rx_end_markers); in ac_rtld_upload()
779 for (unsigned i = 0; i < u->binary->num_parts; ++i) { in ac_rtld_upload()
780 struct ac_rtld_part *part = &u->binary->parts[i]; in ac_rtld_upload()