aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorMarkus Metzger <markus.t.metzger@intel.com>2023-05-09 10:39:07 +0000
committerMarkus Metzger <markus.t.metzger@intel.com>2023-10-17 15:46:05 +0000
commitc96ceed9dce7617f270aa4742645706e535f74b7 (patch)
tree64704994f8e743117085f50594f93831a97f5204 /gdb
parent998a4f589d68503f79695f180fdf1742eeb0a39d (diff)
downloadgdb-c96ceed9dce7617f270aa4742645706e535f74b7.zip
gdb-c96ceed9dce7617f270aa4742645706e535f74b7.tar.gz
gdb-c96ceed9dce7617f270aa4742645706e535f74b7.tar.bz2
gdb: include the end address in in-memory bfd filenames
Commit 66984afd29e gdb: include the base address in in-memory bfd filenames added the base address to in-memory bfd filenames. Also add the end address to allow dumping the in-memory bfd using the 'dump memory' command.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/gdb_bfd.c7
-rw-r--r--gdb/testsuite/gdb.base/jit-bfd-name.exp13
2 files changed, 14 insertions, 6 deletions
diff --git a/gdb/gdb_bfd.c b/gdb/gdb_bfd.c
index 217753c..56a4c5e 100644
--- a/gdb/gdb_bfd.c
+++ b/gdb/gdb_bfd.c
@@ -227,8 +227,9 @@ struct target_buffer : public gdb_bfd_iovec_base
target_buffer (CORE_ADDR base, ULONGEST size)
: m_base (base),
m_size (size),
- m_filename (xstrprintf ("<in-memory@%s>",
- core_addr_to_string_nz (m_base)))
+ m_filename (xstrprintf ("<in-memory@%s-%s>",
+ core_addr_to_string_nz (m_base),
+ core_addr_to_string_nz (m_base + m_size)))
{
}
@@ -241,7 +242,7 @@ struct target_buffer : public gdb_bfd_iovec_base
{ return m_base; }
/* Return a generated filename for the in-memory BFD file. The generated
- name will include the M_BASE value. */
+ name will include the begin and end address of the in-memory file. */
const char *filename () const
{ return m_filename.get (); }
diff --git a/gdb/testsuite/gdb.base/jit-bfd-name.exp b/gdb/testsuite/gdb.base/jit-bfd-name.exp
index 80f0626..f6a6e76 100644
--- a/gdb/testsuite/gdb.base/jit-bfd-name.exp
+++ b/gdb/testsuite/gdb.base/jit-bfd-name.exp
@@ -102,7 +102,7 @@ gdb_test_multiple "maint info symtabs" "" {
-re "^\\\}\\s*\r\n" {
exp_continue
}
- -re "^\\\{ objfile <in-memory@($hex)>\\s+\[^\r\n\]+\r\n" {
+ -re "^\\\{ objfile <in-memory@($hex-$hex)>\\s+\[^\r\n\]+\r\n" {
lappend bfd_name_addrs $expect_out(1,string)
exp_continue
}
@@ -133,12 +133,19 @@ foreach addr $symfile_addrs len $symfile_lengths {
# Check that each of the expected jit symfile addresses was mentioned
# in an in-memory BFD filename.
set count 1
-foreach addr $symfile_addrs {
+foreach addr $symfile_addrs len $symfile_lengths {
# Drop any loading zeros from the symfile address.
set addr [format 0x%x $addr]
+ # Calculate the end address.
+ set end [format 0x%x [expr $addr + $len]]
+
+ # This is what we expect the address range to look like in the BFD
+ # filename.
+ set rng "$start-$end"
+
# Check there was a BFD with the expected address in its name.
- gdb_assert { [expr [lsearch -exact $bfd_name_addrs $addr] != -1] } \
+ gdb_assert { [expr [lsearch -exact $bfd_name_addrs $rng] != -1] } \
"check for in-memory bfd $count"
incr count
}