diff options
author | Pierre Langlois <pierre.langlois@arm.com> | 2015-07-30 18:05:00 +0100 |
---|---|---|
committer | Pierre Langlois <pierre.langlois@arm.com> | 2015-07-30 18:05:00 +0100 |
commit | 6b940e6a063ac13372b44a03a54b6be33d22a183 (patch) | |
tree | e5caa0ef0a4efe2ab6f4aeaf716b1b3ecbe13bd2 /gdb/gdbarch.h | |
parent | e8b416815be691cc3fb1212d1a3dcb5d21a0d19d (diff) | |
download | gdb-6b940e6a063ac13372b44a03a54b6be33d22a183.zip gdb-6b940e6a063ac13372b44a03a54b6be33d22a183.tar.gz gdb-6b940e6a063ac13372b44a03a54b6be33d22a183.tar.bz2 |
Remove isize output argument from fast_tracepoint_valid_at
This patch removes the isize output argument from the
fast_tracepoint_valid_at gdbarch hook. It was used to return the size
of the instruction that needs to be replaced when installing a fast
tracepoint. Instead of getting this value from the
fast_tracepoint_valid_at hook, we can call the gdb_insn_length function.
If we do not do this, then architectures which do not have a restriction
on where to install the fast tracepoint will send uninitialized memory
off to GDBserver. See remote_download_tracepoint:
~~~
int isize;
if (gdbarch_fast_tracepoint_valid_at (target_gdbarch (),
tpaddr, &isize, NULL))
xsnprintf (buf + strlen (buf), BUF_SIZE - strlen (buf), ":F%x",
isize);
~~~
The default implementation of fast_tracepoint_valid_at will not set
isize resulting in uninitialized memory being sent. Later on, GDBserver
could use this information to compute a jump offset.
gdb/ChangeLog:
* arch-utils.c (default_fast_tracepoint_valid_at): Remove unused
isize argument.
* arch-utils.h (default_fast_tracepoint_valid_at): Likewise.
* breakpoint.c (check_fast_tracepoint_sals): Adjust call to
gdbarch_fast_tracepoint_valid_at.
* gdbarch.sh (fast_tracepoint_valid_at): Remove isize argument.
* gdbarch.h: Regenerate.
* gdbarch.c: Regenerate.
* i386-tdep.c (i386_fast_tracepoint_valid_at): Remove isize
argument. Do not set it.
* remote.c (remote_download_tracepoint): Adjust call to
gdbarch_fast_tracepoint_valid_at. Call gdb_insn_length to get
the instruction length.
Diffstat (limited to 'gdb/gdbarch.h')
-rw-r--r-- | gdb/gdbarch.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h index 7d6a0cf..d714281 100644 --- a/gdb/gdbarch.h +++ b/gdb/gdbarch.h @@ -1310,8 +1310,8 @@ extern void set_gdbarch_has_shared_address_space (struct gdbarch *gdbarch, gdbar /* True if a fast tracepoint can be set at an address. */ -typedef int (gdbarch_fast_tracepoint_valid_at_ftype) (struct gdbarch *gdbarch, CORE_ADDR addr, int *isize, char **msg); -extern int gdbarch_fast_tracepoint_valid_at (struct gdbarch *gdbarch, CORE_ADDR addr, int *isize, char **msg); +typedef int (gdbarch_fast_tracepoint_valid_at_ftype) (struct gdbarch *gdbarch, CORE_ADDR addr, char **msg); +extern int gdbarch_fast_tracepoint_valid_at (struct gdbarch *gdbarch, CORE_ADDR addr, char **msg); extern void set_gdbarch_fast_tracepoint_valid_at (struct gdbarch *gdbarch, gdbarch_fast_tracepoint_valid_at_ftype *fast_tracepoint_valid_at); /* Return the "auto" target charset. */ |