aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Burgess <andrew.burgess@embecosm.com>2021-04-21 10:59:38 +0100
committerAndrew Burgess <andrew.burgess@embecosm.com>2021-04-22 09:16:54 +0100
commit05f3c0f09ec7181e00b4095804acad78040284c8 (patch)
treef05d37d9a386a4e6c67698ab5cc803bcb7edd914
parent2662c237a9219b0863535b8b99be383add2cf0b9 (diff)
downloadgdb-05f3c0f09ec7181e00b4095804acad78040284c8.zip
gdb-05f3c0f09ec7181e00b4095804acad78040284c8.tar.gz
gdb-05f3c0f09ec7181e00b4095804acad78040284c8.tar.bz2
gdb: allow default_addressable_memory_unit_size to handle more cases
Currently default_addressable_memory_unit_size always returns 1, indicating 1 byte is 1 octet. If a target has something other than this (common) setup then the target should override the default_addressable_memory_unit_size. However, the bfd library already knows about each targets octets per byte, so it seems redundant making targets override this method to tell GDB something it already knows (through bfd). In this commit I propose to make default_addressable_memory_unit_size return a value based on bfd's bits per byte. I checked, and for every target that GDB currently supports the bits per byte in bfd is 8, so the current behaviour will not change. In fact, the only targets in bfd that have bits per byte set to something other than 8 can be found in cpu-tic4x.c and cpu-tic54x.c, I don't believe these are supported by GDB right now. I don't propose to remove the ability to override default_addressable_memory_unit_size, this allows targets additional flexibility for how to handle weird combinations of byte sizes. This change was motivated by an out of tree target I was working on, but it seemed like it was a good change that others might benefit from. There should be no user visible changes after this commit. gdb/ChangeLog: * arch-utils.c (default_addressable_memory_unit_size): Return a value based on bfd's bits per byte.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/arch-utils.c8
2 files changed, 10 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 20558b5..6187229 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2021-04-22 Andrew Burgess <andrew.burgess@embecosm.com>
+
+ * arch-utils.c (default_addressable_memory_unit_size): Return a
+ value based on bfd's bits per byte.
+
2021-04-21 Tom Tromey <tom@tromey.com>
* dwarf2/read.h (struct dwarf2_per_cu_data) <dwarf_version>: Now
diff --git a/gdb/arch-utils.c b/gdb/arch-utils.c
index e1d5afd..5bb9c75 100644
--- a/gdb/arch-utils.c
+++ b/gdb/arch-utils.c
@@ -1005,13 +1005,15 @@ default_gnu_triplet_regexp (struct gdbarch *gdbarch)
return gdbarch_bfd_arch_info (gdbarch)->arch_name;
}
-/* Default method for gdbarch_addressable_memory_unit_size. By default, a memory byte has
- a size of 1 octet. */
+/* Default method for gdbarch_addressable_memory_unit_size. The default is
+ based on the bits_per_byte defined in the bfd library for the current
+ architecture, this is usually 8-bits, and so this function will usually
+ return 1 indicating 1 byte is 1 octet. */
int
default_addressable_memory_unit_size (struct gdbarch *gdbarch)
{
- return 1;
+ return gdbarch_bfd_arch_info (gdbarch)->bits_per_byte / 8;
}
void