This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb/origin/users/qiyao/target-desc-4] Adjust code generated by regformats/regdat.sh


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=a83bb5eac4bee23360bed7fbd5a4e438a4eaec47

commit a83bb5eac4bee23360bed7fbd5a4e438a4eaec47
Author: Yao Qi <yao.qi@linaro.org>
Date:   Tue May 23 09:06:55 2017 +0100

    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-06-06  Yao Qi  <yao.qi@linaro.org>
    
    	* regformats/regdat.sh: Adjust code order.

Diff:
---
 gdb/regformats/regdat.sh | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/gdb/regformats/regdat.sh b/gdb/regformats/regdat.sh
index 651f703..2c764cd 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 <<EOF
-const struct target_desc *tdesc_${name};
-
-void
-init_registers_${name} (void)
-{
-  static struct target_desc tdesc_${name}_s;
-  struct target_desc *result = &tdesc_${name}_s;
-
   result->reg_defs = regs_${name};
   result->num_registers = sizeof (regs_${name}) / sizeof (regs_${name}[0]);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]