diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/macroexp.c | 29 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/macscp.exp | 5 |
4 files changed, 35 insertions, 9 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d1458ad4bf9..5db0b0c53cf 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2008-07-26 Tom Tromey <tromey@redhat.com> + + PR gdb/1136: + * macroexp.c (get_punctuator) <punctuators>: Rearrange to put + longer tokens first. + 2008-07-26 Vladimir Prus <vladimir@codesourcery.com> Kill cmd_async_ok. diff --git a/gdb/macroexp.c b/gdb/macroexp.c index 0cb9575678e..8102bc081f0 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 }; diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 1a07bc1defe..4047c48bca0 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2008-07-26 Tom Tromey <tromey@redhat.com> + + * gdb.base/macscp.exp: Add test for macro lexing bug. + 2008-07-18 Tom Tromey <tromey@redhat.com> * gdb.base/macscp.exp: Add macro tests. diff --git a/gdb/testsuite/gdb.base/macscp.exp b/gdb/testsuite/gdb.base/macscp.exp index 90c2d9531f3..15d3f2f6430 100644 --- a/gdb/testsuite/gdb.base/macscp.exp +++ b/gdb/testsuite/gdb.base/macscp.exp @@ -472,3 +472,8 @@ gdb_test "macro undef M" \ gdb_test "print M" \ "No symbol \"M\" in current context\." \ "print expression with macro after user undef." + +# Regression test; this used to emit the wrong error. +gdb_test "macro expand SPLICE(x, y)" \ + "Token splicing is not implemented yet." \ + "macro splicing lexes correctly" |