]>
Commit | Line | Data |
---|---|---|
3a58abaf AM |
1 | 2005-01-21 Jeff Johnston <jjohnstn@redhat.com> |
2 | ||
3 | * linespec.c (collect_methods): Don't do special processing for | |
4 | destructors as this will be handled in find_methods. | |
5 | (find_methods): Fix ctor check to also check for dtor. | |
6 | ||
7 | 2007-10-14 Jan Kratochvil <jan.kratochvil@redhat.com> | |
8 | ||
9 | Port to GDB-6.7. | |
10 | ||
11 | Index: gdb-6.7/gdb/linespec.c | |
12 | =================================================================== | |
13 | --- gdb-6.7.orig/gdb/linespec.c 2007-10-13 05:26:33.000000000 +0200 | |
14 | +++ gdb-6.7/gdb/linespec.c 2007-10-14 23:31:03.000000000 +0200 | |
15 | @@ -398,12 +398,14 @@ add_matching_methods (int method_counter | |
16 | ||
17 | /* Check for special case of looking for member that | |
18 | doesn't have a mangled name provided. This will happen | |
19 | - when we have in-charge and not-in-charge constructors. | |
20 | + when we have in-charge and not-in-charge ctors/dtors. | |
21 | Since we don't have a mangled name to work with, if we | |
22 | - look for the symbol, we can only find the class itself. | |
23 | + look for the symbol, we can at best find the class itself. | |
24 | We can find the information we need in the minimal symbol | |
25 | table which has the full member name information we need. */ | |
26 | - if (strlen (phys_name) <= strlen (class_name)) | |
27 | + if (strlen (phys_name) <= strlen (class_name) | |
28 | + || (strlen (phys_name) == strlen (class_name) + 1 | |
29 | + && phys_name[0] == '~')) | |
30 | return add_minsym_members (class_name, phys_name, msym_arr); | |
31 | ||
32 | /* Destructor is handled by caller, don't add it to | |
33 | @@ -1731,6 +1733,11 @@ collect_methods (char *copy, struct type | |
34 | { | |
35 | int i1 = 0; /* Counter for the symbol array. */ | |
36 | ||
37 | +#if 0 | |
38 | + /* Ignore this special method for getting destructors because | |
39 | + find_methods is more robust and can handle multiple | |
40 | + destructors which is the case when gcc generates a not-in-charge | |
41 | + vs an in-charge destructor. */ | |
42 | if (destructor_name_p (copy, t)) | |
43 | { | |
44 | /* Destructors are a special case. */ | |
45 | @@ -1749,6 +1756,7 @@ collect_methods (char *copy, struct type | |
46 | } | |
47 | } | |
48 | else | |
49 | +#endif | |
50 | i1 = find_methods (t, copy, SYMBOL_LANGUAGE (sym_class), sym_arr, msym_arr); | |
51 | ||
52 | return i1; |