* gdbtypes.h (struct builtin_type): Add internal_fn member.

* gdbtypes.c (gdbtypes_post_init): Initialize it.
	* value.c (internal_fn_type): Remove.
	(_initialize_values): Do not initialize it.

	* value.c (struct internalvar): Add enum internalvar_kind type and
	kind member.  Restructure union internalvar_data type.  Remove type,
	canonical, and make_value members.
	(init_if_undefined_command): Update for data structure changes.
	(create_internalvar): Likewise.
	(create_internalvar_type_lazy): Likewise.
	(get_internalvar_integer): Likewise.
	(get_internalvar_function): Likewise.
	(set_internalvar_component): Likewise.
	(set_internalvar): Likewise.
	(set_internalvar_integer): Likewise.
	(set_internalvar_function): Likewise.
	(clear_internalvar): Likewise.
	(add_internal_function): Likewise.
	(preserve_one_internalvar): New function.
	(preserve_values): Call it.

	* value.h (value_of_internalvar): Add GDBARCH parameter.
	(internalvar_make_value): Likewise.
	* value.c (value_of_internalvar): Add GDBARCH parameter.  Pass it to
	make_value callback.  Use it to generate per-architecture result value
	types for internal variables with no pre-defined type.  Update for data
	structure changes.
	(show_convenience): Pass architecture to value_of_internalvar.
	* eval.c (evaluate_subexp_standard): Likewise.
	* infrun.c (siginfo_make_value): Add GDBARCH parameter.  Use it
	instead of current frame architecture.  Return per-architecture type.

	* value.h (set_internalvar_string): Add prototype.
	* value.c (set_internalvar_string): New function.
	* tracepoint.c (set_traceframe_context): Use it.
This commit is contained in:
Ulrich Weigand
2009-07-02 12:11:19 +00:00
parent 0daa2b63cc
commit 78267919d6
8 changed files with 278 additions and 175 deletions

View File

@@ -522,7 +522,8 @@ extern void binop_promote (const struct language_defn *language,
extern struct value *access_value_history (int num);
extern struct value *value_of_internalvar (struct internalvar *var);
extern struct value *value_of_internalvar (struct gdbarch *gdbarch,
struct internalvar *var);
extern int get_internalvar_integer (struct internalvar *var, LONGEST *l);
@@ -530,6 +531,9 @@ extern void set_internalvar (struct internalvar *var, struct value *val);
extern void set_internalvar_integer (struct internalvar *var, LONGEST l);
extern void set_internalvar_string (struct internalvar *var,
const char *string);
extern void clear_internalvar (struct internalvar *var);
extern void set_internalvar_component (struct internalvar *var,
@@ -541,8 +545,8 @@ extern struct internalvar *lookup_only_internalvar (const char *name);
extern struct internalvar *create_internalvar (const char *name);
typedef struct value * (*internalvar_make_value) (struct internalvar *);
typedef struct value * (*internalvar_make_value) (struct gdbarch *,
struct internalvar *);
extern struct internalvar *
create_internalvar_type_lazy (char *name, internalvar_make_value fun);