Index: gdb/gdbserver/ax.h |
diff --git a/gdb/gdbserver/ax.h b/gdb/gdbserver/ax.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3ada3dd2c1f19020ce788dfa7cee2c124ebcb152 |
--- /dev/null |
+++ b/gdb/gdbserver/ax.h |
@@ -0,0 +1,74 @@ |
+/* Data structures and functions associated with agent expressions in GDB. |
+ Copyright (C) 2009-2012 Free Software Foundation, Inc. |
+ |
+ This file is part of GDB. |
+ |
+ This program is free software; you can redistribute it and/or modify |
+ it under the terms of the GNU General Public License as published by |
+ the Free Software Foundation; either version 3 of the License, or |
+ (at your option) any later version. |
+ |
+ This program is distributed in the hope that it will be useful, |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ GNU General Public License for more details. |
+ |
+ You should have received a copy of the GNU General Public License |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
+ |
+#if !defined (AX_H) |
+#define AX_H 1 |
+ |
+#include "server.h" |
+#include "regcache.h" |
+ |
+#ifdef IN_PROCESS_AGENT |
+extern int debug_agent; |
+#define debug_threads debug_agent |
+#endif |
+ |
+struct traceframe; |
+ |
+/* Enumeration of the different kinds of things that can happen during |
+ agent expression evaluation. */ |
+ |
+enum eval_result_type |
+ { |
+ expr_eval_no_error, |
+ expr_eval_empty_expression, |
+ expr_eval_empty_stack, |
+ expr_eval_stack_overflow, |
+ expr_eval_stack_underflow, |
+ expr_eval_unhandled_opcode, |
+ expr_eval_unrecognized_opcode, |
+ expr_eval_divide_by_zero, |
+ expr_eval_invalid_goto |
+ }; |
+ |
+struct agent_expr |
+{ |
+ int length; |
+ |
+ unsigned char *bytes; |
+}; |
+ |
+#ifndef IN_PROCESS_AGENT |
+ |
+/* The packet form of an agent expression consists of an 'X', number |
+ of bytes in expression, a comma, and then the bytes. */ |
+struct agent_expr *gdb_parse_agent_expr (char **actparm); |
+ |
+/* Convert the bytes of an agent expression back into hex digits, so |
+ they can be printed or uploaded. This allocates the buffer, |
+ callers should free when they are done with it. */ |
+char *gdb_unparse_agent_expr (struct agent_expr *aexpr); |
+void emit_prologue (void); |
+void emit_epilogue (void); |
+enum eval_result_type compile_bytecodes (struct agent_expr *aexpr); |
+#endif |
+ |
+enum eval_result_type gdb_eval_agent_expr (struct regcache *regcache, |
+ struct traceframe *tframe, |
+ struct agent_expr *aexpr, |
+ ULONGEST *rslt); |
+#endif /* AX_H */ |