37 module (
std::move (mod))
60 if (data->executedp != NULL)
69 struct value *addr_value;
74 data->module->out_value_addr);
78 data->module->scope_data);
83 gdb_assert (
objfile !=
nullptr);
96 unlink (data->module->source_file.c_str ());
99 unlink (objfile_name_s.c_str ());
123 struct value *func_val;
125 int dtor_found, executed = 0;
126 struct symbol *func_sym =
module->func_sym;
127 CORE_ADDR regs_addr =
module->regs_addr;
136 struct value **vargs;
143 gdb_assert (
func_type->code () == TYPE_CODE_FUNC);
150 gdb_assert (regs_addr != 0);
152 (
func_type->field (current_arg).type (), regs_addr);
157 gdb_assert (data->module->out_value_addr != 0);
160 data->module->out_value_addr);
163 gdb_assert (current_arg ==
func_type->num_fields ());
164 auto args = gdb::make_array_view (vargs,
func_type->num_fields ());
168 catch (
const gdb_exception_error &ex)
174 data->executedp = NULL;
175 gdb_assert (!(dtor_found && executed));
176 if (!dtor_found && !executed)
182 gdb_assert (!dtor_found && executed);
std::unique_ptr< compile_module > compile_module_up
static type * create_copied_type_recursive(objfile *objfile, type *func_type)
void compile_object_run(compile_module_up &&module)
static dummy_frame_dtor_ftype do_module_cleanup
void compile_print_value(struct value *val, void *data_voidp)
@ COMPILE_I_PRINT_ADDRESS_SCOPE
@ COMPILE_I_PRINT_VALUE_SCOPE
int find_dummy_frame_dtor(dummy_frame_dtor_ftype *dtor, void *dtor_data)
void dummy_frame_dtor_ftype(void *data, int registers_valid)
struct type * copy_type_recursive(struct type *type, htab_t copied_types)
struct type * lookup_pointer_type(struct type *type)
htab_up create_copied_types_hash()
struct value * call_function_by_hand_dummy(struct value *function, type *default_return_type, gdb::array_view< value * > args, dummy_frame_dtor_ftype *dummy_dtor, void *dummy_dtor_data)
const char * objfile_name(const struct objfile *objfile)
CORE_ADDR entry_pc() const
DISABLE_COPY_AND_ASSIGN(do_module_cleanup)
do_module_cleanup(int *ptr, compile_module_up &&mod)
const block * value_block() const
struct type * type() const
void clear_symtab_users(symfile_add_flags add_flags)
struct value * value_ind(struct value *arg1)
struct value * value_from_pointer(struct type *type, CORE_ADDR addr)