From c9a5e2a5b2b20d83f60026459d3a6b68481566c9 Mon Sep 17 00:00:00 2001 From: Yao Qi Date: Tue, 5 Sep 2017 09:54:52 +0100 Subject: [PATCH] Adjust code generated by regformats/regdat.sh regformats/regdat.sh generate some *-generated.c files when GDBserver is built. Each .c file has some static variables, which are only used within function init_registers_XXX, like this, static struct reg regs_i386_linux[] = { { "eax", 0, 32 }, { "ecx", 32, 32 }, ... }; static const char *expedite_regs_i386_linux[] = { "ebp", "esp", "eip", 0 }; static const char *xmltarget_i386_linux = "i386-linux.xml"; void init_registers_i386_linux (void) { ... } This patch moves these static variables' definitions to function init_registers_XXX, so the generated files look like this, void init_registers_i386_linux (void) { static struct target_desc tdesc_i386_linux_s; struct target_desc *result = &tdesc_i386_linux_s; static struct reg regs_i386_linux[] = { ... }; static const char *expedite_regs_i386_linux[] = { "ebp", "esp", "eip", 0 }; static const char *xmltarget_i386_linux = "i386-linux.xml"; ... } We want GDBserver create target descriptions dynamically in each init_registers_XXXX functions, so this patch moves all the related code into function init_registers_XXXX, so that the following patch can easily change function init_registers_XXXX to create target description dynamically, rather than using current pre-generated array. gdb: 2017-09-05 Yao Qi * regformats/regdat.sh: Adjust code order. --- gdb/ChangeLog | 4 ++++ gdb/regformats/regdat.sh | 17 +++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 19882f04475..c50afecc057 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2017-09-05 Yao Qi + + * regformats/regdat.sh: Adjust code order. + 2017-09-05 Simon Marchi * expprint.c (dump_subexp_body_standard): Use constant format diff --git a/gdb/regformats/regdat.sh b/gdb/regformats/regdat.sh index 651f70392ca..2c764cde66b 100755 --- a/gdb/regformats/regdat.sh +++ b/gdb/regformats/regdat.sh @@ -123,6 +123,15 @@ while do_read do if test "${type}" = "name"; then name="${entry}" + + echo "const struct target_desc *tdesc_${name};" + echo "" + echo "void" + echo "init_registers_${name} (void)" + echo "{" + echo " static struct target_desc tdesc_${name}_s;" + echo " struct target_desc *result = &tdesc_${name}_s;" + echo "static struct reg regs_${name}[] = {" continue elif test "${type}" = "xmltarget"; then @@ -169,14 +178,6 @@ fi echo cat <reg_defs = regs_${name}; result->num_registers = sizeof (regs_${name}) / sizeof (regs_${name}[0]); -- 2.30.2