diff options
author | Pedro Alves <palves@redhat.com> | 2017-11-25 00:33:05 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2017-11-25 00:33:05 +0000 |
commit | deeeba559bd0c18e06dba19f44571ee8a218fcdb (patch) | |
tree | 5b93948a041dad34f0fee70953d017481359a4bd /gdb | |
parent | a81aaca0578ee91ce1cee56c0a31e26c2a5ef581 (diff) | |
download | gdb-deeeba559bd0c18e06dba19f44571ee8a218fcdb.zip gdb-deeeba559bd0c18e06dba19f44571ee8a218fcdb.tar.gz gdb-deeeba559bd0c18e06dba19f44571ee8a218fcdb.tar.bz2 |
Use TOLOWER in SYMBOL_HASH_NEXT
The support for setting breakpoint in functions with ABI tags patch
will add a use of SYMBOL_HASH_NEXT in cp-support.c, which fails to
compile with:
src/gdb/cp-support.c:38:0:
src/gdb/cp-support.c: In function ‘unsigned int cp_search_name_hash(const char*)’:
src/gdb/../include/safe-ctype.h:148:20: error: ‘do_not_use_tolower_with_safe_ctype’ was not declared in this scope
#define tolower(c) do_not_use_tolower_with_safe_ctype
^
src/gdb/minsyms.h:174:18: note: in expansion of macro ‘tolower’
((hash) * 67 + tolower ((unsigned char) (c)) - 113)
^
src/gdb/cp-support.c:1677:14: note: in expansion of macro ‘SYMBOL_HASH_NEXT’
hash = SYMBOL_HASH_NEXT (hash, *string);
^
This fixes the problem before it happens.
I was somewhat worried about whether this might have an impact with
languages that are case insensitive, but I convinced myself that it
doesn't. As bonus, this improves GDB's minsym interning performance a
bit (3%-10%). See
<https://sourceware.org/ml/gdb/2017-11/msg00021.html>.
gdb/ChangeLog:
2017-11-25 Pedro Alves <palves@redhat.com>
* dictionary.c: Include "safe-ctype.h".
* minsyms.c: Include "safe-ctype.h".
* minsyms.c (SYMBOL_HASH_NEXT): Use TOLOWER instead of tolower.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/dictionary.c | 1 | ||||
-rw-r--r-- | gdb/minsyms.c | 1 | ||||
-rw-r--r-- | gdb/minsyms.h | 2 |
4 files changed, 9 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 4e0b45e..61db1b1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2017-11-25 Pedro Alves <palves@redhat.com> + + * dictionary.c: Include "safe-ctype.h". + * minsyms.c: Include "safe-ctype.h". + * minsyms.c (SYMBOL_HASH_NEXT): Use TOLOWER instead of tolower. + 2017-11-25 Pedro Alves <palves@redhat.com> * completer.c (complete_line_internal_1): Skip spaces until the diff --git a/gdb/dictionary.c b/gdb/dictionary.c index fb30753..7d26efb 100644 --- a/gdb/dictionary.c +++ b/gdb/dictionary.c @@ -26,6 +26,7 @@ #include "symtab.h" #include "buildsym.h" #include "dictionary.h" +#include "safe-ctype.h" /* This file implements dictionaries, which are tables that associate symbols to names. They are represented by an opaque type 'struct diff --git a/gdb/minsyms.c b/gdb/minsyms.c index a0d3bd5..4898da1 100644 --- a/gdb/minsyms.c +++ b/gdb/minsyms.c @@ -52,6 +52,7 @@ #include "cli/cli-utils.h" #include "symbol.h" #include <algorithm> +#include "safe-ctype.h" /* See minsyms.h. */ diff --git a/gdb/minsyms.h b/gdb/minsyms.h index f326be9..5c0dde4 100644 --- a/gdb/minsyms.h +++ b/gdb/minsyms.h @@ -177,7 +177,7 @@ unsigned int msymbol_hash_iw (const char *); requirements. */ #define SYMBOL_HASH_NEXT(hash, c) \ - ((hash) * 67 + tolower ((unsigned char) (c)) - 113) + ((hash) * 67 + TOLOWER ((unsigned char) (c)) - 113) |