Introduce ax_raw_byte and use it

This patch was taken directly from Pedro's branch.

ax_simple is used to append an agent expression operator to an agent
expression string.  Therefore, it takes an enum agent_op as input.
There is an instance where it's called to append a raw byte, unrelated
to the enum.  It makes the build fail in C++ mode.

This patch introduces ax_raw_byte for that purpose and uses it.

gdb/ChangeLog:

	* ax.h (ax_raw_byte): New declaration.
	* ax-general.c (ax_raw_byte): New function.
	(ax_simple): Use ax_raw_byte.
	* ax-gdb.c (gen_printf): Likewise.
This commit is contained in:
Simon Marchi 2015-10-27 09:33:29 -04:00
parent a480de357b
commit 70b8286a97
4 changed files with 20 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2015-10-27 Simon Marchi <simon.marchi@polymtl.ca>
* ax.h (ax_raw_byte): New declaration.
* ax-general.c (ax_raw_byte): New function.
(ax_simple): Use ax_raw_byte.
* ax-gdb.c (gen_printf): Likewise.
2015-10-27 Simon Marchi <simon.marchi@polymtl.ca>
* ada-lang.h (GROW_VECT): Add cast.

View File

@ -2564,7 +2564,7 @@ gen_printf (CORE_ADDR scope, struct gdbarch *gdbarch,
/* Issue the printf bytecode proper. */
ax_simple (ax, aop_printf);
ax_simple (ax, nargs);
ax_raw_byte (ax, nargs);
ax_string (ax, format, fmtlen);
/* And terminate. */

View File

@ -133,13 +133,20 @@ read_const (struct agent_expr *x, int o, int n)
return accum;
}
/* See ax.h. */
void
ax_raw_byte (struct agent_expr *x, gdb_byte byte)
{
grow_expr (x, 1);
x->buf[x->len++] = byte;
}
/* Append a simple operator OP to EXPR. */
void
ax_simple (struct agent_expr *x, enum agent_op op)
{
grow_expr (x, 1);
x->buf[x->len++] = op;
ax_raw_byte (x, op);
}
/* Append a pick operator to EXPR. DEPTH is the stack item to pick,

View File

@ -190,6 +190,9 @@ extern struct agent_expr *new_agent_expr (struct gdbarch *, CORE_ADDR);
extern void free_agent_expr (struct agent_expr *);
extern struct cleanup *make_cleanup_free_agent_expr (struct agent_expr *);
/* Append a raw byte to EXPR. */
extern void ax_raw_byte (struct agent_expr *expr, gdb_byte byte);
/* Append a simple operator OP to EXPR. */
extern void ax_simple (struct agent_expr *EXPR, enum agent_op OP);