public inbox for archer-commits@sourceware.org
help / color / mirror / Atom feed
* [SCM] archer-sergiodj-stap-patch-split: Fixing some gdbarch bugs, implementing stap_fetch_register, implementing arch-specific methods.
@ 2011-08-23 13:29 sergiodj
0 siblings, 0 replies; only message in thread
From: sergiodj @ 2011-08-23 13:29 UTC (permalink / raw)
To: archer-commits
The branch, archer-sergiodj-stap-patch-split has been updated
via 4530787bc40d7e9ba75b1fb0643c45a69fa2f245 (commit)
from a5e3177d79455f705dac963071e25d2da6c1b748 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email.
- Log -----------------------------------------------------------------
commit 4530787bc40d7e9ba75b1fb0643c45a69fa2f245
Author: Sergio Durigan Junior <sergiodj@redhat.com>
Date: Tue Aug 23 10:29:17 2011 -0300
Fixing some gdbarch bugs, implementing stap_fetch_register, implementing arch-specific methods.
-----------------------------------------------------------------------
Summary of changes:
gdb/amd64-linux-tdep.c | 5 +-
gdb/gdbarch.c | 53 +++++--------
gdb/gdbarch.h | 59 ++++++++-----
gdb/gdbarch.sh | 44 +++++-----
gdb/i386-linux-tdep.c | 5 +-
gdb/i386-tdep.c | 2 +
gdb/i386-tdep.h | 6 +-
gdb/ppc-linux-tdep.c | 79 ++++++++++++++++++
gdb/s390-tdep.c | 11 +++
gdb/stap-probe.c | 209 ++++++++++++++++++++++++++++++++++++------------
10 files changed, 337 insertions(+), 136 deletions(-)
First 500 lines of diff:
diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c
index a2d643a..dd22c3a 100644
--- a/gdb/amd64-linux-tdep.c
+++ b/gdb/amd64-linux-tdep.c
@@ -1369,9 +1369,8 @@ amd64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
set_gdbarch_stap_register_prefix (gdbarch, "%");
set_gdbarch_stap_register_sufix (gdbarch, NULL);
set_gdbarch_stap_register_indirection_prefix (gdbarch, "(");
- set_gdbarch_stap_register_indirection_sufix (gdbarch, NULL);
- set_gdbarch_stap_register_displacement_prefix (gdbarch, "(");
- set_gdbarch_stap_register_displacement_sufix (gdbarch, NULL);
+ set_gdbarch_stap_register_indirection_sufix (gdbarch, ")");
+ set_gdbarch_stap_is_single_operand (gdbarch, i386_stap_is_single_operand);
set_gdbarch_stap_parse_special_token (gdbarch, NULL);
set_gdbarch_stap_evaluate_special_token (gdbarch, NULL);
#if 0
diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c
index 74a3fb0..3971301 100644
--- a/gdb/gdbarch.c
+++ b/gdb/gdbarch.c
@@ -268,8 +268,7 @@ struct gdbarch
const char * stap_register_sufix;
const char * stap_register_indirection_prefix;
const char * stap_register_indirection_sufix;
- const char * stap_register_displacement_prefix;
- const char * stap_register_displacement_sufix;
+ gdbarch_stap_is_single_operand_ftype *stap_is_single_operand;
gdbarch_stap_parse_special_token_ftype *stap_parse_special_token;
gdbarch_stap_evaluate_special_token_ftype *stap_evaluate_special_token;
int has_global_solist;
@@ -431,8 +430,7 @@ struct gdbarch startup_gdbarch =
0, /* stap_register_sufix */
0, /* stap_register_indirection_prefix */
0, /* stap_register_indirection_sufix */
- 0, /* stap_register_displacement_prefix */
- 0, /* stap_register_displacement_sufix */
+ 0, /* stap_is_single_operand */
0, /* stap_parse_special_token */
0, /* stap_evaluate_special_token */
0, /* has_global_solist */
@@ -726,8 +724,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
/* Skip verify of stap_register_sufix, invalid_p == 0 */
/* Skip verify of stap_register_indirection_prefix, invalid_p == 0 */
/* Skip verify of stap_register_indirection_sufix, invalid_p == 0 */
- /* Skip verify of stap_register_displacement_prefix, invalid_p == 0 */
- /* Skip verify of stap_register_displacement_sufix, invalid_p == 0 */
+ /* Skip verify of stap_is_single_operand, has predicate. */
/* Skip verify of stap_parse_special_token, has predicate. */
/* Skip verify of stap_evaluate_special_token, has predicate. */
/* Skip verify of has_global_solist, invalid_p == 0 */
@@ -1268,18 +1265,18 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
"gdbarch_dump: stap_integer_sufix = %s\n",
gdbarch->stap_integer_sufix);
fprintf_unfiltered (file,
+ "gdbarch_dump: gdbarch_stap_is_single_operand_p() = %d\n",
+ gdbarch_stap_is_single_operand_p (gdbarch));
+ fprintf_unfiltered (file,
+ "gdbarch_dump: stap_is_single_operand = <%s>\n",
+ host_address_to_string (gdbarch->stap_is_single_operand));
+ fprintf_unfiltered (file,
"gdbarch_dump: gdbarch_stap_parse_special_token_p() = %d\n",
gdbarch_stap_parse_special_token_p (gdbarch));
fprintf_unfiltered (file,
"gdbarch_dump: stap_parse_special_token = <%s>\n",
host_address_to_string (gdbarch->stap_parse_special_token));
fprintf_unfiltered (file,
- "gdbarch_dump: stap_register_displacement_prefix = %s\n",
- gdbarch->stap_register_displacement_prefix);
- fprintf_unfiltered (file,
- "gdbarch_dump: stap_register_displacement_sufix = %s\n",
- gdbarch->stap_register_displacement_sufix);
- fprintf_unfiltered (file,
"gdbarch_dump: stap_register_indirection_prefix = %s\n",
gdbarch->stap_register_indirection_prefix);
fprintf_unfiltered (file,
@@ -3896,38 +3893,28 @@ set_gdbarch_stap_register_indirection_sufix (struct gdbarch *gdbarch,
gdbarch->stap_register_indirection_sufix = stap_register_indirection_sufix;
}
-const char *
-gdbarch_stap_register_displacement_prefix (struct gdbarch *gdbarch)
+int
+gdbarch_stap_is_single_operand_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
- /* Skip verify of stap_register_displacement_prefix, invalid_p == 0 */
- if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_stap_register_displacement_prefix called\n");
- return gdbarch->stap_register_displacement_prefix;
+ return gdbarch->stap_is_single_operand != NULL;
}
-void
-set_gdbarch_stap_register_displacement_prefix (struct gdbarch *gdbarch,
- const char * stap_register_displacement_prefix)
-{
- gdbarch->stap_register_displacement_prefix = stap_register_displacement_prefix;
-}
-
-const char *
-gdbarch_stap_register_displacement_sufix (struct gdbarch *gdbarch)
+int
+gdbarch_stap_is_single_operand (struct gdbarch *gdbarch, const char *s)
{
gdb_assert (gdbarch != NULL);
- /* Skip verify of stap_register_displacement_sufix, invalid_p == 0 */
+ gdb_assert (gdbarch->stap_is_single_operand != NULL);
if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_stap_register_displacement_sufix called\n");
- return gdbarch->stap_register_displacement_sufix;
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_stap_is_single_operand called\n");
+ return gdbarch->stap_is_single_operand (gdbarch, s);
}
void
-set_gdbarch_stap_register_displacement_sufix (struct gdbarch *gdbarch,
- const char * stap_register_displacement_sufix)
+set_gdbarch_stap_is_single_operand (struct gdbarch *gdbarch,
+ gdbarch_stap_is_single_operand_ftype stap_is_single_operand)
{
- gdbarch->stap_register_displacement_sufix = stap_register_displacement_sufix;
+ gdbarch->stap_is_single_operand = stap_is_single_operand;
}
int
diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h
index 74d47bc..c369d5b 100644
--- a/gdb/gdbarch.h
+++ b/gdb/gdbarch.h
@@ -993,7 +993,10 @@ extern void set_gdbarch_stap_register_sufix (struct gdbarch *gdbarch, const char
(%eax) ;; indirecting eax
- in this case, this prefix would be the charater `('. */
+ in this case, this prefix would be the charater `('.
+
+ Please note that we use the indirection prefix also for register
+ displacement, e.g., `4(%eax)' on x86. */
extern const char * gdbarch_stap_register_indirection_prefix (struct gdbarch *gdbarch);
extern void set_gdbarch_stap_register_indirection_prefix (struct gdbarch *gdbarch, const char * stap_register_indirection_prefix);
@@ -1003,34 +1006,32 @@ extern void set_gdbarch_stap_register_indirection_prefix (struct gdbarch *gdbarc
(%eax) ;; indirecting eax
- in this case, this prefix would be the charater `)'. */
+ in this case, this prefix would be the charater `)'.
+
+ Please note that we use the indirection sufix also for register
+ displacement, e.g., `4(%eax)' on x86. */
extern const char * gdbarch_stap_register_indirection_sufix (struct gdbarch *gdbarch);
extern void set_gdbarch_stap_register_indirection_sufix (struct gdbarch *gdbarch, const char * stap_register_indirection_sufix);
-/* Prefix used to mark a register displacement on the architecture's assembly.
- For example, on x86 the register displacement is written as:
-
- 4(%eax) ;; indirecting eax
+/* Check if S is a single operand.
- in this case, this prefix would be the charater `('. Note that we do NOT
- include the number(s) before the parenthesis, because the parser already
- assumes that the displacement will be of the form:
+ Single operands can be:
+ - Literal integers, e.g. `$10' on x86
+ - Register access, e.g. `%eax' on x86
+ - Register indirection, e.g. `(%eax)' on x86
+ - Register displacement, e.g. `4(%eax)' on x86
- <number> <displacement_prefix> <register_name> <displacement_sufix> */
+ This function should check for these patterns on the string
+ and return 1 if some were found, or zero otherwise. Please try to match
+ as much info as you can from the string, i.e., if you have to match
+ something like `(%', do not match just the `('. */
-extern const char * gdbarch_stap_register_displacement_prefix (struct gdbarch *gdbarch);
-extern void set_gdbarch_stap_register_displacement_prefix (struct gdbarch *gdbarch, const char * stap_register_displacement_prefix);
+extern int gdbarch_stap_is_single_operand_p (struct gdbarch *gdbarch);
-/* Sufix used to mark a register indirection on the architecture's assembly.
- For example, on x86 the register indirection is written as:
-
- (%eax) ;; indirecting eax
-
- in this case, this prefix would be the charater `)'. */
-
-extern const char * gdbarch_stap_register_displacement_sufix (struct gdbarch *gdbarch);
-extern void set_gdbarch_stap_register_displacement_sufix (struct gdbarch *gdbarch, const char * stap_register_displacement_sufix);
+typedef int (gdbarch_stap_is_single_operand_ftype) (struct gdbarch *gdbarch, const char *s);
+extern int gdbarch_stap_is_single_operand (struct gdbarch *gdbarch, const char *s);
+extern void set_gdbarch_stap_is_single_operand (struct gdbarch *gdbarch, gdbarch_stap_is_single_operand_ftype *stap_is_single_operand);
/* Function used to handle a "special case" in the parser.
@@ -1042,7 +1043,7 @@ extern void set_gdbarch_stap_register_displacement_sufix (struct gdbarch *gdbarc
Since the parser assumes that a register displacement is of the form:
- <number> <displacement_prefix> <register_name> <displacement_sufix>
+ <number> <indirection_prefix> <register_name> <indirection_sufix>
it means that it will not be able to recognize and parse this odd syntax.
Therefore, we should add a special case function that will handle this token.
@@ -1062,7 +1063,19 @@ extern void set_gdbarch_stap_parse_special_token (struct gdbarch *gdbarch, gdbar
It should return the value associated with the special token, or NULL
otherwise. It should also compile the expression for the agent if
- requested. The pointer `eval_info->exp_buf' should be advanced accordingly. */
+ requested. The pointer `eval_info->exp_buf' should be advanced accordingly.
+
+ It is important to know that if this function returns NULL, GDB will still
+ try to evaluate this token using the default methods (i.e., using the
+ methods listed on `stap_evaluate_single_operand'). Therefore, if you want
+ to stop the evaluation here, the best thing to do is to call `error'.
+
+ This behaviour is interesting because by returning NULL this function can
+ "defer" the evaluation of the token. For example, on PPC the registers
+ are numbers, so this can confuse the evaluator and thus PPC implements
+ special evaluation of direct register access. However, for register
+ indirection or displacements, PPC does not need to implement anything
+ because the evaluator can handle these cases. */
extern int gdbarch_stap_evaluate_special_token_p (struct gdbarch *gdbarch);
diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh
index 87aa0d9..5a1806c 100755
--- a/gdb/gdbarch.sh
+++ b/gdb/gdbarch.sh
@@ -791,7 +791,7 @@ M:LONGEST:get_syscall_number:ptid_t ptid:ptid
#
# \$10 ;; integer constant 10
#
-# in this case, this prefix would be the character \`$\'.
+# in this case, this prefix would be the character \`\$\'.
v:const char *:stap_integer_prefix:::0:0::0:gdbarch->stap_integer_prefix
# Sufix used to mark an integer constant on the architecture's assembly.
@@ -802,7 +802,7 @@ v:const char *:stap_integer_sufix:::0:0::0:gdbarch->stap_integer_sufix
#
# \%eax ;; register eax
#
-# in this case, this prefix would be the character \`%\'.
+# in this case, this prefix would be the character \`\%\'.
v:const char *:stap_register_prefix:::0:0::0:gdbarch->stap_register_prefix
# Sufix used to mark a register name on the architecture's assembly
@@ -814,6 +814,9 @@ v:const char *:stap_register_sufix:::0:0::0:gdbarch->stap_register_sufix
# \(\%eax\) ;; indirecting eax
#
# in this case, this prefix would be the charater \`\(\'.
+#
+# Please note that we use the indirection prefix also for register
+# displacement, e.g., \`4\(\%eax\)\' on x86.
v:const char *:stap_register_indirection_prefix:::0:0::0:gdbarch->stap_register_indirection_prefix
# Sufix used to mark a register indirection on the architecture's assembly.
@@ -822,27 +825,24 @@ v:const char *:stap_register_indirection_prefix:::0:0::0:gdbarch->stap_register_
# \(\%eax\) ;; indirecting eax
#
# in this case, this prefix would be the charater \`\)\'.
-v:const char *:stap_register_indirection_sufix:::0:0::0:gdbarch->stap_register_indirection_sufix
-
-# Prefix used to mark a register displacement on the architecture's assembly.
-# For example, on x86 the register displacement is written as:
-#
-# 4\(\%eax\) ;; indirecting eax
-#
-# in this case, this prefix would be the charater \`\(\'. Note that we do NOT
-# include the number(s) before the parenthesis, because the parser already
-# assumes that the displacement will be of the form:
#
-# <number> <displacement_prefix> <register_name> <displacement_sufix>
-v:const char *:stap_register_displacement_prefix:::0:0::0:gdbarch->stap_register_displacement_prefix
+# Please note that we use the indirection sufix also for register
+# displacement, e.g., \`4\(\%eax\)\' on x86.
+v:const char *:stap_register_indirection_sufix:::0:0::0:gdbarch->stap_register_indirection_sufix
-# Sufix used to mark a register indirection on the architecture's assembly.
-# For example, on x86 the register indirection is written as:
+# Check if S is a single operand.
#
-# \(\%eax\) ;; indirecting eax
+# Single operands can be:
+# \- Literal integers, e.g. \`\$10\' on x86
+# \- Register access, e.g. \`\%eax\' on x86
+# \- Register indirection, e.g. \`\(\%eax\)\' on x86
+# \- Register displacement, e.g. \`4\(\%eax\)\' on x86
#
-# in this case, this prefix would be the charater \`\)\'.
-v:const char *:stap_register_displacement_sufix:::0:0::0:gdbarch->stap_register_displacement_sufix
+# This function should check for these patterns on the string
+# and return 1 if some were found, or zero otherwise. Please try to match
+# as much info as you can from the string, i.e., if you have to match
+# something like \`\(\%\', do not match just the \`\(\'.
+M:int:stap_is_single_operand:const char *s:s
# Function used to handle a "special case" in the parser.
#
@@ -854,7 +854,7 @@ v:const char *:stap_register_displacement_sufix:::0:0::0:gdbarch->stap_register_
#
# Since the parser assumes that a register displacement is of the form:
#
-# <number> <displacement_prefix> <register_name> <displacement_sufix>
+# <number> <indirection_prefix> <register_name> <indirection_sufix>
#
# it means that it will not be able to recognize and parse this odd syntax.
# Therefore, we should add a special case function that will handle this token.
@@ -873,8 +873,8 @@ M:int:stap_parse_special_token:const char **token:token
#
# It is important to know that if this function returns NULL, GDB will still
# try to evaluate this token using the default methods (i.e., using the
-# methods listed on `stap_evaluate_single_operand'). Therefore, if you want
-# to stop the evaluation here, the best thing to do is to call `error'.
+# methods listed on \`stap_evaluate_single_operand\'). Therefore, if you want
+# to stop the evaluation here, the best thing to do is to call \`error\'.
#
# This behaviour is interesting because by returning NULL this function can
# "defer" the evaluation of the token. For example, on PPC the registers
diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c
index a03f2be..a4bc0a9 100644
--- a/gdb/i386-linux-tdep.c
+++ b/gdb/i386-linux-tdep.c
@@ -911,9 +911,8 @@ i386_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
set_gdbarch_stap_register_prefix (gdbarch, "%");
set_gdbarch_stap_register_sufix (gdbarch, NULL);
set_gdbarch_stap_register_indirection_prefix (gdbarch, "(");
- set_gdbarch_stap_register_indirection_sufix (gdbarch, NULL);
- set_gdbarch_stap_register_displacement_prefix (gdbarch, "(");
- set_gdbarch_stap_register_displacement_sufix (gdbarch, NULL);
+ set_gdbarch_stap_register_indirection_sufix (gdbarch, ")");
+ set_gdbarch_stap_is_single_operand (gdbarch, i386_stap_is_single_operand);
set_gdbarch_stap_parse_special_token (gdbarch, NULL);
set_gdbarch_stap_evaluate_special_token (gdbarch, NULL);
#if 0
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index ed5d26d..a9defb7 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
@@ -7437,6 +7437,7 @@ i386_stap_parse_arg (struct gdbarch *gdbarch, const char **arg)
*arg = cur;
return 1;
}
+#endif
int
i386_stap_is_single_operand (struct gdbarch *gdbarch, const char *s)
@@ -7447,6 +7448,7 @@ i386_stap_is_single_operand (struct gdbarch *gdbarch, const char *s)
|| (*s == '%' && isalpha (s[1]))); /* Register access. */
}
+#if 0
struct value *
i386_stap_evaluate_single_operand (struct gdbarch *gdbarch,
struct stap_evaluation_info *eval_info)
diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h
index 39b4a90..06e8863 100644
--- a/gdb/i386-tdep.h
+++ b/gdb/i386-tdep.h
@@ -382,13 +382,15 @@ extern int i386_process_record (struct gdbarch *gdbarch,
struct regcache *regcache, CORE_ADDR addr);
#if 0
-/* SystemTap related functions. */
extern int i386_stap_parse_arg (struct gdbarch *gdbarch, const char **arg);
+#endif
+
+/* SystemTap related functions. */
extern int i386_stap_is_single_operand (struct gdbarch *gdbarch,
const char *s);
-
+#if 0
extern struct value *i386_stap_evaluate_single_operand
(struct gdbarch *gdbarch,
struct stap_evaluation_info *eval_info);
diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c
index ff7ef48..71f724d 100644
--- a/gdb/ppc-linux-tdep.c
+++ b/gdb/ppc-linux-tdep.c
@@ -1363,6 +1363,7 @@ ppc_stap_parse_arg (struct gdbarch *gdbarch, const char **arg)
*arg = cur;
return 1;
}
+#endif
static int
ppc_stap_is_single_operand (struct gdbarch *gdbarch, const char *s)
@@ -1374,6 +1375,7 @@ ppc_stap_is_single_operand (struct gdbarch *gdbarch, const char *s)
|| isdigit (*s)); /* Register value. */
}
+#if 0
static struct value *
ppc_stap_evaluate_single_operand (struct gdbarch *gdbarch,
struct stap_evaluation_info *eval_info)
@@ -1617,6 +1619,72 @@ ppc_stap_fetch_register_value (struct gdbarch *gdbarch,
}
#endif
+static int
+ppc_stap_parse_special_token (struct gdbarch *gdbarch,
+ const char **token)
+{
+ char *s = (char *) *token;
+
+ /* The special tokens to be parsed here are:
+
+ - register access. */
+
+ if (isdigit (*s))
+ {
+ while (isdigit (*s))
+ ++s;
+
+ s = skip_spaces (s);
+
+ /* We shall not see a parenthesis here, because that would mean
+ a register displacement, which should have been handled already. */
+ if (*s == '(')
+ return 0;
+ }
+ else
+ /* There should not be more special tokens to parse. */
+ return 0;
+
+ *token = s;
+
+ return 1;
+}
+
+static struct value *
+ppc_stap_evaluate_special_token (struct gdbarch *gdbarch,
+ struct stap_evaluation_info *eval_info)
+{
+ struct value *ret = NULL;
+
+ if (isdigit (*eval_info->exp_buf))
+ {
+ /* This temporary pointer is needed because we have to do a lookahead.
+ We could be dealing with a register displacement, and in such case
+ we would not need to do anything. */
+ char *s = eval_info->exp_buf;
+
+ while (isdigit (*s))
+ ++s;
+ s = skip_spaces (s);
+
+ if (*s == '(')
+ /* It is a register displacement indeed. Returning NULL means we are
+ deferring the treatment of this case to the generic evaluator. */
+ return NULL;
+
+ /* We don't need to worry about generating code for AX because
+ `stap_fetch_reg_value' will do that already. */
+ ret = stap_fetch_reg_value (eval_info, NULL);
+
+ eval_info->exp_buf = skip_spaces (eval_info->exp_buf);
+ }
+ else
+ /* All the other tokens should be handled correctly by the generic
+ evaluator. */
+ return NULL;
+
+ return ret;
+}
/* Cell/B.E. active SPE context tracking support. */
@@ -1935,6 +2003,17 @@ ppc_linux_init_abi (struct gdbarch_info info,
set_gdbarch_get_syscall_number (gdbarch, ppc_linux_get_syscall_number);
/* SystemTap functions. */
+ set_gdbarch_stap_integer_prefix (gdbarch, "i");
+ set_gdbarch_stap_integer_sufix (gdbarch, NULL);
+ set_gdbarch_stap_register_prefix (gdbarch, NULL);
+ set_gdbarch_stap_register_sufix (gdbarch, NULL);
+ set_gdbarch_stap_register_indirection_prefix (gdbarch, "(");
+ set_gdbarch_stap_register_indirection_sufix (gdbarch, ")");
+ set_gdbarch_stap_is_single_operand (gdbarch, ppc_stap_is_single_operand);
+ set_gdbarch_stap_parse_special_token (gdbarch,
+ ppc_stap_parse_special_token);
+ set_gdbarch_stap_evaluate_special_token (gdbarch,
+ ppc_stap_evaluate_special_token);
#if 0
set_gdbarch_stap_parse_arg (gdbarch, ppc_stap_parse_arg);
set_gdbarch_stap_is_single_operand (gdbarch, ppc_stap_is_single_operand);
diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c
index 76914de..275a9a1 100644
--- a/gdb/s390-tdep.c
+++ b/gdb/s390-tdep.c
@@ -2892,6 +2892,7 @@ s390_stap_parse_arg (struct gdbarch *gdbarch, const char **arg)
*arg = cur;
return 1;
}
+#endif
static int
s390_stap_is_single_operand (struct gdbarch *gdbarch, const char *s)
@@ -2901,6 +2902,7 @@ s390_stap_is_single_operand (struct gdbarch *gdbarch, const char *s)
hooks/post-receive
--
Repository for Project Archer.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2011-08-23 13:29 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-08-23 13:29 [SCM] archer-sergiodj-stap-patch-split: Fixing some gdbarch bugs, implementing stap_fetch_register, implementing arch-specific methods 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).