Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Jim Ingham <jingham@apple.com>
To: gdb-patches@sources.redhat.com
Subject: Re:  [rfc breakpoint] Catch exceptions
Date: Tue, 25 Mar 2003 23:51:00 -0000	[thread overview]
Message-ID: <B4D17DA2-5F1C-11D7-BFD4-00039379E320@apple.com> (raw)
In-Reply-To: <1048606641.15061.ezmlm@sources.redhat.com>

One thing we had to worry about at least on Mac OS X is that we don't 
use a shared libstdc++, rather every shlib that uses C++ get its own 
copy of all the libsupc++ code.  So there are actually many copies of 
__cxa__begin_catch hanging around.  To do this properly, you have to 
search exhaustively for these symbols, not just take the first hit.  
Moreover, you have to redo it on every shared library load, or you will 
miss some.  This still might bite you on other systems, for instance if 
out of paranoia somebody had linked their shlib or executable 
statically to libstdc++.a (so they wouldn't get bit by changing ABI 
issues or whatever).

BTW. The more general problem of a symbol resolving to multiple 
instances - for instance setting file:line breakpoints in inlined 
functions or template method defn's - is something we need to address.  
It really ticks off our C++ friends.  I thought I was going to have 
time to think about this in the next month or two, but I got 
sidetracked on other issues.  But I will need to get back to it after 
our WWDC (in June).

I thought from some comments in other notes that this was something you 
were thinking about as well, Daniel.  Is that true?

Jim

On Tuesday, March 25, 2003, at 07:37  AM, 
gdb-patches-digest-help@sources.redhat.com wrote:

> +static int
> +handle_gnu_v3_exceptions (int tempflag, char *cond_string,
> +			  enum exception_event_kind ex_event, int from_tty)
> +{
> +  struct minimal_symbol *trigger_func;
> +  const char *trigger_func_name;
> +  struct symtab_and_line sal;
> +  struct breakpoint *b;
> +
> +  if (ex_event == EX_EVENT_CATCH)
> +    trigger_func_name = "__cxa_begin_catch";
> +  else
> +    trigger_func_name = "__cxa_throw";
> +
> +  trigger_func = lookup_minimal_symbol (trigger_func_name, NULL, 
> NULL);
> +  if (trigger_func == 0)
> +    return 0;
> +  sal = find_msymbol_start_sal (trigger_func, 1);
> +
> +  b = set_raw_breakpoint (sal, bp_breakpoint);
> +  set_breakpoint_count (breakpoint_count + 1);
> +  b->number = breakpoint_count;
> +  b->cond = NULL;
> +  b->cond_string = (cond_string == NULL) ?
> +    NULL : savestring (cond_string, strlen (cond_string));
> +  b->thread = -1;
> +  b->addr_string = xstrdup (trigger_func_name);
> +  b->enable_state = bp_enabled;
> +  b->disposition = tempflag ? disp_del : disp_donttouch;
> +  mention (b);
> +  b->ep_type = ep_gnuv3;
> +
> +  b->print = print_exception_catchpoint;
> +  b->print_one = print_one_exception_catchpoint;
> +  b->print_mention = print_mention_exception_catchpoint;
> +  return 1;
> +}
> +
>
--
Jim Ingham                                   jingham@apple.com
Developer Tools
Apple Computer


       reply	other threads:[~2003-03-25 23:51 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1048606641.15061.ezmlm@sources.redhat.com>
2003-03-25 23:51 ` Jim Ingham [this message]
2003-03-26  0:03   ` Daniel Jacobowitz
2003-03-26  2:14     ` Jim Ingham
2003-03-26 17:48 Michael Elizabeth Chastain
2003-03-26 22:49 ` Jim Ingham
  -- strict thread matches above, loose matches on Subject: below --
2003-03-25  3:01 Daniel Jacobowitz
2003-03-25 16:05 ` Andrew Cagney
2003-03-25 16:14   ` Daniel Jacobowitz
2003-04-27 17:52 ` Daniel Jacobowitz
2003-05-02  0:13   ` David Carlton
2003-05-02  0:25     ` Daniel Jacobowitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=B4D17DA2-5F1C-11D7-BFD4-00039379E320@apple.com \
    --to=jingham@apple.com \
    --cc=gdb-patches@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox