X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Ftracepoint.c;h=566d06bb050ecc1a313f7357b8d56a83ecace5fa;hb=6c5b2ebeacc2538cf342cfd13c4c98ff018e6c9a;hp=d52d10c00e94a58b6052493ed8b9867cda2a39b4;hpb=11db943032396e1fee31440b0a331511dc0f4c00;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index d52d10c00e..566d06bb05 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -2433,30 +2433,24 @@ tfind_tracepoint_command (char *args, int from_tty) static void tfind_line_command (char *args, int from_tty) { - static CORE_ADDR start_pc, end_pc; - struct symtabs_and_lines sals; - struct symtab_and_line sal; - struct cleanup *old_chain; - check_trace_running (current_trace_status ()); + symtab_and_line sal; if (args == 0 || *args == 0) { sal = find_pc_line (get_frame_pc (get_current_frame ()), 0); - sals.nelts = 1; - sals.sals = XNEW (struct symtab_and_line); - sals.sals[0] = sal; } else { - sals = decode_line_with_current_source (args, DECODE_LINE_FUNFIRSTLINE); - sal = sals.sals[0]; + std::vector sals + = decode_line_with_current_source (args, DECODE_LINE_FUNFIRSTLINE); + sal = sals[0]; } - - old_chain = make_cleanup (xfree, sals.sals); + if (sal.symtab == 0) error (_("No line number information available.")); + CORE_ADDR start_pc, end_pc; if (sal.line > 0 && find_line_pc_range (sal, &start_pc, &end_pc)) { if (start_pc == end_pc) @@ -2491,7 +2485,6 @@ tfind_line_command (char *args, int from_tty) tfind_1 (tfind_range, 0, start_pc, end_pc - 1, from_tty); else tfind_1 (tfind_outside, 0, start_pc, end_pc - 1, from_tty); - do_cleanups (old_chain); } /* tfind range command */ @@ -2562,7 +2555,6 @@ tfind_outside_command (char *args, int from_tty) static void info_scope_command (char *args, int from_tty) { - struct symtabs_and_lines sals; struct symbol *sym; struct bound_minimal_symbol msym; const struct block *block; @@ -2579,17 +2571,18 @@ info_scope_command (char *args, int from_tty) event_location_up location = string_to_event_location (&args, current_language); - sals = decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, - NULL, NULL, 0); - if (sals.nelts == 0) + std::vector sals + = decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, + NULL, NULL, 0); + if (sals.empty ()) { /* Presumably decode_line_1 has already warned. */ return; } /* Resolve line numbers to PC. */ - resolve_sal_pc (&sals.sals[0]); - block = block_for_pc (sals.sals[0].pc); + resolve_sal_pc (&sals[0]); + block = block_for_pc (sals[0].pc); while (block != 0) {