diff options
author | Tom Tromey <tromey@redhat.com> | 2008-07-27 01:58:01 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2008-07-27 01:58:01 +0000 |
commit | ccb3ac8a121682a5fc5fd767f80872ef3e5c7b47 (patch) | |
tree | 901a10344c9f3703b079daac6713d2485aca07c4 /gdb/macroexp.c | |
parent | d27eff1ca45cabcb6c0dfa01d3d31ee6abf1d383 (diff) | |
download | gdb-ccb3ac8a121682a5fc5fd767f80872ef3e5c7b47.zip gdb-ccb3ac8a121682a5fc5fd767f80872ef3e5c7b47.tar.gz gdb-ccb3ac8a121682a5fc5fd767f80872ef3e5c7b47.tar.bz2 |
gdb:
PR gdb/1136:
* macroexp.c (get_punctuator) <punctuators>: Rearrange to put
longer tokens first.
gdb/testsuite:
* gdb.base/macscp.exp: Add test for macro lexing bug.
Diffstat (limited to 'gdb/macroexp.c')
-rw-r--r-- | gdb/macroexp.c | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/gdb/macroexp.c b/gdb/macroexp.c index 0cb9575..8102bc0 100644 --- a/gdb/macroexp.c +++ b/gdb/macroexp.c @@ -416,16 +416,27 @@ get_punctuator (struct macro_buffer *tok, char *p, char *end) { /* Here, speed is much less important than correctness and clarity. */ - /* ISO/IEC 9899:1999 (E) Section 6.4.6 Paragraph 1 */ + /* ISO/IEC 9899:1999 (E) Section 6.4.6 Paragraph 1. + Note that this table is ordered in a special way. A punctuator + which is a prefix of another punctuator must appear after its + "extension". Otherwise, the wrong token will be returned. */ static const char * const punctuators[] = { - "[", "]", "(", ")", "{", "}", ".", "->", - "++", "--", "&", "*", "+", "-", "~", "!", - "/", "%", "<<", ">>", "<", ">", "<=", ">=", "==", "!=", - "^", "|", "&&", "||", - "?", ":", ";", "...", - "=", "*=", "/=", "%=", "+=", "-=", "<<=", ">>=", "&=", "^=", "|=", - ",", "#", "##", - "<:", ":>", "<%", "%>", "%:", "%:%:", + "[", "]", "(", ")", "{", "}", "?", ";", ",", "~", + "...", ".", + "->", "--", "-=", "-", + "++", "+=", "+", + "*=", "*", + "!=", "!", + "&&", "&=", "&", + "/=", "/", + "%>", "%:%:", "%:", "%=", "%", + "^=", "^", + "##", "#", + ":>", ":", + "||", "|=", "|", + "<<=", "<<", "<=", "<:", "<%", "<", + ">>=", ">>", ">=", ">", + "==", "=", 0 }; |