summaryrefslogtreecommitdiff
path: root/gdb/gdbtypes.c
diff options
context:
space:
mode:
authorDaniel Berlin <dberlin@dberlin.org>2000-04-04 04:53:50 +0000
committerDaniel Berlin <dberlin@dberlin.org>2000-04-04 04:53:50 +0000
commita86cba99026c21ea4d821d3e16ecfe8dcdf03d5a (patch)
tree525902af74fd0a85cc4e5eb1ece28dd7076df441 /gdb/gdbtypes.c
parentcc592f40ed56a7b2b0b09f840a38cd0bd2ee262c (diff)
downloadgdb-a86cba99026c21ea4d821d3e16ecfe8dcdf03d5a.tar.gz
C++ changes for 5.0, finally committed.
Diffstat (limited to 'gdb/gdbtypes.c')
-rw-r--r--gdb/gdbtypes.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index 0d5bee84489..9909871633d 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -1484,11 +1484,11 @@ check_stub_method (type, method_id, signature_id)
argtypetext = p;
while (*p)
{
- if (*p == '(')
+ if (*p == '(' || *p == '<')
{
depth += 1;
}
- else if (*p == ')')
+ else if (*p == ')' || *p == '>')
{
depth -= 1;
}
@@ -1527,11 +1527,11 @@ check_stub_method (type, method_id, signature_id)
argtypetext = p + 1;
}
- if (*p == '(')
+ if (*p == '(' || *p == '<')
{
depth += 1;
}
- else if (*p == ')')
+ else if (*p == ')' || *p == '>')
{
depth -= 1;
}
@@ -2199,6 +2199,16 @@ rank_one_type (parm, arg)
if (TYPE_CODE (arg) == TYPE_CODE_TYPEDEF)
arg = check_typedef (arg);
+ /*
+ Well, damnit, if the names are exactly the same,
+ i'll say they are exactly the same. This happens when we generate
+ method stubs. The types won't point to the same address, but they
+ really are the same.
+ */
+
+ if (TYPE_NAME (parm) == TYPE_NAME (arg))
+ return 0;
+
/* Check if identical after resolving typedefs */
if (parm == arg)
return 0;