public inbox for archer-commits@sourceware.org
help / color / mirror / Atom feed
* [SCM] archer-sergiodj-stap: Fixing small nits; commenting the code a little more.
@ 2011-03-20 23:20 sergiodj
0 siblings, 0 replies; only message in thread
From: sergiodj @ 2011-03-20 23:20 UTC (permalink / raw)
To: archer-commits
The branch, archer-sergiodj-stap has been updated
via fbdebe3724cc56ea4cca3dc836afe64ef37df27e (commit)
from 35e2367a245fac7a4d262e2fb88f84932aab9e87 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email.
- Log -----------------------------------------------------------------
commit fbdebe3724cc56ea4cca3dc836afe64ef37df27e
Author: Sergio Durigan Junior <sergiodj@redhat.com>
Date: Sun Mar 20 20:20:16 2011 -0300
Fixing small nits; commenting the code a little more.
-----------------------------------------------------------------------
Summary of changes:
gdb/stap-probe.c | 73 +++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 50 insertions(+), 23 deletions(-)
First 500 lines of diff:
diff --git a/gdb/stap-probe.c b/gdb/stap-probe.c
index eb2fb7f..30fb088 100644
--- a/gdb/stap-probe.c
+++ b/gdb/stap-probe.c
@@ -114,12 +114,20 @@ static struct stap_args_info dummy_stap_args_info =
the left side of the expression, and PREC is the precedence of the
last operator identified before calling the function. */
-static struct value *
-stap_evaluate_probe_argument_2 (struct stap_evaluation_info *eval_info,
- struct value *lhs, int prec);
+static struct value *stap_evaluate_probe_argument_2
+ (struct stap_evaluation_info *eval_info,
+ struct value *lhs, int prec);
-static struct value *
-stap_evaluate_conditionally (struct stap_evaluation_info *eval_info);
+/* This function is responsible for checking the necessary type of evaluation
+ depending on what is the next "thing" in the buffer. Valid values are:
+
+ - Unary operators;
+ - Integer constants;
+ - Register displacement, indirection, and direct access;
+ - Parenthesized operand. */
+
+static struct value *stap_evaluate_conditionally
+ (struct stap_evaluation_info *eval_info);
static void
stap_skip_whitespace_cond (char **s, int inside_paren)
@@ -780,12 +788,19 @@ stap_fetch_reg_value (struct stap_evaluation_info *eval_info,
#define REG_NAME_MAX_SIZE 20
char regname[REG_NAME_MAX_SIZE + 1];
int len, regnum, indirect_p = 0;
- struct value *ret;
+ struct value *ret = NULL;
/* The function which called us did not check if the expression
buffer was empty. */
gdb_assert (s && *s);
+ if (eval_info->compiling_p)
+ /* If we are compiling, we cannot return NULL because that would
+ lead to errors in future evaluations. That's why we just make
+ this dummy value, representing that the return value of this
+ function is not NULL. */
+ ret = value_from_longest (builtin_type (gdbarch)->builtin_int, 0);
+
/* Valid register name on x86 platforms are:
[paren]%{a-z0-9}[paren]
@@ -826,7 +841,7 @@ stap_fetch_reg_value (struct stap_evaluation_info *eval_info,
len = s - start;
- if (*s == ')')
+ if (indirect_p && *s == ')')
++s;
if (len >= REG_NAME_MAX_SIZE)
@@ -851,7 +866,7 @@ stap_fetch_reg_value (struct stap_evaluation_info *eval_info,
if (indirect_p)
{
struct type *t = NULL;
- enum agent_op aop;
+ enum agent_op aop = aop_ref32;
/* If the user has specified that the register must be indirected,
we should know what's the correct type to cast it before making
@@ -863,10 +878,21 @@ stap_fetch_reg_value (struct stap_evaluation_info *eval_info,
{
case STAP_ARG_BITNESS_UNDEFINED:
if (eval_info->compiling_p)
- aop = aop_ref32;
+ {
+ if (gdbarch_addr_bit (gdbarch) == 32)
+ aop = aop_ref32;
+ else
+ aop = aop_ref64;
+ }
else
- t = lookup_pointer_type
- (builtin_type (gdbarch)->builtin_unsigned_long);
+ {
+ if (gdbarch_addr_bit (gdbarch) == 32)
+ t = lookup_pointer_type
+ (builtin_type (gdbarch)->builtin_uint32);
+ else
+ t = lookup_pointer_type
+ (builtin_type (gdbarch)->builtin_uint64);
+ }
break;
case STAP_ARG_BITNESS_32BIT_SIGNED:
@@ -932,7 +958,7 @@ stap_fetch_reg_value (struct stap_evaluation_info *eval_info,
some modifications to it before. */
eval_info->exp_buf = s;
- return eval_info->compiling_p ? (struct value *) 1 : ret;
+ return ret;
}
/* This function tries to evaluate a single operand of the expression.
@@ -949,7 +975,14 @@ stap_evaluate_single_operand (struct stap_evaluation_info *eval_info)
struct gdbarch *gdbarch = eval_info->gdbarch;
struct frame_info *frame = eval_info->frame;
enum stap_arg_bitness bitness = eval_info->bitness;
- struct value *res;
+ struct value *res = NULL;
+
+ if (eval_info->compiling_p)
+ /* If we are compiling, we cannot return NULL because that would
+ lead to errors in future evaluations. That's why we just make
+ this dummy value, representing that the return value of this
+ function is not NULL. */
+ res = value_from_longest (builtin_type (gdbarch)->builtin_int, 0);
switch (*eval_info->exp_buf)
{
@@ -957,7 +990,7 @@ stap_evaluate_single_operand (struct stap_evaluation_info *eval_info)
{
char c = *eval_info->exp_buf;
- /* This is a binary operator (either `-' or `~').
+ /* This is an unary operator (either `-' or `~').
If it is followed by a parenthesis, and this parenthesis
is NOT followed by a `%', then we are dealing with an expression
@@ -1122,6 +1155,7 @@ stap_evaluate_single_operand (struct stap_evaluation_info *eval_info)
{
/* Register access, with or without indirection. */
res = stap_fetch_reg_value (eval_info, /*displacement=*/NULL);
+ eval_info->exp_buf = skip_spaces (eval_info->exp_buf);
}
break;
@@ -1132,17 +1166,9 @@ stap_evaluate_single_operand (struct stap_evaluation_info *eval_info)
}
}
- return eval_info->compiling_p ? (struct value *) 1 : res;
+ return res;
}
-/* This function is responsible for checking the necessary type of evaluation
- depending on what is the next "thing" in the buffer. Valid values are:
-
- - Unary operators;
- - Integer constants;
- - Register displacement, indirection, and direct access;
- - Parenthesized operand. */
-
static struct value *
stap_evaluate_conditionally (struct stap_evaluation_info *eval_info)
{
@@ -1170,6 +1196,7 @@ stap_evaluate_conditionally (struct stap_evaluation_info *eval_info)
if (*eval_info->exp_buf != ')')
error (_("Missign close-paren on expression `%s'."),
eval_info->saved_expr);
+
++eval_info->exp_buf;
eval_info->exp_buf = skip_spaces (eval_info->exp_buf);
}
hooks/post-receive
--
Repository for Project Archer.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2011-03-20 23:20 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-03-20 23:20 [SCM] archer-sergiodj-stap: Fixing small nits; commenting the code a little more sergiodj
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).