gdb: make extract_integer take an array_view
authorSimon Marchi <simon.marchi@polymtl.ca>
Tue, 26 Oct 2021 03:29:34 +0000 (23:29 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Fri, 3 Dec 2021 21:41:38 +0000 (16:41 -0500)
commit2a50938ab740296a1d6df67feea9401e57e4d90e
treec0a570783faab4b4e5225e14a434739fa0264536
parent4bce7cdaf481901edbc5ee47d953ea7e8efb56ca
gdb: make extract_integer take an array_view

I think it would make sense for extract_integer, extract_signed_integer
and extract_unsigned_integer to take an array_view.  This way, when we
extract an integer, we can validate that we don't overflow the buffer
passed by the caller (e.g. ask to extract a 4-byte integer but pass a
2-byte buffer).

 - Change extract_integer to take an array_view
 - Add overloads of extract_signed_integer and extract_unsigned_integer
   that take array_views.  Keep the existing versions so we don't
   need to change all callers, but make them call the array_view
   versions.

This shortens some places like:

  result = extract_unsigned_integer (value_contents (result_val).data (),
     TYPE_LENGTH (value_type (result_val)),
     byte_order);

into

  result = extract_unsigned_integer (value_contents (result_val), byte_order);

value_contents returns an array view that is of length
`TYPE_LENGTH (value_type (result_val))` already, so the length is
implicitly communicated through the array view.

Change-Id: Ic1c1f98c88d5c17a8486393af316f982604d6c95
14 files changed:
gdb/amd64-linux-tdep.c
gdb/defs.h
gdb/dwarf2/expr.c
gdb/fbsd-tdep.c
gdb/findvar.c
gdb/frame.c
gdb/frv-tdep.c
gdb/hppa-bsd-tdep.c
gdb/hppa-linux-tdep.c
gdb/i386-linux-tdep.c
gdb/ia64-tdep.c
gdb/regcache.c
gdb/unittests/gmp-utils-selftests.c
gdb/valops.c