mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-01-26 11:34:43 +00:00
gdb
PR gdb/2506: * c-exp.y (string_exp): New production. (exp): Use it. gdb/testsuite * gdb.base/exprs.exp (test_expr): Add test for string concatenation.
This commit is contained in:
parent
4267b19fc7
commit
c209f8472e
@ -1,3 +1,9 @@
|
||||
2008-10-22 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
PR gdb/2506:
|
||||
* c-exp.y (string_exp): New production.
|
||||
(exp): Use it.
|
||||
|
||||
2008-10-21 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* mips-tdep.c (mips_n32n64_fp_arg_chunk_p): Update TYPE_FIELD_STATIC
|
||||
|
35
gdb/c-exp.y
35
gdb/c-exp.y
@ -184,7 +184,7 @@ static int parse_number (char *, int, int, YYSTYPE *);
|
||||
%token <ssym> NAME /* BLOCKNAME defined below to give it higher precedence. */
|
||||
%token <voidval> COMPLETE
|
||||
%token <tsym> TYPENAME
|
||||
%type <sval> name
|
||||
%type <sval> name string_exp
|
||||
%type <ssym> name_not_typename
|
||||
%type <tsym> typename
|
||||
|
||||
@ -562,7 +562,34 @@ exp : SIZEOF '(' type ')' %prec UNARY
|
||||
write_exp_elt_opcode (OP_LONG); }
|
||||
;
|
||||
|
||||
exp : STRING
|
||||
string_exp:
|
||||
STRING
|
||||
{
|
||||
/* We copy the string here, and not in the
|
||||
lexer, to guarantee that we do not leak a
|
||||
string. Note that we follow the
|
||||
NUL-termination convention of the
|
||||
lexer. */
|
||||
$$.length = $1.length;
|
||||
$$.ptr = malloc ($1.length + 1);
|
||||
memcpy ($$.ptr, $1.ptr, $1.length + 1);
|
||||
}
|
||||
|
||||
| string_exp STRING
|
||||
{
|
||||
/* Note that we NUL-terminate here, but just
|
||||
for convenience. */
|
||||
struct stoken t;
|
||||
t.length = $1.length + $2.length;
|
||||
t.ptr = malloc (t.length + 1);
|
||||
memcpy (t.ptr, $1.ptr, $1.length);
|
||||
memcpy (t.ptr + $1.length, $2.ptr, $2.length + 1);
|
||||
free ($1.ptr);
|
||||
$$ = t;
|
||||
}
|
||||
;
|
||||
|
||||
exp : string_exp
|
||||
{ /* C strings are converted into array constants with
|
||||
an explicit null byte added at the end. Thus
|
||||
the array upper bound is the string length.
|
||||
@ -583,7 +610,9 @@ exp : STRING
|
||||
write_exp_elt_opcode (OP_ARRAY);
|
||||
write_exp_elt_longcst ((LONGEST) 0);
|
||||
write_exp_elt_longcst ((LONGEST) ($1.length));
|
||||
write_exp_elt_opcode (OP_ARRAY); }
|
||||
write_exp_elt_opcode (OP_ARRAY);
|
||||
free ($1.ptr);
|
||||
}
|
||||
;
|
||||
|
||||
/* C++. */
|
||||
|
@ -1,3 +1,8 @@
|
||||
2008-10-22 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* gdb.base/exprs.exp (test_expr): Add test for string
|
||||
concatenation.
|
||||
|
||||
2008-10-19 Pedro Alves <pedro@codesourcery.com>
|
||||
|
||||
* configure.ac: Output gdb.python/Makefile.
|
||||
|
@ -248,3 +248,7 @@ gdb_test "print (void*) ((long long) (unsigned long) -1 + 1)" \
|
||||
if [expr ! $ok] { setup_xfail "*-*-*" }
|
||||
gdb_test "print (void*) (~((long long)(unsigned long) -1) - 1)" \
|
||||
"warning: value truncated.*" "truncate (void*) 0xffffffff00000000 - 1"
|
||||
|
||||
# String concatentation.
|
||||
test_expr "print \"x\" \"y\"" "\\$\[0-9\]* = \"xy\""
|
||||
test_expr "print \"x\" \"y\" \"z\"" "\\$\[0-9\]* = \"xyz\""
|
||||
|
Loading…
x
Reference in New Issue
Block a user