diff options
author | Joel Brobecker <brobecker@gnat.com> | 2011-11-29 01:00:52 +0000 |
---|---|---|
committer | Joel Brobecker <brobecker@gnat.com> | 2011-11-29 01:00:52 +0000 |
commit | 1a1d55138808328dcba03007dad0dd027b4199ad (patch) | |
tree | 02e75d9056bcfcea9c5267465053e42b7ee095df /gdb/ada-lang.c | |
parent | 8ee00506e14ddaf15f1e374cb5ab9d3c86fab971 (diff) | |
download | gdb-1a1d55138808328dcba03007dad0dd027b4199ad.zip gdb-1a1d55138808328dcba03007dad0dd027b4199ad.tar.gz gdb-1a1d55138808328dcba03007dad0dd027b4199ad.tar.bz2 |
wrong value returned by ada-lang.c:compare_names
The ada-lang.c:compare_names function returns the wrong value
when the first string starts with the same contents as the second
string, followed by '_' and then some characters that do not make
a symbol name suffix. For instance:
string1 = "generics__test_generics__instance__print"
string2 = "generics__test_generics"
In that case, compare_names (string1, string2) return -1, when
clearly, string1 is greater than string2.
A consequence of this problem is that GDB may fail to lookup
"generics.test_generics" from our partial symtabs, because
partial symbols are ordered by strcmp_iw_ordered:
(gdb) b generics.test_generics
Function "generics.test_generics" not defined.
Make breakpoint pending on future shared library load? (y or [n])
gdb/ChangeLog:
* ada-lang.c (compare_names): Fix wrong return value in case
string1 starts with the same contents as string2, followed
by an underscore that do not start a symbol name suffix.
gdb/testsuite/ChangeLog:
* gdb.ada/fullname_bp: New testcase.
Diffstat (limited to 'gdb/ada-lang.c')
-rw-r--r-- | gdb/ada-lang.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index e396596..f960a25 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -4894,7 +4894,7 @@ compare_names (const char *string1, const char *string2) if (is_name_suffix (string1)) return 0; else - return -1; + return 1; } /* FALLTHROUGH */ default: |