This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [patch] document that check_typedef can throw an exception
- From: Doug Evans <dje at google dot com>
- To: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Wed, 9 Nov 2011 23:08:36 -0800
- Subject: Re: [patch] document that check_typedef can throw an exception
- References: <20111027215551.97B0C246191@ruffy.mtv.corp.google.com> <20111028020913.GA4765@host1.jankratochvil.net>
On Thu, Oct 27, 2011 at 7:09 PM, Jan Kratochvil
<jan.kratochvil@redhat.com> wrote:
> On Thu, 27 Oct 2011 23:55:51 +0200, Doug Evans wrote:
> [...]
>> ? ? ? * gdbtypes.c (check_typedef): Document that this function can
>> ? ? ? throw an exception.
> [...]
>> + ? NOTE: Lookup of types for opaque types can throw some errors during
>> + ? invalid symbol files. ?Thus this function can throw an exception.
>
> Always by expanding opaque types:
>
> Either lookup_symbol_aux_quick:
> ? ? ? ?error (_("\
> ? ? ? ?Internal: %s symbol `%s' found in %s psymtab but not in symtab.\n\
> which is not completely correct but it was commonly happenning and it still
> may happen.
>
> Or just RETURN_QUIT from new CUs being expanded
> ...->dwarf2_compute_name->c_print_type->... (there some QUIT; statements).
I committed this.
2011-11-09 Doug Evans <dje@google.com>
* gdbtypes.c (check_typedef): Document that this function can
throw an exception.
Index: gdbtypes.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbtypes.c,v
retrieving revision 1.220
diff -u -p -r1.220 gdbtypes.c
--- gdbtypes.c 14 Oct 2011 20:22:17 -0000 1.220
+++ gdbtypes.c 10 Nov 2011 06:53:09 -0000
@@ -1454,6 +1454,10 @@ stub_noname_complaint (void)
not been computed and we're either in the middle of reading symbols, or
there was no name for the typedef in the debug info.
+ NOTE: Lookup of opaque types can throw errors for invalid symbol files.
+ QUITs in the symbol reading code can also throw.
+ Thus this function can throw an exception.
+
If TYPE is a TYPE_CODE_TYPEDEF, its length is updated to the length of
the target type.