Fix errors on previous commit (on file gdb-probes-based-interface-robust-2of2.patch)
This commit is contained in:
parent
2ef6d5f976
commit
8b367b2286
|
@ -59,30 +59,32 @@ Index: gdb-7.9.1/gdb/solib-svr4.c
|
|||
===================================================================
|
||||
--- gdb-7.9.1.orig/gdb/solib-svr4.c
|
||||
+++ gdb-7.9.1/gdb/solib-svr4.c
|
||||
@@ -1769,7 +1769,7 @@ static enum probe_action
|
||||
@@ -1769,8 +1769,9 @@ static enum probe_action
|
||||
solib_event_probe_action (struct probe_and_action *pa)
|
||||
{
|
||||
enum probe_action action;
|
||||
- unsigned probe_argc;
|
||||
+ unsigned probe_argc = 0;
|
||||
struct frame_info *frame = get_current_frame ();
|
||||
+ volatile struct gdb_exception ex;
|
||||
|
||||
action = pa->action;
|
||||
@@ -1783,7 +1783,23 @@ solib_event_probe_action (struct probe_a
|
||||
if (action == DO_NOTHING || action == PROBES_INTERFACE_FAILED)
|
||||
@@ -1783,7 +1784,23 @@ solib_event_probe_action (struct probe_a
|
||||
arg0: Lmid_t lmid (mandatory)
|
||||
arg1: struct r_debug *debug_base (mandatory)
|
||||
arg2: struct link_map *new (optional, for incremental updates) */
|
||||
- probe_argc = get_probe_argument_count (pa->probe, frame);
|
||||
+ TRY
|
||||
+ TRY_CATCH (ex, RETURN_MASK_ERROR)
|
||||
+ {
|
||||
+ probe_argc = get_probe_argument_count (pa->probe, frame);
|
||||
+ }
|
||||
+ CATCH (ex, RETURN_MASK_ERROR)
|
||||
+
|
||||
+ if (ex.reason < 0)
|
||||
+ {
|
||||
+ exception_print (gdb_stderr, ex);
|
||||
+ probe_argc = 0;
|
||||
+ }
|
||||
+ END_CATCH
|
||||
+
|
||||
+ /* If get_probe_argument_count throws an exception, probe_argc will
|
||||
+ be set to zero. However, if pa->probe does not have arguments,
|
||||
|
@ -93,7 +95,7 @@ Index: gdb-7.9.1/gdb/solib-svr4.c
|
|||
if (probe_argc == 2)
|
||||
action = FULL_RELOAD;
|
||||
else if (probe_argc < 2)
|
||||
@@ -1889,7 +1905,7 @@ svr4_handle_solib_event (void)
|
||||
@@ -1889,10 +1906,11 @@ svr4_handle_solib_event (void)
|
||||
struct probe_and_action *pa;
|
||||
enum probe_action action;
|
||||
struct cleanup *old_chain, *usm_chain;
|
||||
|
@ -102,41 +104,47 @@ Index: gdb-7.9.1/gdb/solib-svr4.c
|
|||
CORE_ADDR pc, debug_base, lm = 0;
|
||||
int is_initial_ns;
|
||||
struct frame_info *frame = get_current_frame ();
|
||||
@@ -1937,7 +1953,17 @@ svr4_handle_solib_event (void)
|
||||
+ volatile struct gdb_exception ex;
|
||||
|
||||
/* Do nothing if not using the probes interface. */
|
||||
if (info->probes_table == NULL)
|
||||
@@ -1937,7 +1955,17 @@ svr4_handle_solib_event (void)
|
||||
usm_chain = make_cleanup (resume_section_map_updates_cleanup,
|
||||
current_program_space);
|
||||
|
||||
- val = evaluate_probe_argument (pa->probe, 1, frame);
|
||||
+ TRY
|
||||
+ TRY_CATCH (ex, RETURN_MASK_ERROR)
|
||||
+ {
|
||||
+ val = evaluate_probe_argument (pa->probe, 1, frame);
|
||||
+ }
|
||||
+ CATCH (ex, RETURN_MASK_ERROR)
|
||||
+
|
||||
+ if (ex.reason < 0)
|
||||
+ {
|
||||
+ exception_print (gdb_stderr, ex);
|
||||
+ val = NULL;
|
||||
+ }
|
||||
+ END_CATCH
|
||||
+
|
||||
if (val == NULL)
|
||||
{
|
||||
do_cleanups (old_chain);
|
||||
@@ -1968,7 +1994,18 @@ svr4_handle_solib_event (void)
|
||||
@@ -1968,7 +1996,20 @@ svr4_handle_solib_event (void)
|
||||
|
||||
if (action == UPDATE_OR_RELOAD)
|
||||
{
|
||||
- val = evaluate_probe_argument (pa->probe, 2, frame);
|
||||
+ TRY
|
||||
+ volatile struct gdb_exception ex;
|
||||
+
|
||||
+ TRY_CATCH (ex, RETURN_MASK_ERROR)
|
||||
+ {
|
||||
+ val = evaluate_probe_argument (pa->probe, 2, frame);
|
||||
+ }
|
||||
+ CATCH (ex, RETURN_MASK_ERROR)
|
||||
+
|
||||
+ if (ex.reason < 0)
|
||||
+ {
|
||||
+ exception_print (gdb_stderr, ex);
|
||||
+ do_cleanups (old_chain);
|
||||
+ return;
|
||||
+ }
|
||||
+ END_CATCH
|
||||
+
|
||||
if (val != NULL)
|
||||
lm = value_as_address (val);
|
||||
|
|
Loading…
Reference in New Issue