From 3451269c4128c4b74f4614d9781cb75207c5ee34 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Thu, 21 Apr 2016 06:42:13 -0400 Subject: [PATCH] Fix s390 GNU/Linux gdb and gdbserver builds MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Now that gdb/gdbserver compile as C++ programs by default, the s390 GNU/Linux build started failing with: In file included from ../../src/gdb/common/common-defs.h:64:0, from ../../src/gdb/defs.h:28, from ../../src/gdb/s390-linux-nat.c:22: ../../src/gdb/s390-linux-nat.c: In function ‘void fetch_regset(regcache*, int, int, int, const regset*)’: ../../src/gdb/../include/libiberty.h:711:38: error: invalid conversion from ‘void*’ to ‘gdb_byte* {aka unsigned char*}’ [-fpermissive] # define alloca(x) __builtin_alloca(x) ^ ../../src/gdb/s390-linux-nat.c:297:19: note: in expansion of macro ‘alloca’ gdb_byte *buf = alloca (regsize); ^ etc. gdb/ChangeLog: 2016-04-21 Pedro Alves * s390-linux-nat.c (fetch_regset, store_regset, check_regset): Use void * instead of gdb_byte *. gdb/gdbserver/ChangeLog: 2016-04-21 Pedro Alves * linux-s390-low.c (s390_collect_ptrace_register) (s390_supply_ptrace_register, s390_get_hwcap): Use gdb_byte * and add casts. (s390_check_regset): Use void * instead of gdb_byte *. --- gdb/ChangeLog | 5 +++++ gdb/gdbserver/ChangeLog | 7 +++++++ gdb/gdbserver/linux-s390-low.c | 12 ++++++------ gdb/s390-linux-nat.c | 6 +++--- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f16912c80c5..0741d1cbddd 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2016-04-21 Pedro Alves + + * s390-linux-nat.c (fetch_regset, store_regset, check_regset): Use + void * instead of gdb_byte *. + 2016-04-21 Pedro Alves * dwarf2read.c (try_open_dwop_file, open_dwo_file) diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 029205d3b86..db76e1a0ccb 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,10 @@ +2016-04-21 Pedro Alves + + * linux-s390-low.c (s390_collect_ptrace_register) + (s390_supply_ptrace_register, s390_get_hwcap): Use gdb_byte * and + add casts. + (s390_check_regset): Use void * instead of gdb_byte *. + 2016-04-20 Pedro Alves * configure: Renegerate. diff --git a/gdb/gdbserver/linux-s390-low.c b/gdb/gdbserver/linux-s390-low.c index 12269b6b7ce..f5a7d85f806 100644 --- a/gdb/gdbserver/linux-s390-low.c +++ b/gdb/gdbserver/linux-s390-low.c @@ -171,7 +171,7 @@ s390_collect_ptrace_register (struct regcache *regcache, int regno, char *buf) { /* Convert 4-byte PSW mask to 8 bytes by clearing bit 12 and copying the basic addressing mode bit from the PSW address. */ - char *addr = alloca (register_size (regcache->tdesc, regno ^ 1)); + gdb_byte *addr = (gdb_byte *) alloca (register_size (regcache->tdesc, regno ^ 1)); collect_register (regcache, regno, buf); collect_register (regcache, regno ^ 1, addr); buf[1] &= ~0x8; @@ -216,8 +216,8 @@ s390_supply_ptrace_register (struct regcache *regcache, { /* Convert 8-byte PSW mask to 4 bytes by setting bit 12 and copying the basic addressing mode into the PSW address. */ - char *mask = alloca (size); - char *addr = alloca (register_size (regcache->tdesc, regno ^ 1)); + gdb_byte *mask = (gdb_byte *) alloca (size); + gdb_byte *addr = (gdb_byte *) alloca (register_size (regcache->tdesc, regno ^ 1)); memcpy (mask, buf, size); mask[1] |= 0x8; supply_register (regcache, regno, mask); @@ -231,7 +231,7 @@ s390_supply_ptrace_register (struct regcache *regcache, { /* Convert 8-byte PSW address to 4 bytes by truncating, but keeping the addressing mode bit (which was set from the mask). */ - char *addr = alloca (size); + gdb_byte *addr = (gdb_byte *) alloca (size); char amode; collect_register (regcache, regno, addr); amode = addr[0] & 0x80; @@ -442,7 +442,7 @@ static unsigned long s390_get_hwcap (const struct target_desc *tdesc) { int wordsize = register_size (tdesc, 0); - unsigned char *data = alloca (2 * wordsize); + gdb_byte *data = (gdb_byte *) alloca (2 * wordsize); int offset = 0; while ((*the_target->read_auxv) (offset, data, 2 * wordsize) == 2 * wordsize) @@ -469,7 +469,7 @@ s390_get_hwcap (const struct target_desc *tdesc) static int s390_check_regset (int pid, int regset, int regsize) { - gdb_byte *buf = alloca (regsize); + void *buf = alloca (regsize); struct iovec iov; iov.iov_base = buf; diff --git a/gdb/s390-linux-nat.c b/gdb/s390-linux-nat.c index ae0e2c6d941..e91297b6e01 100644 --- a/gdb/s390-linux-nat.c +++ b/gdb/s390-linux-nat.c @@ -294,7 +294,7 @@ static void fetch_regset (struct regcache *regcache, int tid, int regset_id, int regsize, const struct regset *regset) { - gdb_byte *buf = alloca (regsize); + void *buf = alloca (regsize); struct iovec iov; iov.iov_base = buf; @@ -318,7 +318,7 @@ static void store_regset (struct regcache *regcache, int tid, int regset_id, int regsize, const struct regset *regset) { - gdb_byte *buf = alloca (regsize); + void *buf = alloca (regsize); struct iovec iov; iov.iov_base = buf; @@ -338,7 +338,7 @@ store_regset (struct regcache *regcache, int tid, static int check_regset (int tid, int regset, int regsize) { - gdb_byte *buf = alloca (regsize); + void *buf = alloca (regsize); struct iovec iov; iov.iov_base = buf; -- 2.30.2