Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH c++ 3/5] mep: Add cast for int to enum conversion
  2015-10-11  4:37 [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast Simon Marchi
  2015-10-11  4:37 ` [PATCH c++ 4/5] mips: fix void*/gdb_byte* compilation errors Simon Marchi
  2015-10-11  4:37 ` [PATCH c++ 2/5] m32c: Split m32c_move_reg_t in read/write variants Simon Marchi
@ 2015-10-11  4:37 ` Simon Marchi
  2015-10-12 10:35   ` Yao Qi
  2015-10-11  4:44 ` [PATCH c++ 5/5] mips: " Simon Marchi
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 22+ messages in thread
From: Simon Marchi @ 2015-10-11  4:37 UTC (permalink / raw)
  To: gdb-patches; +Cc: Simon Marchi

Taken directly from Pedro's branch.

gdb/ChangeLog:

	* mep-tdep.c (current_me_module): Add cast.
	(mep_gdbarch_init): Likewise.
---
 gdb/mep-tdep.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/gdb/mep-tdep.c b/gdb/mep-tdep.c
index b6f242f..f7d33ca 100644
--- a/gdb/mep-tdep.c
+++ b/gdb/mep-tdep.c
@@ -848,7 +848,7 @@ current_me_module (void)
       ULONGEST regval;
       regcache_cooked_read_unsigned (get_current_regcache (),
 				     MEP_MODULE_REGNUM, &regval);
-      return regval;
+      return (CONFIG_ATTR) regval;
     }
   else
     return gdbarch_tdep (target_gdbarch ())->me_module;
@@ -2396,7 +2396,10 @@ mep_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
       /* The way to get the me_module code depends on the object file
          format.  At the moment, we only know how to handle ELF.  */
       if (bfd_get_flavour (info.abfd) == bfd_target_elf_flavour)
-        me_module = elf_elfheader (info.abfd)->e_flags & EF_MEP_INDEX_MASK;
+	{
+	  int flag = elf_elfheader (info.abfd)->e_flags & EF_MEP_INDEX_MASK;
+	  me_module = (CONFIG_ATTR) flag;
+	}
       else
         me_module = CONFIG_NONE;
     }
-- 
2.6.1


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast
@ 2015-10-11  4:37 Simon Marchi
  2015-10-11  4:37 ` [PATCH c++ 4/5] mips: fix void*/gdb_byte* compilation errors Simon Marchi
                   ` (6 more replies)
  0 siblings, 7 replies; 22+ messages in thread
From: Simon Marchi @ 2015-10-11  4:37 UTC (permalink / raw)
  To: gdb-patches; +Cc: Simon Marchi

There might be a cleaner sequence of function calls to do what is done
here (I don't know), but since I don't want to risk breaking anything,
it's safer to just add the required cast.

gdb/ChangeLog:

	* lm32-tdep.c (lm32_push_dummy_call): Add cast.
---
 gdb/lm32-tdep.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gdb/lm32-tdep.c b/gdb/lm32-tdep.c
index 25a7e1e..a0defad 100644
--- a/gdb/lm32-tdep.c
+++ b/gdb/lm32-tdep.c
@@ -289,7 +289,7 @@ lm32_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
 	regcache_cooked_write_unsigned (regcache, first_arg_reg + i, val);
       else
 	{
-	  write_memory (sp, (void *) &val, TYPE_LENGTH (arg_type));
+	  write_memory (sp, (const gdb_byte *) &val, TYPE_LENGTH (arg_type));
 	  sp -= 4;
 	}
     }
-- 
2.6.1


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [PATCH c++ 4/5] mips: fix void*/gdb_byte* compilation errors
  2015-10-11  4:37 [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast Simon Marchi
@ 2015-10-11  4:37 ` Simon Marchi
  2015-10-22 13:13   ` Pedro Alves
  2015-10-11  4:37 ` [PATCH c++ 2/5] m32c: Split m32c_move_reg_t in read/write variants Simon Marchi
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 22+ messages in thread
From: Simon Marchi @ 2015-10-11  4:37 UTC (permalink / raw)
  To: gdb-patches; +Cc: Simon Marchi

The error in mips64_linux_get_longjmp_target is fixed by changing "buf"
to be a gdb_byte*, as usual.  supply_32bit_reg and mips64_fill_gregset
do some more complicated things however, so it's safer just to add the
explicit cast and avoid changing the code too much.

gdb/ChangeLog:

	* mips-linux-tdep.c (mips64_linux_get_longjmp_target): Change type of
	buf to gdb_byte*.
	(supply_32bit_reg): Add cast.
	(mips64_fill_gregset): Likewise.
---
 gdb/mips-linux-tdep.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/gdb/mips-linux-tdep.c b/gdb/mips-linux-tdep.c
index a8c86bb..f7eaf34 100644
--- a/gdb/mips-linux-tdep.c
+++ b/gdb/mips-linux-tdep.c
@@ -120,7 +120,8 @@ supply_32bit_reg (struct regcache *regcache, int regnum, const void *addr)
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   gdb_byte buf[MAX_REGISTER_SIZE];
   store_signed_integer (buf, register_size (gdbarch, regnum), byte_order,
-			extract_signed_integer (addr, 4, byte_order));
+			extract_signed_integer ((const gdb_byte *) addr, 4,
+						byte_order));
   regcache_raw_supply (regcache, regnum, buf);
 }
 
@@ -334,7 +335,8 @@ mips64_linux_get_longjmp_target (struct frame_info *frame, CORE_ADDR *pc)
   CORE_ADDR jb_addr;
   struct gdbarch *gdbarch = get_frame_arch (frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  void *buf = alloca (gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT);
+  gdb_byte *buf
+    = (gdb_byte *) alloca (gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT);
   int element_size = gdbarch_ptr_bit (gdbarch) == 32 ? 4 : 8;
 
   jb_addr = get_frame_register_unsigned (frame, MIPS_A0_REGNUM);
@@ -475,7 +477,7 @@ mips64_fill_gregset (const struct regcache *regcache,
       val = extract_signed_integer (buf, register_size (gdbarch, regno),
 				    byte_order);
       dst = regp + regaddr;
-      store_signed_integer (dst, 8, byte_order, val);
+      store_signed_integer ((gdb_byte *) dst, 8, byte_order, val);
     }
 }
 
