summaryrefslogtreecommitdiffstats
path: root/cpukit/libdebugger/rtems-debugger-target.c
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2017-04-14 17:12:44 +1000
committerChris Johns <chrisj@rtems.org>2017-04-15 08:18:25 +1000
commitb53ad4615a16f65119e40f7084f9bacd88dc42cd (patch)
treed1f56f04b019b77aef1a150f0ab3e32870027e9c /cpukit/libdebugger/rtems-debugger-target.c
parentm68k/mrm332/./sci.c: Use inttypes.h constants removes 6 warnings. (diff)
downloadrtems-b53ad4615a16f65119e40f7084f9bacd88dc42cd.tar.bz2
libdebugger: Work around assert when using _Thread_Executing.
Using _Thread_Executing with RTEMS_DEBUG results in an `assert` if the server accesses invalid memory. Updates #2993.
Diffstat (limited to '')
-rw-r--r--cpukit/libdebugger/rtems-debugger-target.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/cpukit/libdebugger/rtems-debugger-target.c b/cpukit/libdebugger/rtems-debugger-target.c
index cd1565463e..65b878469d 100644
--- a/cpukit/libdebugger/rtems-debugger-target.c
+++ b/cpukit/libdebugger/rtems-debugger-target.c
@@ -284,7 +284,12 @@ rtems_debugger_target_exception(CPU_Exception_frame* frame)
if (!rtems_interrupt_is_in_progress()) {
rtems_debugger_threads* threads = rtems_debugger->threads;
- Thread_Control* thread = _Thread_Executing;
+ #if USE_THREAD_EXECUTING
+ Thread_Control* thread = _Thread_Executing;
+ #else
+ const Per_CPU_Control* cpu = _Per_CPU_Get_snapshot();
+ Thread_Control* thread = _Per_CPU_Get_executing(cpu);
+ #endif
rtems_id* excludes;
const rtems_id tid = thread->Object.id;
DB_UINT pc;