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 | |
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.
-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 d1458ad..5db0b0c 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 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 }; diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 1a07bc1..4047c48 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 90c2d95..15d3f2f 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" |