Fix s390 GNU/Linux gdb and gdbserver builds
authorPedro Alves <palves@redhat.com>
Thu, 21 Apr 2016 10:42:13 +0000 (06:42 -0400)
committerPedro Alves <palves@redhat.com>
Thu, 21 Apr 2016 11:03:53 +0000 (12:03 +0100)
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  <palves@redhat.com>

* s390-linux-nat.c (fetch_regset, store_regset, check_regset): Use
void * instead of gdb_byte *.

gdb/gdbserver/ChangeLog:
2016-04-21  Pedro Alves  <palves@redhat.com>

* 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
gdb/gdbserver/ChangeLog
gdb/gdbserver/linux-s390-low.c
gdb/s390-linux-nat.c

index f16912c80c590ae8b891d0acccf7ddf36a89ace6..0741d1cbddd30beb590b34ad243405c4011525ca 100644 (file)
@@ -1,3 +1,8 @@
+2016-04-21  Pedro Alves  <palves@redhat.com>
+
+       * s390-linux-nat.c (fetch_regset, store_regset, check_regset): Use
+       void * instead of gdb_byte *.
+
 2016-04-21  Pedro Alves  <palves@redhat.com>
 
        * dwarf2read.c (try_open_dwop_file, open_dwo_file)
index 029205d3b86568520f684d5582ae5009f0d55f25..db76e1a0ccb831371b435a9c445855e8e141ce79 100644 (file)
@@ -1,3 +1,10 @@
+2016-04-21  Pedro Alves  <palves@redhat.com>
+
+       * 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  <palves@redhat.com>
 
        * configure: Renegerate.
index 12269b6b7ced3e40e689b21ce4a34060320cceff..f5a7d85f80678aef52f148e1565063ae728dd6c2 100644 (file)
@@ -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;
index ae0e2c6d94106d244ed03638a66a0c8fad823c56..e91297b6e011d047b2e8ffe658b0ca333c6cf982 100644 (file)
@@ -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;