Introduce ax_raw_byte and use it
authorSimon Marchi <simon.marchi@polymtl.ca>
Tue, 27 Oct 2015 13:33:29 +0000 (09:33 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Tue, 27 Oct 2015 13:33:29 +0000 (09:33 -0400)
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.

gdb/ChangeLog
gdb/ax-gdb.c
gdb/ax-general.c
gdb/ax.h

index 7b78890ef415cd9dc9136f8dff7e273933a2b7c6..768de09244bf25c8c2aa8614e96c4ce2b22737e1 100644 (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.
index 817fa53ed90b2f33f6c54ab79bde707df3976c9f..7091a4ae268a3364687d6a6ccee6138f76eb6e85 100644 (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.  */
index e5dc240576ad3681985b412a64254701049e0c4d..5c8a25bb3a092536d8565abc9128c702e8707534 100644 (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,
index eaa72ddb7039ef7c358dac75e87f397d6262b26a..1714bb4618bbd705f85727527db8209fdcdc2601 100644 (file)
--- a/gdb/ax.h
+++ b/gdb/ax.h
@@ -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);