53 lines
2.1 KiB
Diff
53 lines
2.1 KiB
Diff
|
2005-01-21 Jeff Johnston <jjohnstn@redhat.com>
|
||
|
|
||
|
* linespec.c (collect_methods): Don't do special processing for
|
||
|
destructors as this will be handled in find_methods.
|
||
|
(find_methods): Fix ctor check to also check for dtor.
|
||
|
|
||
|
2007-10-14 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||
|
|
||
|
Port to GDB-6.7.
|
||
|
|
||
|
Index: gdb-6.7/gdb/linespec.c
|
||
|
===================================================================
|
||
|
--- gdb-6.7.orig/gdb/linespec.c 2007-10-13 05:26:33.000000000 +0200
|
||
|
+++ gdb-6.7/gdb/linespec.c 2007-10-14 23:31:03.000000000 +0200
|
||
|
@@ -398,12 +398,14 @@ add_matching_methods (int method_counter
|
||
|
|
||
|
/* Check for special case of looking for member that
|
||
|
doesn't have a mangled name provided. This will happen
|
||
|
- when we have in-charge and not-in-charge constructors.
|
||
|
+ when we have in-charge and not-in-charge ctors/dtors.
|
||
|
Since we don't have a mangled name to work with, if we
|
||
|
- look for the symbol, we can only find the class itself.
|
||
|
+ look for the symbol, we can at best find the class itself.
|
||
|
We can find the information we need in the minimal symbol
|
||
|
table which has the full member name information we need. */
|
||
|
- if (strlen (phys_name) <= strlen (class_name))
|
||
|
+ if (strlen (phys_name) <= strlen (class_name)
|
||
|
+ || (strlen (phys_name) == strlen (class_name) + 1
|
||
|
+ && phys_name[0] == '~'))
|
||
|
return add_minsym_members (class_name, phys_name, msym_arr);
|
||
|
|
||
|
/* Destructor is handled by caller, don't add it to
|
||
|
@@ -1731,6 +1733,11 @@ collect_methods (char *copy, struct type
|
||
|
{
|
||
|
int i1 = 0; /* Counter for the symbol array. */
|
||
|
|
||
|
+#if 0
|
||
|
+ /* Ignore this special method for getting destructors because
|
||
|
+ find_methods is more robust and can handle multiple
|
||
|
+ destructors which is the case when gcc generates a not-in-charge
|
||
|
+ vs an in-charge destructor. */
|
||
|
if (destructor_name_p (copy, t))
|
||
|
{
|
||
|
/* Destructors are a special case. */
|
||
|
@@ -1749,6 +1756,7 @@ collect_methods (char *copy, struct type
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
+#endif
|
||
|
i1 = find_methods (t, copy, SYMBOL_LANGUAGE (sym_class), sym_arr, msym_arr);
|
||
|
|
||
|
return i1;
|