aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2011-04-20 17:01:11 +0000
committerPedro Alves <palves@redhat.com>2011-04-20 17:01:11 +0000
commitb78974c3b4cea6c98cb8dfd9c0bee59efd45d311 (patch)
treef469d8b9134b15398d79696f3c16c0135b8d4318
parent15be625dff82153e4e05018a22c6cd66ba160f70 (diff)
downloadgdb-b78974c3b4cea6c98cb8dfd9c0bee59efd45d311.zip
gdb-b78974c3b4cea6c98cb8dfd9c0bee59efd45d311.tar.gz
gdb-b78974c3b4cea6c98cb8dfd9c0bee59efd45d311.tar.bz2
2011-04-20 Pedro Alves <pedro@codesourcery.com>
gdb/ * regcache.c (get_thread_arch_regcache): If creating a regcache for null_ptid, assume and allow a NULL address space, instead of asking the target for the ptid's address space. * infrun.c (ptid_is_pid): Remove assertion. gdb/testsuite/ * gdb.base/maint.exp: Test that "maint print registers" works without a running program.
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/infrun.c5
-rw-r--r--gdb/regcache.c15
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/gdb.base/maint.exp24
5 files changed, 40 insertions, 17 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index bdf13e3..96b1c89 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2011-04-20 Pedro Alves <pedro@codesourcery.com>
+
+ * regcache.c (get_thread_arch_regcache): If creating a regcache for
+ null_ptid, assume and allow a NULL address space, instead of
+ asking the target for the ptid's address space.
+ * infrun.c (ptid_is_pid): Remove assertion.
+
2011-04-19 Tom Tromey <tromey@redhat.com>
* windows-tdep.c (windows_xfer_shared_library):
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 52a1c15..8eccb60 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -6696,11 +6696,6 @@ ptid_is_pid (ptid_t ptid)
int
ptid_match (ptid_t ptid, ptid_t filter)
{
- /* Since both parameters have the same type, prevent easy mistakes
- from happening. */
- gdb_assert (!ptid_equal (ptid, minus_one_ptid)
- && !ptid_equal (ptid, null_ptid));
-
if (ptid_equal (filter, minus_one_ptid))
return 1;
if (ptid_is_pid (filter)
diff --git a/gdb/regcache.c b/gdb/regcache.c
index fbdeccc..8b4d77c 100644
--- a/gdb/regcache.c
+++ b/gdb/regcache.c
@@ -453,16 +453,25 @@ get_thread_arch_regcache (ptid_t ptid, struct gdbarch *gdbarch)
{
struct regcache_list *list;
struct regcache *new_regcache;
+ struct address_space *aspace;
for (list = current_regcache; list; list = list->next)
if (ptid_equal (list->regcache->ptid, ptid)
&& get_regcache_arch (list->regcache) == gdbarch)
return list->regcache;
- new_regcache = regcache_xmalloc_1 (gdbarch,
- target_thread_address_space (ptid), 0);
+ /* For the benefit of "maint print registers" & co when debugging an
+ executable, allow dumping the regcache even when there is no
+ thread selected (target_thread_address_space internal-errors if
+ no address space is found). Note that normal user commands will
+ fail higher up on the call stack due to no
+ target_has_registers. */
+ aspace = (ptid_equal (null_ptid, ptid)
+ ? NULL
+ : target_thread_address_space (ptid));
+
+ new_regcache = regcache_xmalloc_1 (gdbarch, aspace, 0);
new_regcache->ptid = ptid;
- gdb_assert (new_regcache->aspace != NULL);
list = xmalloc (sizeof (struct regcache_list));
list->regcache = new_regcache;
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 1dbe936..1464e13 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,4 +1,10 @@
+2011-04-20 Pedro Alves <pedro@codesourcery.com>
+
+ * gdb.base/maint.exp: Test that "maint print registers" works
+ without a running program.
+
2011-04-20 Marek Polacek <mpolacek@redhat.com>
+
* gdb.base/setshow.exp: Fix racy tests.
($old_gdb_prompt): New variable.
diff --git a/gdb/testsuite/gdb.base/maint.exp b/gdb/testsuite/gdb.base/maint.exp
index 843391a..61ad439 100644
--- a/gdb/testsuite/gdb.base/maint.exp
+++ b/gdb/testsuite/gdb.base/maint.exp
@@ -54,10 +54,6 @@ if $tracelevel then {
global usestubs
-#
-# test running programs
-#
-
set testfile "break"
set srcfile ${testfile}.c
set srcfile1 ${testfile}1.c
@@ -82,6 +78,21 @@ if { [gdb_compile "${binfile}0.o ${binfile}1.o" "${binfile}" executable {debug
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
+
+# The commands we test here produce many lines of output; disable "press
+# <return> to continue" prompts.
+gdb_test_no_output "set height 0"
+
+# Tests that require that no program is running
+
+gdb_file_cmd ${binfile}
+
+# Test for a regression where this command would internal-error if the
+# program wasn't running.
+gdb_test "maint print registers" "Name.*Nr.*Rel.*Offset.*Size.*Type.*"
+
+# Tests that can or should be done with a running program
+
gdb_load ${binfile}
if ![runto_main] then {
@@ -89,11 +100,6 @@ if ![runto_main] then {
}
-# The commands we test here produce many lines of output; disable "press
-# <return> to continue" prompts.
-gdb_test_no_output "set height 0"
-
-
#
# this command does not produce any output
# unless there is some problem with the symtabs and psymtabs