Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
card10
openocd
Commits
f525f2ef
Commit
f525f2ef
authored
Oct 08, 2009
by
Øyvind Harboe
Browse files
Stop GDB when polling fails, srst assert or powerdropout is detected
parent
d75b9ec6
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/server/gdb_server.c
View file @
f525f2ef
...
...
@@ -714,7 +714,7 @@ int gdb_target_callback_event_handler(struct target_s *target, enum target_event
target_handle_event
(
target
,
event
);
switch
(
event
)
{
case
TARGET_EVENT_
EARLY
_HALT
ED
:
case
TARGET_EVENT_
GDB
_HALT
:
gdb_frontend_halted
(
target
,
connection
);
break
;
case
TARGET_EVENT_HALTED
:
...
...
src/target/target.c
View file @
f525f2ef
...
...
@@ -157,7 +157,7 @@ static const Jim_Nvp nvp_target_event[] = {
{
.
value
=
TARGET_EVENT_OLD_gdb_program_config
,
.
name
=
"old-gdb_program_config"
},
{
.
value
=
TARGET_EVENT_OLD_pre_resume
,
.
name
=
"old-pre_resume"
},
{
.
value
=
TARGET_EVENT_
EARLY
_HALT
ED
,
.
name
=
"
early
-halt
ed
"
},
{
.
value
=
TARGET_EVENT_
GDB
_HALT
,
.
name
=
"
gdb
-halt"
},
{
.
value
=
TARGET_EVENT_HALTED
,
.
name
=
"halted"
},
{
.
value
=
TARGET_EVENT_RESUMED
,
.
name
=
"resumed"
},
{
.
value
=
TARGET_EVENT_RESUME_START
,
.
name
=
"resume-start"
},
...
...
@@ -821,7 +821,7 @@ int target_call_event_callbacks(target_t *target, enum target_event event)
if
(
event
==
TARGET_EVENT_HALTED
)
{
/* execute early halted first */
target_call_event_callbacks
(
target
,
TARGET_EVENT_
EARLY
_HALT
ED
);
target_call_event_callbacks
(
target
,
TARGET_EVENT_
GDB
_HALT
);
}
LOG_DEBUG
(
"target event %i (%s)"
,
...
...
@@ -1658,6 +1658,15 @@ static int sense_handler(void)
return
ERROR_OK
;
}
static
void
target_call_event_callbacks_all
(
enum
target_event
e
)
{
target_t
*
target
;
target
=
all_targets
;
while
(
target
)
{
target_call_event_callbacks
(
target
,
e
);
target
=
target
->
next
;
}
}
/* process target state changes */
int
handle_target
(
void
*
priv
)
{
...
...
@@ -1676,6 +1685,7 @@ int handle_target(void *priv)
int
did_something
=
0
;
if
(
runSrstAsserted
)
{
target_call_event_callbacks_all
(
TARGET_EVENT_GDB_HALT
);
Jim_Eval
(
interp
,
"srst_asserted"
);
did_something
=
1
;
}
...
...
@@ -1686,6 +1696,7 @@ int handle_target(void *priv)
}
if
(
runPowerDropout
)
{
target_call_event_callbacks_all
(
TARGET_EVENT_GDB_HALT
);
Jim_Eval
(
interp
,
"power_dropout"
);
did_something
=
1
;
}
...
...
@@ -1726,7 +1737,10 @@ int handle_target(void *priv)
{
/* polling may fail silently until the target has been examined */
if
((
retval
=
target_poll
(
target
))
!=
ERROR_OK
)
{
target_call_event_callbacks
(
target
,
TARGET_EVENT_GDB_HALT
);
return
retval
;
}
}
}
...
...
src/target/target.h
View file @
f525f2ef
...
...
@@ -163,8 +163,14 @@ enum target_event
/* allow GDB to do stuff before others handle the halted event,
* this is in lieu of defining ordering of invocation of events,
* which would be more complicated */
TARGET_EVENT_EARLY_HALTED
,
* which would be more complicated
*
* Telling GDB to halt does not mean that the target stopped running,
* simply that we're dropping out of GDB's waiting for step or continue.
*
* This can be useful when e.g. detecting power dropout.
*/
TARGET_EVENT_GDB_HALT
,
TARGET_EVENT_HALTED
,
/* target entered debug state from normal execution or reset */
TARGET_EVENT_RESUMED
,
/* target resumed to normal execution */
TARGET_EVENT_RESUME_START
,
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment