diff options
author | Yao Qi <yao.qi@linaro.org> | 2017-09-05 09:54:53 +0100 |
---|---|---|
committer | Yao Qi <yao.qi@linaro.org> | 2017-09-05 09:54:53 +0100 |
commit | f49ff00066929bf7c38f9c89ad640561bbb331f6 (patch) | |
tree | b410bbcba3cb5b90d02547b31e4f9efd0c0a7a8f /gdb/target-descriptions.c | |
parent | 2b68ef2f11daef3ab3c6941ebf53dfcd0fb79fbf (diff) | |
download | gdb-f49ff00066929bf7c38f9c89ad640561bbb331f6.zip gdb-f49ff00066929bf7c38f9c89ad640561bbb331f6.tar.gz gdb-f49ff00066929bf7c38f9c89ad640561bbb331f6.tar.bz2 |
[GDBserver] Centralize tdesc for i386-linux
tdesc_i386_XXX_linux is used in many places in linux-x86-low.c and this
patch adds a new function i386_linux_read_description to return the right
tdesc according to xcr0. i386_linux_read_description is quite similar to
the counterpart in GDB, and the following patch will share the duplicated
code, so this patch adds arch/tdesc.h includes the declarations of various
tdesc apis which are used by the shared code. The generated c feature
files can include arch/tdesc.h only.
gdb/gdbserver:
2017-09-05 Yao Qi <yao.qi@linaro.org>
* configure.srv (srv_tgtobj): Append linux-x86-tdesc.o.
(ipa_obj): Likewise.
* linux-i386-ipa.c: Include common/x86-xstate.h
(get_ipa_tdesc): Call i386_linux_read_description.
(initialize_low_tracepoint): Don't call init_registers_XXX
functions, call initialize_low_tdesc instead.
* linux-x86-low.c (x86_linux_read_description): Call
i386_linux_read_description.
(initialize_low_arch): Don't call init_registers_i386_XXX
functions, call initialize_low_tdesc.
* linux-x86-tdesc.c: New file.
* linux-x86-tdesc.h (x86_linux_tdesc): New X86_TDESC_LAST.
(i386_get_ipa_tdesc_idx): Declare.
(i386_get_ipa_tdesc): Declare.
(initialize_low_tdesc): Declare.
gdb:
2017-09-05 Yao Qi <yao.qi@linaro.org>
* arch/tdesc.h: New file.
* regformats/regdat.sh: Generate code using tdesc_create_reg.
* target-descriptions.c: Update comments.
* target-descriptions.h: Include "arch/tdesc.h". Remove the
declarations.
* features/i386/32bit-avx.c: Re-generated.
* features/i386/32bit-avx512.c: Re-generated.
* features/i386/32bit-core.c: Re-generated.
* features/i386/32bit-linux.c: Re-generated.
* features/i386/32bit-mpx.c: Re-generated.
* features/i386/32bit-pkeys.c: Re-generated.
* features/i386/32bit-sse.c: Re-generated.
Diffstat (limited to 'gdb/target-descriptions.c')
-rw-r--r-- | gdb/target-descriptions.c | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c index bee8e00..f0ced66 100644 --- a/gdb/target-descriptions.c +++ b/gdb/target-descriptions.c @@ -846,8 +846,7 @@ tdesc_predefined_type (enum tdesc_type_kind kind) gdb_assert_not_reached ("bad predefined tdesc type"); } -/* Return the type associated with ID in the context of FEATURE, or - NULL if none. */ +/* See arch/tdesc.h. */ struct tdesc_type * tdesc_named_type (const struct tdesc_feature *feature, const char *id) @@ -1566,6 +1565,8 @@ tdesc_use_registers (struct gdbarch *gdbarch, } +/* See arch/tdesc.h. */ + void tdesc_create_reg (struct tdesc_feature *feature, const char *name, int regnum, int save_restore, const char *group, @@ -1577,6 +1578,8 @@ tdesc_create_reg (struct tdesc_feature *feature, const char *name, VEC_safe_push (tdesc_reg_p, feature->registers, reg); } +/* See arch/tdesc.h. */ + struct tdesc_type * tdesc_create_vector (struct tdesc_feature *feature, const char *name, struct tdesc_type *field_type, int count) @@ -1590,6 +1593,8 @@ tdesc_create_vector (struct tdesc_feature *feature, const char *name, return type; } +/* See arch/tdesc.h. */ + struct tdesc_type * tdesc_create_struct (struct tdesc_feature *feature, const char *name) { @@ -1599,9 +1604,7 @@ tdesc_create_struct (struct tdesc_feature *feature, const char *name) return type; } -/* Set the total length of TYPE. Structs which contain bitfields may - omit the reserved bits, so the end of the last field may not - suffice. */ +/* See arch/tdesc.h. */ void tdesc_set_struct_size (struct tdesc_type *type, int size) @@ -1611,6 +1614,8 @@ tdesc_set_struct_size (struct tdesc_type *type, int size) type->u.u.size = size; } +/* See arch/tdesc.h. */ + struct tdesc_type * tdesc_create_union (struct tdesc_feature *feature, const char *name) { @@ -1620,6 +1625,8 @@ tdesc_create_union (struct tdesc_feature *feature, const char *name) return type; } +/* See arch/tdesc.h. */ + struct tdesc_type * tdesc_create_flags (struct tdesc_feature *feature, const char *name, int size) @@ -1648,7 +1655,7 @@ tdesc_create_enum (struct tdesc_feature *feature, const char *name, return type; } -/* Add a new field to TYPE. */ +/* See arch/tdesc.h. */ void tdesc_add_field (struct tdesc_type *type, const char *field_name, @@ -1669,8 +1676,6 @@ tdesc_add_field (struct tdesc_type *type, const char *field_name, VEC_safe_push (tdesc_type_field, type->u.u.fields, &f); } -/* Add a new typed bitfield to TYPE. */ - void tdesc_add_typed_bitfield (struct tdesc_type *type, const char *field_name, int start, int end, struct tdesc_type *field_type) @@ -1689,9 +1694,7 @@ tdesc_add_typed_bitfield (struct tdesc_type *type, const char *field_name, VEC_safe_push (tdesc_type_field, type->u.u.fields, &f); } -/* Add a new untyped bitfield to TYPE. - Untyped bitfields become either uint32 or uint64 depending on the size - of the underlying type. */ +/* See arch/tdesc.h. */ void tdesc_add_bitfield (struct tdesc_type *type, const char *field_name, @@ -1709,8 +1712,7 @@ tdesc_add_bitfield (struct tdesc_type *type, const char *field_name, tdesc_add_typed_bitfield (type, field_name, start, end, field_type); } -/* A flag is just a typed(bool) single-bit bitfield. - This function is kept to minimize changes in generated files. */ +/* See arch/tdesc.h. */ void tdesc_add_flag (struct tdesc_type *type, int start, @@ -1745,6 +1747,8 @@ tdesc_add_enum_value (struct tdesc_type *type, int value, VEC_safe_push (tdesc_type_field, type->u.u.fields, &f); } +/* See arch/tdesc.h. */ + struct tdesc_feature * tdesc_create_feature (struct target_desc *tdesc, const char *name) { @@ -2175,7 +2179,7 @@ public: printf_unfiltered (" Original: %s */\n\n", lbasename (m_filename_after_features.c_str ())); - printf_unfiltered ("#include \"target-descriptions.h\"\n"); + printf_unfiltered ("#include \"arch/tdesc.h\"\n"); printf_unfiltered ("\n"); } |