summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTankut Baris Aktemur <tankut.baris.aktemur@intel.com>2020-05-14 13:59:53 +0200
committerTankut Baris Aktemur <tankut.baris.aktemur@intel.com>2020-05-14 13:59:53 +0200
commit7ca9b62a2b63ae04d554053c2a2053d13a9d8c92 (patch)
tree33a18fcc1bb47295fca866619dc3bad3687af977
parentfc75c28ba1ea7353fb6e1e5904c5703a48504b67 (diff)
downloadbinutils-gdb-7ca9b62a2b63ae04d554053c2a2053d13a9d8c92.tar.gz
gdb/infrun: move a 'regcache_read_pc' call down to first use
In infrun.c's resume_1 function, move the definition of the local variable PC down to its first use. This is useful if the thread we want to resume is already gone with a pending exit event, because we avoid the error we would see otherwise when trying to read the PC. gdb/ChangeLog: 2020-05-14 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> * infrun.c (resume_1): Move a 'regcache_read_pc' call down to first use.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/infrun.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 462884ce41e..8b756c451b4 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
2020-05-14 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
+ * infrun.c (resume_1): Move a 'regcache_read_pc' call down to first
+ use.
+
+2020-05-14 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
+
* regcache.c (regcache_read_pc_protected): New function
implementation that returns 0 if the PC cannot read via
'regcache_read_pc'.
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 5e01336ab09..db88a1eef15 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -2279,7 +2279,6 @@ resume_1 (enum gdb_signal sig)
struct regcache *regcache = get_current_regcache ();
struct gdbarch *gdbarch = regcache->arch ();
struct thread_info *tp = inferior_thread ();
- CORE_ADDR pc = regcache_read_pc (regcache);
const address_space *aspace = regcache->aspace ();
ptid_t resume_ptid;
/* This represents the user's step vs continue request. When
@@ -2358,6 +2357,8 @@ resume_1 (enum gdb_signal sig)
step = 0;
}
+ CORE_ADDR pc = regcache_read_pc (regcache);
+
if (debug_infrun)
fprintf_unfiltered (gdb_stdlog,
"infrun: resume (step=%d, signal=%s), "