nat/linux-ptrace.c: add missing gdb_byte* cast

Message ID 20170618211819.29614-1-thomas.petazzoni@free-electrons.com
State New, archived
Headers

Commit Message

Thomas Petazzoni June 18, 2017, 9:18 p.m. UTC
  On noMMU platforms, the following code gets compiled:

  child_stack = xmalloc (STACK_SIZE * 4);

Where child_stack is a gdb_byte*, and xmalloc() returns a void*. While
the lack of cast is valid in C, it is not in C++, causing the
following build failure:

../nat/linux-ptrace.c: In function 'int linux_fork_to_function(gdb_byte*, int (*)(void*))':
../nat/linux-ptrace.c:273:29: error: invalid conversion from 'void*' to 'gdb_byte* {aka unsigned char*}' [-fpermissive]
       child_stack = xmalloc (STACK_SIZE * 4);

Therefore, this commit adds the appropriate cast.

gdb/ChangeLog:

	* nat/linux-ptrace.c (linux_fork_to_function): fix cast to
          gdb_byte*, needed for C++ build.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 gdb/nat/linux-ptrace.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Simon Marchi June 18, 2017, 9:32 p.m. UTC | #1
On 2017-06-18 23:18, Thomas Petazzoni wrote:
> On noMMU platforms, the following code gets compiled:
> 
>   child_stack = xmalloc (STACK_SIZE * 4);
> 
> Where child_stack is a gdb_byte*, and xmalloc() returns a void*. While
> the lack of cast is valid in C, it is not in C++, causing the
> following build failure:
> 
> ../nat/linux-ptrace.c: In function 'int
> linux_fork_to_function(gdb_byte*, int (*)(void*))':
> ../nat/linux-ptrace.c:273:29: error: invalid conversion from 'void*'
> to 'gdb_byte* {aka unsigned char*}' [-fpermissive]
>        child_stack = xmalloc (STACK_SIZE * 4);
> 
> Therefore, this commit adds the appropriate cast.
> 
> gdb/ChangeLog:
> 
> 	* nat/linux-ptrace.c (linux_fork_to_function): fix cast to
>           gdb_byte*, needed for C++ build.
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Thanks for the patch!  I pushed it with minor changes (formatting & 
ChangeLog).

Simon
  

Patch

diff --git a/gdb/nat/linux-ptrace.c b/gdb/nat/linux-ptrace.c
index 3265b16..5d38a66 100644
--- a/gdb/nat/linux-ptrace.c
+++ b/gdb/nat/linux-ptrace.c
@@ -272,7 +272,7 @@  linux_fork_to_function (gdb_byte *child_stack, int (*function) (void *))
 #define STACK_SIZE 4096
 
     if (child_stack == NULL)
-      child_stack = xmalloc (STACK_SIZE * 4);
+      child_stack = (gdb_byte*) xmalloc (STACK_SIZE * 4);
 
     /* Use CLONE_VM instead of fork, to support uClinux (no MMU).  */
 #ifdef __ia64__