Re: [PATCH c++ 1/5] lm32: Add (const gdb_byte *) cast

Simon Marchi
2015-10-13T17:14:24Z

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