+2010-08-16 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * breakpoint.c (update_watchpoint): Add source empty line. Prefer
+ EXP_STRING_REPARSE to EXP_STRING.
+ (watch_command_1): Set also EXP_STRING_REPARSE.
+ (delete_breakpoint): Free also EXP_STRING_REPARSE.
+ * breakpoint.h (struct breakpoint): New field exp_string_reparse.
+ Update comment for exp_string.
+
2010-08-16 Tom Tromey <tromey@redhat.com>
* value.c (release_value): Clear 'next' pointer.
if (within_current_scope && reparse)
{
char *s;
+
if (b->exp)
{
xfree (b->exp);
b->exp = NULL;
}
- s = b->exp_string;
+ s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
b->exp = parse_exp_1 (&s, b->exp_valid_block, 0);
/* If the meaning of expression itself changed, the old value is
no longer relevant. We don't want to report a watchpoint hit
t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
name = type_to_string (t);
- b->exp_string = xstrprintf ("* (%s *) %s", name,
- core_addr_to_string (addr));
+ b->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
+ core_addr_to_string (addr));
xfree (name);
+ b->exp_string = xstrprintf ("-location: %.*s",
+ (int) (exp_end - exp_start), exp_start);
+
/* The above expression is in C. */
b->language = language_c;
}
xfree (bpt->addr_string);
xfree (bpt->exp);
xfree (bpt->exp_string);
+ xfree (bpt->exp_string_reparse);
value_free (bpt->val);
xfree (bpt->source_file);
xfree (bpt->exec_pathname);
/* String form of the breakpoint condition (malloc'd), or NULL if there
is no condition. */
char *cond_string;
- /* String form of exp (malloc'd), or NULL if none. */
+ /* String form of exp to use for displaying to the user (malloc'd), or
+ NULL if none. */
char *exp_string;
+ /* String form to use for reparsing of EXP (malloc'd) or NULL. */
+ char *exp_string_reparse;
/* The expression we are watching, or NULL if not a watchpoint. */
struct expression *exp;