gdb: fix ppc-sysv-tdep.c build on 32-bit platforms
authorJohn Baldwin <jhb@FreeBSD.org>
Fri, 28 Jan 2022 19:22:02 +0000 (11:22 -0800)
committerJohn Baldwin <jhb@FreeBSD.org>
Fri, 28 Jan 2022 19:22:02 +0000 (11:22 -0800)
The previous code triggered the following error on an i386 host:

/git/gdb/gdb/ppc-sysv-tdep.c:1764:34: error: non-constant-expression cannot be narrowed from type 'ULONGEST' (aka 'unsigned long long') to 'size_t' (aka 'unsigned int') in initializer list [-Wc++11-narrowing]
              unscaled.read ({writebuf, TYPE_LENGTH (valtype)},
                                        ^~~~~~~~~~~~~~~~~~~~~
/git/gdb/gdb/gdbtypes.h:2043:31: note: expanded from macro 'TYPE_LENGTH'
                              ^~~~~~~~~~~~~~~~~~
/git/gdb/gdb/ppc-sysv-tdep.c:1764:34: note: insert an explicit cast to silence this issue
              unscaled.read ({writebuf, TYPE_LENGTH (valtype)},
                                        ^~~~~~~~~~~~~~~~~~~~~
                                        static_cast<size_t>( )
/git/gdb/gdb/gdbtypes.h:2043:31: note: expanded from macro 'TYPE_LENGTH'
                              ^~~~~~~~~~~~~~~~~~
1 error generated.

Fix this by using gdb::make_array_view.

gdb/ppc-sysv-tdep.c

index 5255cea43e389f043f03670d2df2685e8f256bc3..9a3b02f028d360cf99c974026df2e646541fd1b3 100644 (file)
@@ -1761,7 +1761,8 @@ ppc64_sysv_abi_return_value_base (struct gdbarch *gdbarch, struct type *valtype,
              /* Fixed point type values need to be returned unscaled.  */
              gdb_mpz unscaled;
 
-             unscaled.read ({writebuf, TYPE_LENGTH (valtype)},
+             unscaled.read (gdb::make_array_view (writebuf,
+                                                  TYPE_LENGTH (valtype)),
                             type_byte_order (valtype),
                             valtype->is_unsigned ());
              return_val = unscaled.as_integer<LONGEST> ();