[binutils-gdb] [gdb/tdep] Factor out amd64_get_used_input_int_regs

Tom de Vries vries@sourceware.org
Fri Mar 7 08:25:36 GMT 2025


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

commit 0c1eecdfc6348ec9213ebbb42ddce78fc197a428
Author: Tom de Vries <tdevries@suse.de>
Date:   Fri Mar 7 09:25:33 2025 +0100

    [gdb/tdep] Factor out amd64_get_used_input_int_regs
    
    The function amd64_get_unused_input_int_reg consists of two parts:
    - finding the used int registers in an insn, and
    - picking an unused int register.
    
    Factor out the first part as new function amd64_get_used_input_int_regs.
    
    No functional changes.
    
    Tested on x86_64-linux.

Diff:
---
 gdb/amd64-tdep.c | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
index 0c3eae14371..dd0fa06f354 100644
--- a/gdb/amd64-tdep.c
+++ b/gdb/amd64-tdep.c
@@ -1206,13 +1206,11 @@ amd64_skip_prefixes (gdb_byte *insn)
   return insn;
 }
 
-/* Return an integer register in ALLOWED_REGS_MASK that is unused as an input
-   operand in INSN.  The register numbering of the result follows architecture
-   ordering, e.g. RDI = 7.  Return -1 if no register can be found.  */
+/* Return a register mask for the integer registers that are used as an input
+   operand in INSN.  */
 
-static int
-amd64_get_unused_input_int_reg (const struct amd64_insn *details,
-				uint32_t allowed_regs_mask)
+static uint32_t
+amd64_get_used_input_int_regs (const struct amd64_insn *details)
 {
   /* 1 bit for each reg */
   uint32_t used_regs_mask = 0;
@@ -1255,6 +1253,19 @@ amd64_get_unused_input_int_reg (const struct amd64_insn *details,
     }
 
   gdb_assert (used_regs_mask < 256);
+  return used_regs_mask;
+}
+
+/* Return an integer register in ALLOWED_REGS_MASK that is unused as an input
+   operand in INSN.  The register numbering of the result follows architecture
+   ordering, e.g. RDI = 7.  Return -1 if no register can be found.  */
+
+static int
+amd64_get_unused_input_int_reg (const struct amd64_insn *details,
+				uint32_t allowed_regs_mask)
+{
+  /* 1 bit for each reg */
+  uint32_t used_regs_mask = amd64_get_used_input_int_regs (details);
 
   /* Finally, find a free reg.  */
   {


More information about the Gdb-cvs mailing list