-- 
2.6.1


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [PATCH c++ 2/5] m32c: Split m32c_move_reg_t in read/write variants
  2015-10-11  4:37 [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast Simon Marchi
  2015-10-11  4:37 ` [PATCH c++ 4/5] mips: fix void*/gdb_byte* compilation errors Simon Marchi
@ 2015-10-11  4:37 ` Simon Marchi
  2015-10-12 10:47   ` Yao Qi
  2015-10-11  4:37 ` [PATCH c++ 3/5] mep: Add cast for int to enum conversion Simon Marchi
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 22+ messages in thread
From: Simon Marchi @ 2015-10-11  4:37 UTC (permalink / raw)
  To: gdb-patches; +Cc: Simon Marchi

This allows to avoid casting away the const qualification in
m32c_pseudo_register_write (which is the entry points for all other
register read/write functions).

Also, use gdb_byte* instead of void* to avoid casts when calling gdb
common memory functions.  It also allows to remove those "For adderss
arithmetic" local variables.

gdb/ChangeLog:

	* m32c-tdep.c (m32c_move_reg_t): Replace with...
	(m32c_write_reg_t): ...this and...
	(m32c_read_reg_t): ...this.
	(struct m32c_reg): Update types of read and write.
	(m32c_raw_read): Change declaration type to m32c_read_reg_t and
	adjust definition.
	(m32c_banked_read): Likewise.
	(m32c_sb_read): Likewise.
	(m32c_part_read): Likewise.
	(m32c_cat_read): Likewise.
	(m32c_r3r2r1r0_read): Likewise.
	(m32c_raw_write): Change declaration type to m32c_write_reg_t
	and adjust definition.
	(m32c_banked_write): Likewise.
	(m32c_sb_write): Likewise.
	(m32c_part_write): Likewise.
	(m32c_cat_write): Likewise.
	(m32c_r3r2r1r0_write): Likewise.
---
 gdb/m32c-tdep.c | 130 +++++++++++++++++++++++++++++---------------------------
 1 file changed, 68 insertions(+), 62 deletions(-)

diff --git a/gdb/m32c-tdep.c b/gdb/m32c-tdep.c
index f2d060a..40abe9d 100644
--- a/gdb/m32c-tdep.c
+++ b/gdb/m32c-tdep.c
@@ -46,9 +46,13 @@ struct m32c_reg;
 
 /* The type of a function that moves the value of REG between CACHE or
    BUF --- in either direction.  */
-typedef enum register_status (m32c_move_reg_t) (struct m32c_reg *reg,
+typedef enum register_status (m32c_write_reg_t) (struct m32c_reg *reg,
+						 struct regcache *cache,
+						 const gdb_byte *buf);
+
+typedef enum register_status (m32c_read_reg_t) (struct m32c_reg *reg,
 						struct regcache *cache,
-						void *buf);
+						gdb_byte *buf);
 
 struct m32c_reg
 {
@@ -78,7 +82,8 @@ struct m32c_reg
 
   /* Functions to read its value from a regcache, and write its value
      to a regcache.  */
-  m32c_move_reg_t *read, *write;
+  m32c_read_reg_t *read;
+  m32c_write_reg_t *write;
 
   /* Data for READ and WRITE functions.  The exact meaning depends on
      the specific functions selected; see the comments for those
@@ -297,18 +302,24 @@ m32c_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
 
 
 /* Register move functions.  We declare them here using
-   m32c_move_reg_t to check the types.  */
-static m32c_move_reg_t m32c_raw_read,      m32c_raw_write;
-static m32c_move_reg_t m32c_banked_read,   m32c_banked_write;
-static m32c_move_reg_t m32c_sb_read, 	   m32c_sb_write;
-static m32c_move_reg_t m32c_part_read,     m32c_part_write;
-static m32c_move_reg_t m32c_cat_read,      m32c_cat_write;
-static m32c_move_reg_t m32c_r3r2r1r0_read, m32c_r3r2r1r0_write;
-
+   m32c_{read,write}_reg_t to check the types.  */
+static m32c_read_reg_t m32c_raw_read,
+		       m32c_banked_read,
+		       m32c_sb_read,
+		       m32c_part_read,
+		       m32c_cat_read,
+		       m32c_r3r2r1r0_read;
+
+static m32c_write_reg_t m32c_raw_write,
+			m32c_banked_write,
+			m32c_sb_write,
+			m32c_part_write,
+			m32c_cat_write,
+			m32c_r3r2r1r0_write;
 
 /* Copy the value of the raw register REG from CACHE to BUF.  */
 static enum register_status
-m32c_raw_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_raw_read (struct m32c_reg *reg, struct regcache *cache, gdb_byte *buf)
 {
   return regcache_raw_read (cache, reg->num, buf);
 }
@@ -316,9 +327,10 @@ m32c_raw_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
 
 /* Copy the value of the raw register REG from BUF to CACHE.  */
 static enum register_status
-m32c_raw_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_raw_write (struct m32c_reg *reg, struct regcache *cache,
+		const gdb_byte *buf)
 {
-  regcache_raw_write (cache, reg->num, (const void *) buf);
+  regcache_raw_write (cache, reg->num, buf);
 
   return REG_VALID;
 }
@@ -348,7 +360,7 @@ m32c_banked_register (struct m32c_reg *reg, struct regcache *cache)
    masked in REG->n set, then read REG->ry.  Otherwise, read
    REG->rx.  */
 static enum register_status
-m32c_banked_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_banked_read (struct m32c_reg *reg, struct regcache *cache, gdb_byte *buf)
 {
   struct m32c_reg *bank_reg = m32c_banked_register (reg, cache);
   return regcache_raw_read (cache, bank_reg->num, buf);
@@ -360,10 +372,11 @@ m32c_banked_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
    masked in REG->n set, then write REG->ry.  Otherwise, write
    REG->rx.  */
 static enum register_status
-m32c_banked_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_banked_write (struct m32c_reg *reg, struct regcache *cache,
+		   const gdb_byte *buf)
 {
   struct m32c_reg *bank_reg = m32c_banked_register (reg, cache);
-  regcache_raw_write (cache, bank_reg->num, (const void *) buf);
+  regcache_raw_write (cache, bank_reg->num, buf);
 
   return REG_VALID;
 }
@@ -372,7 +385,7 @@ m32c_banked_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
 /* Move the value of SB from CACHE to BUF.  On bfd_mach_m32c, SB is a
    banked register; on bfd_mach_m16c, it's not.  */
 static enum register_status
-m32c_sb_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_sb_read (struct m32c_reg *reg, struct regcache *cache, gdb_byte *buf)
 {
   if (gdbarch_bfd_arch_info (reg->arch)->mach == bfd_mach_m16c)
     return m32c_raw_read (reg->rx, cache, buf);
@@ -384,7 +397,7 @@ m32c_sb_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
 /* Move the value of SB from BUF to CACHE.  On bfd_mach_m32c, SB is a
    banked register; on bfd_mach_m16c, it's not.  */
 static enum register_status
-m32c_sb_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_sb_write (struct m32c_reg *reg, struct regcache *cache, const gdb_byte *buf)
 {
   if (gdbarch_bfd_arch_info (reg->arch)->mach == bfd_mach_m16c)
     m32c_raw_write (reg->rx, cache, buf);
@@ -437,7 +450,7 @@ m32c_find_part (struct m32c_reg *reg, int *offset_p, int *len_p)
    REG->type values, where higher indices refer to more significant
    bits, read the value of the REG->n'th element.  */
 static enum register_status
-m32c_part_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_part_read (struct m32c_reg *reg, struct regcache *cache, gdb_byte *buf)
 {
   int offset, len;
 
@@ -452,7 +465,8 @@ m32c_part_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
    values, where higher indices refer to more significant bits, write
    the value of the REG->n'th element.  */
 static enum register_status
-m32c_part_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_part_write (struct m32c_reg *reg, struct regcache *cache,
+		 const gdb_byte *buf)
 {
   int offset, len;
 
@@ -467,27 +481,25 @@ m32c_part_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
    concatenation of the values of the registers REG->rx and REG->ry,
    with REG->rx contributing the more significant bits.  */
 static enum register_status
-m32c_cat_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_cat_read (struct m32c_reg *reg, struct regcache *cache, gdb_byte *buf)
 {
   int high_bytes = TYPE_LENGTH (reg->rx->type);
   int low_bytes  = TYPE_LENGTH (reg->ry->type);
-  /* For address arithmetic.  */
-  unsigned char *cbuf = buf;
   enum register_status status;
 
   gdb_assert (TYPE_LENGTH (reg->type) == high_bytes + low_bytes);
 
   if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
     {
-      status = regcache_cooked_read (cache, reg->rx->num, cbuf);
+      status = regcache_cooked_read (cache, reg->rx->num, buf);
       if (status == REG_VALID)
-	status = regcache_cooked_read (cache, reg->ry->num, cbuf + high_bytes);
+	status = regcache_cooked_read (cache, reg->ry->num, buf + high_bytes);
     }
   else
     {
-      status = regcache_cooked_read (cache, reg->rx->num, cbuf + low_bytes);
+      status = regcache_cooked_read (cache, reg->rx->num, buf + low_bytes);
       if (status == REG_VALID)
-	status = regcache_cooked_read (cache, reg->ry->num, cbuf);
+	status = regcache_cooked_read (cache, reg->ry->num, buf);
     }
 
   return status;
@@ -498,24 +510,23 @@ m32c_cat_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
    concatenation of the values of the registers REG->rx and REG->ry,
    with REG->rx contributing the more significant bits.  */
 static enum register_status
-m32c_cat_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_cat_write (struct m32c_reg *reg, struct regcache *cache,
+		const gdb_byte *buf)
 {
   int high_bytes = TYPE_LENGTH (reg->rx->type);
   int low_bytes  = TYPE_LENGTH (reg->ry->type);
-  /* For address arithmetic.  */
-  unsigned char *cbuf = buf;
 
   gdb_assert (TYPE_LENGTH (reg->type) == high_bytes + low_bytes);
 
   if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
     {
-      regcache_cooked_write (cache, reg->rx->num, cbuf);
-      regcache_cooked_write (cache, reg->ry->num, cbuf + high_bytes);
+      regcache_cooked_write (cache, reg->rx->num, buf);
+      regcache_cooked_write (cache, reg->ry->num, buf + high_bytes);
     }
   else
     {
-      regcache_cooked_write (cache, reg->rx->num, cbuf + low_bytes);
-      regcache_cooked_write (cache, reg->ry->num, cbuf);
+      regcache_cooked_write (cache, reg->rx->num, buf + low_bytes);
+      regcache_cooked_write (cache, reg->ry->num, buf);
     }
 
   return REG_VALID;
@@ -526,34 +537,31 @@ m32c_cat_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
    the concatenation (from most significant to least) of r3, r2, r1,
    and r0.  */
 static enum register_status
-m32c_r3r2r1r0_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_r3r2r1r0_read (struct m32c_reg *reg, struct regcache *cache, gdb_byte *buf)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (reg->arch);
   int len = TYPE_LENGTH (tdep->r0->type);
   enum register_status status;
 
-  /* For address arithmetic.  */
-  unsigned char *cbuf = buf;
-
   if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
     {
-      status = regcache_cooked_read (cache, tdep->r0->num, cbuf + len * 3);
+      status = regcache_cooked_read (cache, tdep->r0->num, buf + len * 3);
       if (status == REG_VALID)
-	status = regcache_cooked_read (cache, tdep->r1->num, cbuf + len * 2);
+	status = regcache_cooked_read (cache, tdep->r1->num, buf + len * 2);
       if (status == REG_VALID)
-	status = regcache_cooked_read (cache, tdep->r2->num, cbuf + len * 1);
+	status = regcache_cooked_read (cache, tdep->r2->num, buf + len * 1);
       if (status == REG_VALID)
-	status = regcache_cooked_read (cache, tdep->r3->num, cbuf);
+	status = regcache_cooked_read (cache, tdep->r3->num, buf);
     }
   else
     {
-      status = regcache_cooked_read (cache, tdep->r0->num, cbuf);
+      status = regcache_cooked_read (cache, tdep->r0->num, buf);
       if (status == REG_VALID)
-	status = regcache_cooked_read (cache, tdep->r1->num, cbuf + len * 1);
+	status = regcache_cooked_read (cache, tdep->r1->num, buf + len * 1);
       if (status == REG_VALID)
-	status = regcache_cooked_read (cache, tdep->r2->num, cbuf + len * 2);
+	status = regcache_cooked_read (cache, tdep->r2->num, buf + len * 2);
       if (status == REG_VALID)
-	status = regcache_cooked_read (cache, tdep->r3->num, cbuf + len * 3);
+	status = regcache_cooked_read (cache, tdep->r3->num, buf + len * 3);
     }
 
   return status;
@@ -564,27 +572,25 @@ m32c_r3r2r1r0_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
    the concatenation (from most significant to least) of r3, r2, r1,
    and r0.  */
 static enum register_status
-m32c_r3r2r1r0_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_r3r2r1r0_write (struct m32c_reg *reg, struct regcache *cache,
+		     const gdb_byte *buf)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (reg->arch);
   int len = TYPE_LENGTH (tdep->r0->type);
 
-  /* For address arithmetic.  */
-  unsigned char *cbuf = buf;
-
   if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
     {
-      regcache_cooked_write (cache, tdep->r0->num, cbuf + len * 3);
-      regcache_cooked_write (cache, tdep->r1->num, cbuf + len * 2);
-      regcache_cooked_write (cache, tdep->r2->num, cbuf + len * 1);
-      regcache_cooked_write (cache, tdep->r3->num, cbuf);
+      regcache_cooked_write (cache, tdep->r0->num, buf + len * 3);
+      regcache_cooked_write (cache, tdep->r1->num, buf + len * 2);
+      regcache_cooked_write (cache, tdep->r2->num, buf + len * 1);
+      regcache_cooked_write (cache, tdep->r3->num, buf);
     }
   else
     {
-      regcache_cooked_write (cache, tdep->r0->num, cbuf);
-      regcache_cooked_write (cache, tdep->r1->num, cbuf + len * 1);
-      regcache_cooked_write (cache, tdep->r2->num, cbuf + len * 2);
-      regcache_cooked_write (cache, tdep->r3->num, cbuf + len * 3);
+      regcache_cooked_write (cache, tdep->r0->num, buf);
+      regcache_cooked_write (cache, tdep->r1->num, buf + len * 1);
+      regcache_cooked_write (cache, tdep->r2->num, buf + len * 2);
+      regcache_cooked_write (cache, tdep->r3->num, buf + len * 3);
     }
 
   return REG_VALID;
@@ -623,7 +629,7 @@ m32c_pseudo_register_write (struct gdbarch *arch,
   gdb_assert (arch == tdep->regs[cookednum].arch);
   reg = &tdep->regs[cookednum];
 
-  reg->write (reg, cache, (void *) buf);
+  reg->write (reg, cache, buf);
 }
 
 
@@ -634,8 +640,8 @@ add_reg (struct gdbarch *arch,
 	 const char *name,
 	 struct type *type,
 	 int sim_num,
-	 m32c_move_reg_t *read,
-	 m32c_move_reg_t *write,
+	 m32c_read_reg_t *read,
+	 m32c_write_reg_t *write,
 	 struct m32c_reg *rx,
 	 struct m32c_reg *ry,
 	 int n)
-- 
2.6.1


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [PATCH c++ 5/5] mips: Add cast for int to enum conversion
  2015-10-11  4:37 [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast Simon Marchi
                   ` (2 preceding siblings ...)
  2015-10-11  4:37 ` [PATCH c++ 3/5] mep: Add cast for int to enum conversion Simon Marchi
@ 2015-10-11  4:44 ` Simon Marchi
  2015-10-12 10:54   ` Pedro Alves
  2015-10-12 10:52 ` [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast Yao Qi
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 22+ messages in thread
From: Simon Marchi @ 2015-10-11  4:44 UTC (permalink / raw)
  To: gdb-patches; +Cc: Simon Marchi

This patch is taken directly from Pedro's branch.

/home/pedro/gdb/mygit/src/gdb/mips-tdep.c: In function ‘ULONGEST mips_fetch_instruction(gdbarch*, mips_isa, CORE_ADDR, int*)’:
/home/pedro/gdb/mygit/src/gdb/mips-tdep.c:1460:28: error: invalid conversion from ‘int’ to ‘target_xfer_status’ [-fpermissive]
  memory_error (status, addr);

gdb/ChangeLog:

	* mips-tdep.c (mips_fetch_instruction): Add cast.
---
 gdb/mips-tdep.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index 2275138..73b9221 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -1456,7 +1456,7 @@ mips_fetch_instruction (struct gdbarch *gdbarch,
   if (status)
     {
       if (statusp == NULL)
-	memory_error (status, addr);
+	memory_error ((enum target_xfer_status) status, addr);
       return 0;
     }
   return extract_unsigned_integer (buf, instlen, byte_order);
-- 
2.6.1


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH c++ 3/5] mep: Add cast for int to enum conversion
  2015-10-11  4:37 ` [PATCH c++ 3/5] mep: Add cast for int to enum conversion Simon Marchi
@ 2015-10-12 10:35   ` Yao Qi
  2015-10-12 16:43     ` Simon Marchi
  0 siblings, 1 reply; 22+ messages in thread
From: Yao Qi @ 2015-10-12 10:35 UTC (permalink / raw)
  To: Simon Marchi; +Cc: gdb-patches

Simon Marchi <simon.marchi@polymtl.ca> writes:

Hi Simon,
Patch is OK, one nit below,

> @@ -2396,7 +2396,10 @@ mep_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
>        /* The way to get the me_module code depends on the object file
>           format.  At the moment, we only know how to handle ELF.  */
>        if (bfd_get_flavour (info.abfd) == bfd_target_elf_flavour)
> -        me_module = elf_elfheader (info.abfd)->e_flags & EF_MEP_INDEX_MASK;
> +	{
> +	  int flag = elf_elfheader (info.abfd)->e_flags & EF_MEP_INDEX_MASK;

A blank line is needed here.

> +	  me_module = (CONFIG_ATTR) flag;
> +	}
>        else
>          me_module = CONFIG_NONE;
>      }

-- 
Yao (齐尧)


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH c++ 2/5] m32c: Split m32c_move_reg_t in read/write variants
  2015-10-11  4:37 ` [PATCH c++ 2/5] m32c: Split m32c_move_reg_t in read/write variants Simon Marchi
@ 2015-10-12 10:47   ` Yao Qi
  2015-10-12 16:42     ` Simon Marchi
  0 siblings, 1 reply; 22+ messages in thread
From: Yao Qi @ 2015-10-12 10:47 UTC (permalink / raw)
  To: Simon Marchi; +Cc: gdb-patches

Simon Marchi <simon.marchi@polymtl.ca> writes:

>  /* Register move functions.  We declare them here using
> -   m32c_move_reg_t to check the types.  */
> -static m32c_move_reg_t m32c_raw_read,      m32c_raw_write;
> -static m32c_move_reg_t m32c_banked_read,   m32c_banked_write;
> -static m32c_move_reg_t m32c_sb_read, 	   m32c_sb_write;
> -static m32c_move_reg_t m32c_part_read,     m32c_part_write;
> -static m32c_move_reg_t m32c_cat_read,      m32c_cat_write;
> -static m32c_move_reg_t m32c_r3r2r1r0_read, m32c_r3r2r1r0_write;
> -
> +   m32c_{read,write}_reg_t to check the types.  */
> +static m32c_read_reg_t m32c_raw_read,
> +		       m32c_banked_read,
> +		       m32c_sb_read,
> +		       m32c_part_read,
> +		       m32c_cat_read,
> +		       m32c_r3r2r1r0_read;
> +
> +static m32c_write_reg_t m32c_raw_write,
> +			m32c_banked_write,
> +			m32c_sb_write,
> +			m32c_part_write,
> +			m32c_cat_write,
> +			m32c_r3r2r1r0_write;

I don't think this complies to GNU Coding Standard, which says
"Don’t declare multiple variables in one declaration that spans
lines. Start a new declaration on each line, instead."

Otherwise, patch is OK.

-- 
Yao (齐尧)


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast
  2015-10-11  4:37 [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast Simon Marchi
                   ` (3 preceding siblings ...)
  2015-10-11  4:44 ` [PATCH c++ 5/5] mips: " Simon Marchi
@ 2015-10-12 10:52 ` Yao Qi
  2015-10-12 11:10 ` Pedro Alves
  2015-10-22  9:59 ` Simon Marchi
  6 siblings, 0 replies; 22+ messages in thread
From: Yao Qi @ 2015-10-12 10:52 UTC (permalink / raw)
  To: Simon Marchi; +Cc: gdb-patches

Simon Marchi <simon.marchi@polymtl.ca> writes:

> There might be a cleaner sequence of function calls to do what is done
> here (I don't know), but since I don't want to risk breaking anything,
> it's safer to just add the required cast.
>
> gdb/ChangeLog:
>
> 	* lm32-tdep.c (lm32_push_dummy_call): Add cast.

Patch is OK.

-- 
Yao (齐尧)


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH c++ 5/5] mips: Add cast for int to enum conversion
  2015-10-11  4:44 ` [PATCH c++ 5/5] mips: " Simon Marchi
@ 2015-10-12 10:54   ` Pedro Alves
  2015-10-12 16:28     ` Simon Marchi
  0 siblings, 1 reply; 22+ messages in thread
From: Pedro Alves @ 2015-10-12 10:54 UTC (permalink / raw)
  To: Simon Marchi, gdb-patches

On 10/11/2015 05:37 AM, Simon Marchi wrote:
> This patch is taken directly from Pedro's branch.
> 
> /home/pedro/gdb/mygit/src/gdb/mips-tdep.c: In function ‘ULONGEST mips_fetch_instruction(gdbarch*, mips_isa, CORE_ADDR, int*)’:
> /home/pedro/gdb/mygit/src/gdb/mips-tdep.c:1460:28: error: invalid conversion from ‘int’ to ‘target_xfer_status’ [-fpermissive]
>   memory_error (status, addr);
> 
> gdb/ChangeLog:
> 
> 	* mips-tdep.c (mips_fetch_instruction): Add cast.
> ---
>  gdb/mips-tdep.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
> index 2275138..73b9221 100644

> --- a/gdb/mips-tdep.c
> +++ b/gdb/mips-tdep.c
> @@ -1456,7 +1456,7 @@ mips_fetch_instruction (struct gdbarch *gdbarch,
>    if (status)
>      {
>        if (statusp == NULL)
> -	memory_error (status, addr);
> +	memory_error ((enum target_xfer_status) status, addr);
>        return 0;
>      }

Please don't.  As discussed a while ago in IRC, I think we should
stop making target_read_memory & friends return a target_xfer_status.

I have a different patch in the branch to do that:

 https://github.com/palves/gdb/commit/22e5f84529cbe06a7b5c7fbbf662640b84e5cfb9

Thanks,
Pedro Alves


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast
  2015-10-11  4:37 [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast Simon Marchi
                   ` (4 preceding siblings ...)
  2015-10-12 10:52 ` [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast Yao Qi
@ 2015-10-12 11:10 ` Pedro Alves
  2015-10-12 12:18   ` Jon Beniston
  2015-10-13 17:14   ` Simon Marchi
  2015-10-22  9:59 ` Simon Marchi
  6 siblings, 2 replies; 22+ messages in thread
From: Pedro Alves @ 2015-10-12 11:10 UTC (permalink / raw)
  To: Simon Marchi, gdb-patches; +Cc: Jon Beniston

On 10/11/2015 05:37 AM, Simon Marchi wrote:
> There might be a cleaner sequence of function calls to do what is done
> here (I don't know), but since I don't want to risk breaking anything,
> it's safer to just add the required cast.
> 
> gdb/ChangeLog:
> 
> 	* lm32-tdep.c (lm32_push_dummy_call): Add cast.
> ---
>  gdb/lm32-tdep.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/gdb/lm32-tdep.c b/gdb/lm32-tdep.c
> index 25a7e1e..a0defad 100644
> --- a/gdb/lm32-tdep.c
> +++ b/gdb/lm32-tdep.c
> @@ -289,7 +289,7 @@ lm32_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
>  	regcache_cooked_write_unsigned (regcache, first_arg_reg + i, val);
>        else
>  	{
> -	  write_memory (sp, (void *) &val, TYPE_LENGTH (arg_type));
> +	  write_memory (sp, (const gdb_byte *) &val, TYPE_LENGTH (arg_type));

This reveals that the code has a host-dependency.  It is assuming the
byte order of the target is the same as host's.

Please replace this with a call to write_memory_unsigned_integer.

Looks like this port hasn't been touched ever since it was
originally contributed.  Jon, is there still interest in this port?

Thanks,
Pedro Alves


^ permalink raw reply	[flat|nested] 22+ messages in thread

* RE: [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast
  2015-10-12 11:10 ` Pedro Alves
@ 2015-10-12 12:18   ` Jon Beniston
  2015-10-13 17:14   ` Simon Marchi
  1 sibling, 0 replies; 22+ messages in thread
From: Jon Beniston @ 2015-10-12 12:18 UTC (permalink / raw)
  To: 'Pedro Alves', 'Simon Marchi', gdb-patches

Hi Pedro,

Yes, I believe people are still using this port. (Probably no one on a host
with different byte ordering though!)

Regards,
Jon

-----Original Message-----
From: Pedro Alves [mailto:palves@redhat.com] 
Sent: 12 October 2015 12:11
To: Simon Marchi; gdb-patches@sourceware.org
Cc: Jon Beniston
Subject: Re: [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast

On 10/11/2015 05:37 AM, Simon Marchi wrote:
> There might be a cleaner sequence of function calls to do what is done 
> here (I don't know), but since I don't want to risk breaking anything, 
> it's safer to just add the required cast.
> 
> gdb/ChangeLog:
> 
> 	* lm32-tdep.c (lm32_push_dummy_call): Add cast.
> ---
>  gdb/lm32-tdep.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/gdb/lm32-tdep.c b/gdb/lm32-tdep.c index 25a7e1e..a0defad 
> 100644
> --- a/gdb/lm32-tdep.c
> +++ b/gdb/lm32-tdep.c
> @@ -289,7 +289,7 @@ lm32_push_dummy_call (struct gdbarch *gdbarch, struct
value *function,
>  	regcache_cooked_write_unsigned (regcache, first_arg_reg + i, val);
>        else
>  	{
> -	  write_memory (sp, (void *) &val, TYPE_LENGTH (arg_type));
> +	  write_memory (sp, (const gdb_byte *) &val, TYPE_LENGTH 
> +(arg_type));

This reveals that the code has a host-dependency.  It is assuming the byte
order of the target is the same as host's.

Please replace this with a call to write_memory_unsigned_integer.

Looks like this port hasn't been touched ever since it was originally
contributed.  Jon, is there still interest in this port?

Thanks,
Pedro Alves


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH c++ 5/5] mips: Add cast for int to enum conversion
  2015-10-12 10:54   ` Pedro Alves
@ 2015-10-12 16:28     ` Simon Marchi
  0 siblings, 0 replies; 22+ messages in thread
From: Simon Marchi @ 2015-10-12 16:28 UTC (permalink / raw)
  To: Pedro Alves, Simon Marchi, gdb-patches


On 12/10/15 06:54 AM, Pedro Alves wrote:
> Please don't.  As discussed a while ago in IRC, I think we should
> stop making target_read_memory & friends return a target_xfer_status.
> 
> I have a different patch in the branch to do that:
> 
>  https://github.com/palves/gdb/commit/22e5f84529cbe06a7b5c7fbbf662640b84e5cfb9

Ok.  I remember that discussion, I didn't know that you followed up on
it.  Great!


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH c++ 2/5] m32c: Split m32c_move_reg_t in read/write variants
  2015-10-12 10:47   ` Yao Qi
@ 2015-10-12 16:42     ` Simon Marchi
  0 siblings, 0 replies; 22+ messages in thread
From: Simon Marchi @ 2015-10-12 16:42 UTC (permalink / raw)
  To: Yao Qi, Simon Marchi; +Cc: gdb-patches



On 12/10/15 06:47 AM, Yao Qi wrote:
> Simon Marchi <simon.marchi@polymtl.ca> writes:
> 
>>  /* Register move functions.  We declare them here using
>> -   m32c_move_reg_t to check the types.  */
>> -static m32c_move_reg_t m32c_raw_read,      m32c_raw_write;
>> -static m32c_move_reg_t m32c_banked_read,   m32c_banked_write;
>> -static m32c_move_reg_t m32c_sb_read, 	   m32c_sb_write;
>> -static m32c_move_reg_t m32c_part_read,     m32c_part_write;
>> -static m32c_move_reg_t m32c_cat_read,      m32c_cat_write;
>> -static m32c_move_reg_t m32c_r3r2r1r0_read, m32c_r3r2r1r0_write;
>> -
>> +   m32c_{read,write}_reg_t to check the types.  */
>> +static m32c_read_reg_t m32c_raw_read,
>> +		       m32c_banked_read,
>> +		       m32c_sb_read,
>> +		       m32c_part_read,
>> +		       m32c_cat_read,
>> +		       m32c_r3r2r1r0_read;
>> +
>> +static m32c_write_reg_t m32c_raw_write,
>> +			m32c_banked_write,
>> +			m32c_sb_write,
>> +			m32c_part_write,
>> +			m32c_cat_write,
>> +			m32c_r3r2r1r0_write;
> 
> I don't think this complies to GNU Coding Standard, which says
> "Don’t declare multiple variables in one declaration that spans
> lines. Start a new declaration on each line, instead."
> 
> Otherwise, patch is OK.
> 

Thanks, pushed with that change:


From 6da660c76dd7c2998d847d2c978a293f13105eea Mon Sep 17 00:00:00 2001
From: Simon Marchi <simon.marchi@polymtl.ca>
Date: Mon, 12 Oct 2015 12:39:40 -0400
Subject: [PATCH] m32c: Split m32c_move_reg_t in read/write variants

This allows to avoid casting away the const qualification in
m32c_pseudo_register_write (which is the entry points for all other
register read/write functions).

Also, use gdb_byte* instead of void* to avoid casts when calling gdb
common memory functions.  It also allows to remove those "For adderss
arithmetic" local variables.

gdb/ChangeLog:

	* m32c-tdep.c (m32c_move_reg_t): Replace with...
	(m32c_write_reg_t): ...this and...
	(m32c_read_reg_t): ...this.
	(struct m32c_reg): Update types of read and write.
	(m32c_raw_read): Change declaration type to m32c_read_reg_t and
	adjust definition.
	(m32c_banked_read): Likewise.
	(m32c_sb_read): Likewise.
	(m32c_part_read): Likewise.
	(m32c_cat_read): Likewise.
	(m32c_r3r2r1r0_read): Likewise.
	(m32c_raw_write): Change declaration type to m32c_write_reg_t
	and adjust definition.
	(m32c_banked_write): Likewise.
	(m32c_sb_write): Likewise.
	(m32c_part_write): Likewise.
	(m32c_cat_write): Likewise.
	(m32c_r3r2r1r0_write): Likewise.
---
 gdb/ChangeLog   |  21 +++++++++
 gdb/m32c-tdep.c | 130 +++++++++++++++++++++++++++++---------------------------
 2 files changed, 89 insertions(+), 62 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 6825b7e..acfddef 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,26 @@
 2015-10-12  Simon Marchi  <simon.marchi@polymtl.ca>

+	* m32c-tdep.c (m32c_move_reg_t): Replace with...
+	(m32c_write_reg_t): ...this and...
+	(m32c_read_reg_t): ...this.
+	(struct m32c_reg): Update types of read and write.
+	(m32c_raw_read): Change declaration type to m32c_read_reg_t and
+	adjust definition.
+	(m32c_banked_read): Likewise.
+	(m32c_sb_read): Likewise.
+	(m32c_part_read): Likewise.
+	(m32c_cat_read): Likewise.
+	(m32c_r3r2r1r0_read): Likewise.
+	(m32c_raw_write): Change declaration type to m32c_write_reg_t
+	and adjust definition.
+	(m32c_banked_write): Likewise.
+	(m32c_sb_write): Likewise.
+	(m32c_part_write): Likewise.
+	(m32c_cat_write): Likewise.
+	(m32c_r3r2r1r0_write): Likewise.
+
+2015-10-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
 	* aarch64-linux-tdep.c (aarch64_linux_syscall_record): Add cast.

 2015-10-12  Simon Marchi  <simon.marchi@polymtl.ca>
diff --git a/gdb/m32c-tdep.c b/gdb/m32c-tdep.c
index f2d060a..e31397c 100644
--- a/gdb/m32c-tdep.c
+++ b/gdb/m32c-tdep.c
@@ -46,9 +46,13 @@ struct m32c_reg;

 /* The type of a function that moves the value of REG between CACHE or
    BUF --- in either direction.  */
-typedef enum register_status (m32c_move_reg_t) (struct m32c_reg *reg,
+typedef enum register_status (m32c_write_reg_t) (struct m32c_reg *reg,
+						 struct regcache *cache,
+						 const gdb_byte *buf);
+
+typedef enum register_status (m32c_read_reg_t) (struct m32c_reg *reg,
 						struct regcache *cache,
-						void *buf);
+						gdb_byte *buf);

 struct m32c_reg
 {
@@ -78,7 +82,8 @@ struct m32c_reg

   /* Functions to read its value from a regcache, and write its value
      to a regcache.  */
-  m32c_move_reg_t *read, *write;
+  m32c_read_reg_t *read;
+  m32c_write_reg_t *write;

   /* Data for READ and WRITE functions.  The exact meaning depends on
      the specific functions selected; see the comments for those
@@ -297,18 +302,24 @@ m32c_register_reggroup_p (struct gdbarch *gdbarch, int regnum,


 /* Register move functions.  We declare them here using
-   m32c_move_reg_t to check the types.  */
-static m32c_move_reg_t m32c_raw_read,      m32c_raw_write;
-static m32c_move_reg_t m32c_banked_read,   m32c_banked_write;
-static m32c_move_reg_t m32c_sb_read, 	   m32c_sb_write;
-static m32c_move_reg_t m32c_part_read,     m32c_part_write;
-static m32c_move_reg_t m32c_cat_read,      m32c_cat_write;
-static m32c_move_reg_t m32c_r3r2r1r0_read, m32c_r3r2r1r0_write;
-
+   m32c_{read,write}_reg_t to check the types.  */
+static m32c_read_reg_t m32c_raw_read;
+static m32c_read_reg_t m32c_banked_read;
+static m32c_read_reg_t m32c_sb_read;
+static m32c_read_reg_t m32c_part_read;
+static m32c_read_reg_t m32c_cat_read;
+static m32c_read_reg_t m32c_r3r2r1r0_read;
+
+static m32c_write_reg_t m32c_raw_write;
+static m32c_write_reg_t m32c_banked_write;
+static m32c_write_reg_t m32c_sb_write;
+static m32c_write_reg_t m32c_part_write;
+static m32c_write_reg_t m32c_cat_write;
+static m32c_write_reg_t m32c_r3r2r1r0_write;

 /* Copy the value of the raw register REG from CACHE to BUF.  */
 static enum register_status
-m32c_raw_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_raw_read (struct m32c_reg *reg, struct regcache *cache, gdb_byte *buf)
 {
   return regcache_raw_read (cache, reg->num, buf);
 }
@@ -316,9 +327,10 @@ m32c_raw_read (struct m32c_reg *reg, struct regcache *cache, void *buf)

 /* Copy the value of the raw register REG from BUF to CACHE.  */
 static enum register_status
-m32c_raw_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_raw_write (struct m32c_reg *reg, struct regcache *cache,
+		const gdb_byte *buf)
 {
-  regcache_raw_write (cache, reg->num, (const void *) buf);
+  regcache_raw_write (cache, reg->num, buf);

   return REG_VALID;
 }
@@ -348,7 +360,7 @@ m32c_banked_register (struct m32c_reg *reg, struct regcache *cache)
    masked in REG->n set, then read REG->ry.  Otherwise, read
    REG->rx.  */
 static enum register_status
-m32c_banked_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_banked_read (struct m32c_reg *reg, struct regcache *cache, gdb_byte *buf)
 {
   struct m32c_reg *bank_reg = m32c_banked_register (reg, cache);
   return regcache_raw_read (cache, bank_reg->num, buf);
@@ -360,10 +372,11 @@ m32c_banked_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
    masked in REG->n set, then write REG->ry.  Otherwise, write
    REG->rx.  */
 static enum register_status
-m32c_banked_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_banked_write (struct m32c_reg *reg, struct regcache *cache,
+		   const gdb_byte *buf)
 {
   struct m32c_reg *bank_reg = m32c_banked_register (reg, cache);
-  regcache_raw_write (cache, bank_reg->num, (const void *) buf);
+  regcache_raw_write (cache, bank_reg->num, buf);

   return REG_VALID;
 }
@@ -372,7 +385,7 @@ m32c_banked_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
 /* Move the value of SB from CACHE to BUF.  On bfd_mach_m32c, SB is a
    banked register; on bfd_mach_m16c, it's not.  */
 static enum register_status
-m32c_sb_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_sb_read (struct m32c_reg *reg, struct regcache *cache, gdb_byte *buf)
 {
   if (gdbarch_bfd_arch_info (reg->arch)->mach == bfd_mach_m16c)
     return m32c_raw_read (reg->rx, cache, buf);
@@ -384,7 +397,7 @@ m32c_sb_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
 /* Move the value of SB from BUF to CACHE.  On bfd_mach_m32c, SB is a
    banked register; on bfd_mach_m16c, it's not.  */
 static enum register_status
-m32c_sb_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_sb_write (struct m32c_reg *reg, struct regcache *cache, const gdb_byte *buf)
 {
   if (gdbarch_bfd_arch_info (reg->arch)->mach == bfd_mach_m16c)
     m32c_raw_write (reg->rx, cache, buf);
@@ -437,7 +450,7 @@ m32c_find_part (struct m32c_reg *reg, int *offset_p, int *len_p)
    REG->type values, where higher indices refer to more significant
    bits, read the value of the REG->n'th element.  */
 static enum register_status
-m32c_part_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_part_read (struct m32c_reg *reg, struct regcache *cache, gdb_byte *buf)
 {
   int offset, len;

@@ -452,7 +465,8 @@ m32c_part_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
    values, where higher indices refer to more significant bits, write
    the value of the REG->n'th element.  */
 static enum register_status
-m32c_part_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_part_write (struct m32c_reg *reg, struct regcache *cache,
+		 const gdb_byte *buf)
 {
   int offset, len;

@@ -467,27 +481,25 @@ m32c_part_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
    concatenation of the values of the registers REG->rx and REG->ry,
    with REG->rx contributing the more significant bits.  */
 static enum register_status
-m32c_cat_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_cat_read (struct m32c_reg *reg, struct regcache *cache, gdb_byte *buf)
 {
   int high_bytes = TYPE_LENGTH (reg->rx->type);
   int low_bytes  = TYPE_LENGTH (reg->ry->type);
-  /* For address arithmetic.  */
-  unsigned char *cbuf = buf;
   enum register_status status;

   gdb_assert (TYPE_LENGTH (reg->type) == high_bytes + low_bytes);

   if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
     {
-      status = regcache_cooked_read (cache, reg->rx->num, cbuf);
+      status = regcache_cooked_read (cache, reg->rx->num, buf);
       if (status == REG_VALID)
-	status = regcache_cooked_read (cache, reg->ry->num, cbuf + high_bytes);
+	status = regcache_cooked_read (cache, reg->ry->num, buf + high_bytes);
     }
   else
     {
-      status = regcache_cooked_read (cache, reg->rx->num, cbuf + low_bytes);
+      status = regcache_cooked_read (cache, reg->rx->num, buf + low_bytes);
       if (status == REG_VALID)
-	status = regcache_cooked_read (cache, reg->ry->num, cbuf);
+	status = regcache_cooked_read (cache, reg->ry->num, buf);
     }

   return status;
@@ -498,24 +510,23 @@ m32c_cat_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
    concatenation of the values of the registers REG->rx and REG->ry,
    with REG->rx contributing the more significant bits.  */
 static enum register_status
-m32c_cat_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_cat_write (struct m32c_reg *reg, struct regcache *cache,
+		const gdb_byte *buf)
 {
   int high_bytes = TYPE_LENGTH (reg->rx->type);
   int low_bytes  = TYPE_LENGTH (reg->ry->type);
-  /* For address arithmetic.  */
-  unsigned char *cbuf = buf;

   gdb_assert (TYPE_LENGTH (reg->type) == high_bytes + low_bytes);

   if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
     {
-      regcache_cooked_write (cache, reg->rx->num, cbuf);
-      regcache_cooked_write (cache, reg->ry->num, cbuf + high_bytes);
+      regcache_cooked_write (cache, reg->rx->num, buf);
+      regcache_cooked_write (cache, reg->ry->num, buf + high_bytes);
     }
   else
     {
-      regcache_cooked_write (cache, reg->rx->num, cbuf + low_bytes);
-      regcache_cooked_write (cache, reg->ry->num, cbuf);
+      regcache_cooked_write (cache, reg->rx->num, buf + low_bytes);
+      regcache_cooked_write (cache, reg->ry->num, buf);
     }

   return REG_VALID;
@@ -526,34 +537,31 @@ m32c_cat_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
    the concatenation (from most significant to least) of r3, r2, r1,
    and r0.  */
 static enum register_status
-m32c_r3r2r1r0_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_r3r2r1r0_read (struct m32c_reg *reg, struct regcache *cache, gdb_byte *buf)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (reg->arch);
   int len = TYPE_LENGTH (tdep->r0->type);
   enum register_status status;

-  /* For address arithmetic.  */
-  unsigned char *cbuf = buf;
-
   if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
     {
-      status = regcache_cooked_read (cache, tdep->r0->num, cbuf + len * 3);
+      status = regcache_cooked_read (cache, tdep->r0->num, buf + len * 3);
       if (status == REG_VALID)
-	status = regcache_cooked_read (cache, tdep->r1->num, cbuf + len * 2);
+	status = regcache_cooked_read (cache, tdep->r1->num, buf + len * 2);
       if (status == REG_VALID)
-	status = regcache_cooked_read (cache, tdep->r2->num, cbuf + len * 1);
+	status = regcache_cooked_read (cache, tdep->r2->num, buf + len * 1);
       if (status == REG_VALID)
-	status = regcache_cooked_read (cache, tdep->r3->num, cbuf);
+	status = regcache_cooked_read (cache, tdep->r3->num, buf);
     }
   else
     {
-      status = regcache_cooked_read (cache, tdep->r0->num, cbuf);
+      status = regcache_cooked_read (cache, tdep->r0->num, buf);
       if (status == REG_VALID)
-	status = regcache_cooked_read (cache, tdep->r1->num, cbuf + len * 1);
+	status = regcache_cooked_read (cache, tdep->r1->num, buf + len * 1);
       if (status == REG_VALID)
-	status = regcache_cooked_read (cache, tdep->r2->num, cbuf + len * 2);
+	status = regcache_cooked_read (cache, tdep->r2->num, buf + len * 2);
       if (status == REG_VALID)
-	status = regcache_cooked_read (cache, tdep->r3->num, cbuf + len * 3);
+	status = regcache_cooked_read (cache, tdep->r3->num, buf + len * 3);
     }

   return status;
@@ -564,27 +572,25 @@ m32c_r3r2r1r0_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
    the concatenation (from most significant to least) of r3, r2, r1,
    and r0.  */
 static enum register_status
-m32c_r3r2r1r0_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
+m32c_r3r2r1r0_write (struct m32c_reg *reg, struct regcache *cache,
+		     const gdb_byte *buf)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (reg->arch);
   int len = TYPE_LENGTH (tdep->r0->type);

-  /* For address arithmetic.  */
-  unsigned char *cbuf = buf;
-
   if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
     {
-      regcache_cooked_write (cache, tdep->r0->num, cbuf + len * 3);
-      regcache_cooked_write (cache, tdep->r1->num, cbuf + len * 2);
-      regcache_cooked_write (cache, tdep->r2->num, cbuf + len * 1);
-      regcache_cooked_write (cache, tdep->r3->num, cbuf);
+      regcache_cooked_write (cache, tdep->r0->num, buf + len * 3);
+      regcache_cooked_write (cache, tdep->r1->num, buf + len * 2);
+      regcache_cooked_write (cache, tdep->r2->num, buf + len * 1);
+      regcache_cooked_write (cache, tdep->r3->num, buf);
     }
   else
     {
-      regcache_cooked_write (cache, tdep->r0->num, cbuf);
-      regcache_cooked_write (cache, tdep->r1->num, cbuf + len * 1);
-      regcache_cooked_write (cache, tdep->r2->num, cbuf + len * 2);
-      regcache_cooked_write (cache, tdep->r3->num, cbuf + len * 3);
+      regcache_cooked_write (cache, tdep->r0->num, buf);
+      regcache_cooked_write (cache, tdep->r1->num, buf + len * 1);
+      regcache_cooked_write (cache, tdep->r2->num, buf + len * 2);
+      regcache_cooked_write (cache, tdep->r3->num, buf + len * 3);
     }

   return REG_VALID;
@@ -623,7 +629,7 @@ m32c_pseudo_register_write (struct gdbarch *arch,
   gdb_assert (arch == tdep->regs[cookednum].arch);
   reg = &tdep->regs[cookednum];

-  reg->write (reg, cache, (void *) buf);
+  reg->write (reg, cache, buf);
 }


@@ -634,8 +640,8 @@ add_reg (struct gdbarch *arch,
 	 const char *name,
 	 struct type *type,
 	 int sim_num,
-	 m32c_move_reg_t *read,
-	 m32c_move_reg_t *write,
+	 m32c_read_reg_t *read,
+	 m32c_write_reg_t *write,
 	 struct m32c_reg *rx,
 	 struct m32c_reg *ry,
 	 int n)
-- 
2.6.1


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH c++ 3/5] mep: Add cast for int to enum conversion
  2015-10-12 10:35   ` Yao Qi
@ 2015-10-12 16:43     ` Simon Marchi
  0 siblings, 0 replies; 22+ messages in thread
From: Simon Marchi @ 2015-10-12 16:43 UTC (permalink / raw)
  To: Yao Qi, Simon Marchi; +Cc: gdb-patches



On 12/10/15 06:34 AM, Yao Qi wrote:
> Simon Marchi <simon.marchi@polymtl.ca> writes:
> 
> Hi Simon,
> Patch is OK, one nit below,
> 
>> @@ -2396,7 +2396,10 @@ mep_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
>>        /* The way to get the me_module code depends on the object file
>>           format.  At the moment, we only know how to handle ELF.  */
>>        if (bfd_get_flavour (info.abfd) == bfd_target_elf_flavour)
>> -        me_module = elf_elfheader (info.abfd)->e_flags & EF_MEP_INDEX_MASK;
>> +	{
>> +	  int flag = elf_elfheader (info.abfd)->e_flags & EF_MEP_INDEX_MASK;
> 
> A blank line is needed here.
> 
>> +	  me_module = (CONFIG_ATTR) flag;
>> +	}
>>        else
>>          me_module = CONFIG_NONE;
>>      }
> 

Thanks, pushed with the newline.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast
  2015-10-12 11:10 ` Pedro Alves
  2015-10-12 12:18   ` Jon Beniston
@ 2015-10-13 17:14   ` Simon Marchi
  2015-10-13 17:32     ` Pedro Alves
  1 sibling, 1 reply; 22+ messages in thread
From: Simon Marchi @ 2015-10-13 17:14 UTC (permalink / raw)
  To: gdb-patches

On 15-10-12 07:10 AM, Pedro Alves wrote:
> This reveals that the code has a host-dependency.  It is assuming the
> byte order of the target is the same as host's.
> 
> Please replace this with a call to write_memory_unsigned_integer.
> 
> Looks like this port hasn't been touched ever since it was
> originally contributed.  Jon, is there still interest in this port?
> 
> Thanks,
> Pedro Alves

Ah, thanks for the tip.  It would look like this then:


From 5543b8ee060c5d0d171f5a8220a927c35bd3e5d5 Mon Sep 17 00:00:00 2001
From: Simon Marchi <simon.marchi@polymtl.ca>
Date: Sun, 11 Oct 2015 00:37:14 -0400
Subject: [PATCH] lm32: Replace call to write_memory with write_memory_unsigned_integer
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Fixes this error:

/home/emaisin/src/binutils-gdb/gdb/lm32-tdep.c: In function ‘CORE_ADDR lm32_push_dummy_call(gdbarch*, value*, regcache*, CORE_ADDR, int, value**, CORE_ADDR, int, CORE_ADDR)’:
/home/emaisin/src/binutils-gdb/gdb/lm32-tdep.c:292:59: error: invalid conversion from ‘void*’ to ‘const gdb_byte* {aka const unsigned char*}’ [-fpermissive]
    write_memory (sp, (void *) &val, TYPE_LENGTH (arg_type));
                                                           ^
In file included from /home/emaisin/src/binutils-gdb/gdb/lm32-tdep.c:29:0:
/home/emaisin/src/binutils-gdb/gdb/gdbcore.h:107:13: error:   initializing argument 2 of ‘void write_memory(CORE_ADDR, const gdb_byte*, ssize_t)’ [-fpermissive]
 extern void write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr,
             ^

gdb/ChangeLog:

	* lm32-tdep.c (lm32_push_dummy_call): Replace call to
	write_memory with write_memory_unsigned_integer.
---
 gdb/lm32-tdep.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gdb/lm32-tdep.c b/gdb/lm32-tdep.c
index 25a7e1e..2dcc9a3 100644
--- a/gdb/lm32-tdep.c
+++ b/gdb/lm32-tdep.c
@@ -289,7 +289,8 @@ lm32_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
 	regcache_cooked_write_unsigned (regcache, first_arg_reg + i, val);
       else
 	{
-	  write_memory (sp, (void *) &val, TYPE_LENGTH (arg_type));
+	  write_memory_unsigned_integer (sp, TYPE_LENGTH (arg_type), byte_order,
+					 val);
 	  sp -= 4;
 	}
     }
-- 
2.5.1




^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast
  2015-10-13 17:14   ` Simon Marchi
@ 2015-10-13 17:32     ` Pedro Alves
  2015-10-13 17:37       ` Simon Marchi
  0 siblings, 1 reply; 22+ messages in thread
From: Pedro Alves @ 2015-10-13 17:32 UTC (permalink / raw)
  To: Simon Marchi, gdb-patches

On 10/13/2015 06:14 PM, Simon Marchi wrote:
> On 15-10-12 07:10 AM, Pedro Alves wrote:
>> This reveals that the code has a host-dependency.  It is assuming the
>> byte order of the target is the same as host's.
>>
>> Please replace this with a call to write_memory_unsigned_integer.
>>
>> Looks like this port hasn't been touched ever since it was
>> originally contributed.  Jon, is there still interest in this port?
>>
>> Thanks,
>> Pedro Alves
> 
> Ah, thanks for the tip.  It would look like this then:

Looks good.

Thanks,
Pedro Alves


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast
  2015-10-13 17:32     ` Pedro Alves
@ 2015-10-13 17:37       ` Simon Marchi
  0 siblings, 0 replies; 22+ messages in thread
From: Simon Marchi @ 2015-10-13 17:37 UTC (permalink / raw)
  To: Pedro Alves, gdb-patches

On 15-10-13 01:32 PM, Pedro Alves wrote:
> Looks good.
> 
> Thanks,
> Pedro Alves

Pushed, thanks.



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast
  2015-10-11  4:37 [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast Simon Marchi
                   ` (5 preceding siblings ...)
  2015-10-12 11:10 ` Pedro Alves
@ 2015-10-22  9:59 ` Simon Marchi
  2015-10-22 13:34   ` Pedro Alves
  2015-10-22 15:21   ` Simon Marchi
  6 siblings, 2 replies; 22+ messages in thread
From: Simon Marchi @ 2015-10-22  9:59 UTC (permalink / raw)
  To: gdb-patches

On 15-10-11 12:37 AM, Simon Marchi wrote:
> There might be a cleaner sequence of function calls to do what is done
> here (I don't know), but since I don't want to risk breaking anything,
> it's safer to just add the required cast.
> 
> gdb/ChangeLog:
> 
> 	* lm32-tdep.c (lm32_push_dummy_call): Add cast.
> ---
>  gdb/lm32-tdep.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/gdb/lm32-tdep.c b/gdb/lm32-tdep.c
> index 25a7e1e..a0defad 100644
> --- a/gdb/lm32-tdep.c
> +++ b/gdb/lm32-tdep.c
> @@ -289,7 +289,7 @@ lm32_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
>  	regcache_cooked_write_unsigned (regcache, first_arg_reg + i, val);
>        else
>  	{
> -	  write_memory (sp, (void *) &val, TYPE_LENGTH (arg_type));
> +	  write_memory (sp, (const gdb_byte *) &val, TYPE_LENGTH (arg_type));
>  	  sp -= 4;
>  	}
>      }
> 

Ping for patches 1 and 4.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH c++ 4/5] mips: fix void*/gdb_byte* compilation errors
  2015-10-11  4:37 ` [PATCH c++ 4/5] mips: fix void*/gdb_byte* compilation errors Simon Marchi
@ 2015-10-22 13:13   ` Pedro Alves
  0 siblings, 0 replies; 22+ messages in thread
From: Pedro Alves @ 2015-10-22 13:13 UTC (permalink / raw)
  To: Simon Marchi, gdb-patches

On 10/11/2015 05:37 AM, Simon Marchi wrote:
> The error in mips64_linux_get_longjmp_target is fixed by changing "buf"
> to be a gdb_byte*, as usual.  supply_32bit_reg and mips64_fill_gregset
> do some more complicated things however, so it's safer just to add the
> explicit cast and avoid changing the code too much.
> 
> gdb/ChangeLog:
> 
> 	* mips-linux-tdep.c (mips64_linux_get_longjmp_target): Change type of
> 	buf to gdb_byte*.
> 	(supply_32bit_reg): Add cast.
> 	(mips64_fill_gregset): Likewise.

OK.

Thanks,
Pedro Alves


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast
  2015-10-22  9:59 ` Simon Marchi
@ 2015-10-22 13:34   ` Pedro Alves
  2015-10-22 13:39     ` Simon Marchi
  2015-10-22 15:21   ` Simon Marchi
  1 sibling, 1 reply; 22+ messages in thread
From: Pedro Alves @ 2015-10-22 13:34 UTC (permalink / raw)
  To: Simon Marchi, gdb-patches

On 10/21/2015 07:44 PM, Simon Marchi wrote:

> Ping for patches 1 and 4.

I think patch #1 is already in, it was the one that ended up
using write_memory_unsigned_integer.

Thanks,
Pedro Alves


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast
  2015-10-22 13:34   ` Pedro Alves
@ 2015-10-22 13:39     ` Simon Marchi
  0 siblings, 0 replies; 22+ messages in thread
From: Simon Marchi @ 2015-10-22 13:39 UTC (permalink / raw)
  To: Pedro Alves, gdb-patches

On 15-10-22 06:55 AM, Pedro Alves wrote:
> On 10/21/2015 07:44 PM, Simon Marchi wrote:
> 
>> Ping for patches 1 and 4.
> 
> I think patch #1 is already in, it was the one that ended up
> using write_memory_unsigned_integer.
> 
> Thanks,
> Pedro Alves
> 

Ah indeed, sorry about that.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast
  2015-10-22  9:59 ` Simon Marchi
  2015-10-22 13:34   ` Pedro Alves
@ 2015-10-22 15:21   ` Simon Marchi
  1 sibling, 0 replies; 22+ messages in thread
From: Simon Marchi @ 2015-10-22 15:21 UTC (permalink / raw)
  To: gdb-patches

On 15-10-21 02:44 PM, Simon Marchi wrote:
> Ping for patches 1 and 4.

This is now all pushed, except #5 which is dropped because
Pedro has a more appropriate fix.


^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2015-10-22 13:51 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-11  4:37 [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast Simon Marchi
2015-10-11  4:37 ` [PATCH c++ 4/5] mips: fix void*/gdb_byte* compilation errors Simon Marchi
2015-10-22 13:13   ` Pedro Alves
2015-10-11  4:37 ` [PATCH c++ 2/5] m32c: Split m32c_move_reg_t in read/write variants Simon Marchi
2015-10-12 10:47   ` Yao Qi
2015-10-12 16:42     ` Simon Marchi
2015-10-11  4:37 ` [PATCH c++ 3/5] mep: Add cast for int to enum conversion Simon Marchi
2015-10-12 10:35   ` Yao Qi
2015-10-12 16:43     ` Simon Marchi
2015-10-11  4:44 ` [PATCH c++ 5/5] mips: " Simon Marchi
2015-10-12 10:54   ` Pedro Alves
2015-10-12 16:28     ` Simon Marchi
2015-10-12 10:52 ` [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast Yao Qi
2015-10-12 11:10 ` Pedro Alves
2015-10-12 12:18   ` Jon Beniston
2015-10-13 17:14   ` Simon Marchi
2015-10-13 17:32     ` Pedro Alves
2015-10-13 17:37       ` Simon Marchi
2015-10-22  9:59 ` Simon Marchi
2015-10-22 13:34   ` Pedro Alves
2015-10-22 13:39     ` Simon Marchi
2015-10-22 15:21   ` Simon Marchi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox