Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Unified Diff: gdb/gdbserver/ax.h

Issue 124383005: GDB 7.6.50 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@upstream
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gdb/gdbserver/acinclude.m4 ('k') | gdb/gdbserver/ax.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gdb/gdbserver/ax.h
diff --git a/gdb/gdbserver/ax.h b/gdb/gdbserver/ax.h
index 3ada3dd2c1f19020ce788dfa7cee2c124ebcb152..3ecc5d8c46f5d079b105378922ba0ee2683a697d 100644
--- a/gdb/gdbserver/ax.h
+++ b/gdb/gdbserver/ax.h
@@ -1,5 +1,5 @@
/* Data structures and functions associated with agent expressions in GDB.
- Copyright (C) 2009-2012 Free Software Foundation, Inc.
+ Copyright (C) 2009-2013 Free Software Foundation, Inc.
This file is part of GDB.
@@ -67,8 +67,77 @@ 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);
+/* The context when evaluating agent expression. */
+
+struct eval_agent_expr_context
+{
+ /* The registers when evaluating agent expression. */
+ struct regcache *regcache;
+ /* The traceframe, if any, when evaluating agent expression. */
+ struct traceframe *tframe;
+ /* The tracepoint, if any, when evaluating agent expression. */
+ struct tracepoint *tpoint;
+};
+
+enum eval_result_type
+ gdb_eval_agent_expr (struct eval_agent_expr_context *ctx,
+ struct agent_expr *aexpr,
+ ULONGEST *rslt);
+
+/* Bytecode compilation function vector. */
+
+struct emit_ops
+{
+ void (*emit_prologue) (void);
+ void (*emit_epilogue) (void);
+ void (*emit_add) (void);
+ void (*emit_sub) (void);
+ void (*emit_mul) (void);
+ void (*emit_lsh) (void);
+ void (*emit_rsh_signed) (void);
+ void (*emit_rsh_unsigned) (void);
+ void (*emit_ext) (int arg);
+ void (*emit_log_not) (void);
+ void (*emit_bit_and) (void);
+ void (*emit_bit_or) (void);
+ void (*emit_bit_xor) (void);
+ void (*emit_bit_not) (void);
+ void (*emit_equal) (void);
+ void (*emit_less_signed) (void);
+ void (*emit_less_unsigned) (void);
+ void (*emit_ref) (int size);
+ void (*emit_if_goto) (int *offset_p, int *size_p);
+ void (*emit_goto) (int *offset_p, int *size_p);
+ void (*write_goto_address) (CORE_ADDR from, CORE_ADDR to, int size);
+ void (*emit_const) (LONGEST num);
+ void (*emit_call) (CORE_ADDR fn);
+ void (*emit_reg) (int reg);
+ void (*emit_pop) (void);
+ void (*emit_stack_flush) (void);
+ void (*emit_zero_ext) (int arg);
+ void (*emit_swap) (void);
+ void (*emit_stack_adjust) (int n);
+
+ /* Emit code for a generic function that takes one fixed integer
+ argument and returns a 64-bit int (for instance, tsv getter). */
+ void (*emit_int_call_1) (CORE_ADDR fn, int arg1);
+
+ /* Emit code for a generic function that takes one fixed integer
+ argument and a 64-bit int from the top of the stack, and returns
+ nothing (for instance, tsv setter). */
+ void (*emit_void_call_2) (CORE_ADDR fn, int arg1);
+
+ /* Emit code specialized for common combinations of compare followed
+ by a goto. */
+ void (*emit_eq_goto) (int *offset_p, int *size_p);
+ void (*emit_ne_goto) (int *offset_p, int *size_p);
+ void (*emit_lt_goto) (int *offset_p, int *size_p);
+ void (*emit_le_goto) (int *offset_p, int *size_p);
+ void (*emit_gt_goto) (int *offset_p, int *size_p);
+ void (*emit_ge_goto) (int *offset_p, int *size_p);
+};
+
+extern CORE_ADDR current_insn_ptr;
+extern int emit_error;
+
#endif /* AX_H */
« no previous file with comments | « gdb/gdbserver/acinclude.m4 ('k') | gdb/gdbserver/ax.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698