| Index: gdb/ia64-linux-tdep.c
|
| diff --git a/gdb/ia64-linux-tdep.c b/gdb/ia64-linux-tdep.c
|
| index 85ac486cd220f62e04e662f66d5bd524b7de65de..d1eb529cd4f239d4b2255889db9bb8356ce53850 100644
|
| --- a/gdb/ia64-linux-tdep.c
|
| +++ b/gdb/ia64-linux-tdep.c
|
| @@ -1,7 +1,6 @@
|
| /* Target-dependent code for the IA-64 for GDB, the GNU debugger.
|
|
|
| - Copyright (C) 2000, 2004-2005, 2007-2012 Free Software Foundation,
|
| - Inc.
|
| + Copyright (C) 2000-2013 Free Software Foundation, Inc.
|
|
|
| This file is part of GDB.
|
|
|
| @@ -28,6 +27,8 @@
|
| #include "symtab.h"
|
| #include "linux-tdep.h"
|
|
|
| +#include <ctype.h>
|
| +
|
| /* The sigtramp code is in a non-readable (executable-only) region
|
| of memory called the ``gate page''. The addresses in question
|
| were determined by examining the system headers. They are
|
| @@ -55,7 +56,7 @@ ia64_linux_sigcontext_register_address (struct gdbarch *gdbarch,
|
| CORE_ADDR sp, int regno)
|
| {
|
| enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
| - char buf[8];
|
| + gdb_byte buf[8];
|
| CORE_ADDR sigcontext_addr = 0;
|
|
|
| /* The address of the sigcontext area is found at offset 16 in the
|
| @@ -119,6 +120,17 @@ ia64_linux_write_pc (struct regcache *regcache, CORE_ADDR pc)
|
| regcache_cooked_write_unsigned (regcache, IA64_GR10_REGNUM, 0);
|
| }
|
|
|
| +/* Implementation of `gdbarch_stap_is_single_operand', as defined in
|
| + gdbarch.h. */
|
| +
|
| +static int
|
| +ia64_linux_stap_is_single_operand (struct gdbarch *gdbarch, const char *s)
|
| +{
|
| + return ((isdigit (*s) && s[1] == '[' && s[2] == 'r') /* Displacement. */
|
| + || *s == 'r' /* Register value. */
|
| + || isdigit (*s)); /* Literal number. */
|
| +}
|
| +
|
| static void
|
| ia64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
| {
|
| @@ -143,6 +155,14 @@ ia64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
| /* Enable TLS support. */
|
| set_gdbarch_fetch_tls_load_module_address (gdbarch,
|
| svr4_fetch_objfile_link_map);
|
| +
|
| + /* SystemTap related. */
|
| + set_gdbarch_stap_register_prefix (gdbarch, "r");
|
| + set_gdbarch_stap_register_indirection_prefix (gdbarch, "[");
|
| + set_gdbarch_stap_register_indirection_suffix (gdbarch, "]");
|
| + set_gdbarch_stap_gdb_register_prefix (gdbarch, "r");
|
| + set_gdbarch_stap_is_single_operand (gdbarch,
|
| + ia64_linux_stap_is_single_operand);
|
| }
|
|
|
| /* Provide a prototype to silence -Wmissing-prototypes. */
|
|
|