diff options
author | Andrew Burgess <aburgess@redhat.com> | 2023-03-22 17:22:51 +0000 |
---|---|---|
committer | Andrew Burgess <aburgess@redhat.com> | 2023-03-29 08:57:10 +0100 |
commit | a6e5abae4e9e845e6e69e07f755c0805558dcd63 (patch) | |
tree | bbae67ddbbf65a8717b94be9f97f9bdcf4bc5074 /gdbsupport | |
parent | 6d84a385ed96ba457bdec3dd983643dd7afa3665 (diff) | |
download | gdb-a6e5abae4e9e845e6e69e07f755c0805558dcd63.zip gdb-a6e5abae4e9e845e6e69e07f755c0805558dcd63.tar.gz gdb-a6e5abae4e9e845e6e69e07f755c0805558dcd63.tar.bz2 |
gdb: move displaced_step_dump_bytes into gdbsupport (and rename)
It was pointed out during review of another patch that the function
displaced_step_dump_bytes really isn't specific to displaced stepping,
and should really get a more generic name and move into gdbsupport/.
This commit does just that. The function is renamed to
bytes_to_string and is moved into gdbsupport/common-utils.{cc,h}. The
function implementation doesn't really change. Much...
... I have updated the function to take an array view, which makes it
slightly easier to call in a couple of places where we already have a
gdb::bytes_vector. I've then added an inline wrapper to convert a raw
pointer and length into an array view, which is used in places where
we don't easily have a gdb::bytes_vector (or similar).
Updated all users of displaced_step_dump_bytes.
There should be no user visible changes after this commit.
Finally, I ended up having to add an include of gdb_assert.h into
array-view.h. When I include array-view.h into common-utils.h I ran
into build problems because array-view.h calls gdb_assert.
Approved-By: Simon Marchi <simon.marchi@efficios.com>
Diffstat (limited to 'gdbsupport')
-rw-r--r-- | gdbsupport/array-view.h | 1 | ||||
-rw-r--r-- | gdbsupport/common-utils.cc | 18 | ||||
-rw-r--r-- | gdbsupport/common-utils.h | 16 |
3 files changed, 35 insertions, 0 deletions
diff --git a/gdbsupport/array-view.h b/gdbsupport/array-view.h index 3d8248b..d07c8bc 100644 --- a/gdbsupport/array-view.h +++ b/gdbsupport/array-view.h @@ -21,6 +21,7 @@ #include "traits.h" #include <algorithm> #include <type_traits> +#include "gdbsupport/gdb_assert.h" /* An array_view is an abstraction that provides a non-owning view over a sequence of contiguous objects. diff --git a/gdbsupport/common-utils.cc b/gdbsupport/common-utils.cc index e382fb2..4a96f2c 100644 --- a/gdbsupport/common-utils.cc +++ b/gdbsupport/common-utils.cc @@ -445,3 +445,21 @@ hex2bin (const char *hex) return bin; } + +/* See gdbsupport/common-utils.h. */ + +std::string +bytes_to_string (gdb::array_view<const gdb_byte> bytes) +{ + std::string ret; + + for (size_t i = 0; i < bytes.size (); i++) + { + if (i == 0) + ret += string_printf ("%02x", bytes[i]); + else + ret += string_printf (" %02x", bytes[i]); + } + + return ret; +} diff --git a/gdbsupport/common-utils.h b/gdbsupport/common-utils.h index 97dcb9f..4ceb44d 100644 --- a/gdbsupport/common-utils.h +++ b/gdbsupport/common-utils.h @@ -24,6 +24,7 @@ #include <vector> #include "gdbsupport/byte-vector.h" #include "gdbsupport/gdb_unique_ptr.h" +#include "gdbsupport/array-view.h" #include "poison.h" #include "gdb_string_view.h" @@ -194,6 +195,21 @@ extern int hex2bin (const char *hex, gdb_byte *bin, int count); /* Like the above, but return a gdb::byte_vector. */ gdb::byte_vector hex2bin (const char *hex); +/* Build a string containing the contents of BYTES. Each byte is + represented as a 2 character hex string, with spaces separating each + individual byte. */ + +extern std::string bytes_to_string (gdb::array_view<const gdb_byte> bytes); + +/* See bytes_to_string above. This takes a BUFFER pointer and LENGTH + rather than an array view. */ + +static inline std::string bytes_to_string (const gdb_byte *buffer, + size_t length) +{ + return bytes_to_string ({buffer, length}); +} + /* A fast hashing function. This can be used to hash data in a fast way when the length is known. If no fast hashing library is available, falls back to iterative_hash from libiberty. START_VALUE can be set to |