Move target_read_uint32 out of aarch64_relocate_instruction

This patch is to move target_read_uint32 out of
aarch64_relocate_instruction and pass INSN to
aarch64_relocate_instruction, so that it is cleaner, only decode
instructions.

gdb/gdbserver:

2015-10-12  Yao Qi  <yao.qi@linaro.org>

	* linux-aarch64-low.c (aarch64_relocate_instruction): Add
	argument insn.  Remove local variable insn.  Don't call
	target_read_uint32.
	(aarch64_install_fast_tracepoint_jump_pad): Call
	target_read_uint32.
This commit is contained in:
Yao Qi 2015-10-12 11:28:38 +01:00
parent 8240f4421f
commit 70b439f0a8
2 changed files with 14 additions and 7 deletions

View File

@ -1,3 +1,11 @@
2015-10-12 Yao Qi <yao.qi@linaro.org>
* linux-aarch64-low.c (aarch64_relocate_instruction): Add
argument insn. Remove local variable insn. Don't call
target_read_uint32.
(aarch64_install_fast_tracepoint_jump_pad): Call
target_read_uint32.
2015-09-30 Yao Qi <yao.qi@linaro.org> 2015-09-30 Yao Qi <yao.qi@linaro.org>
* linux-aarch64-low.c (emit_movk): Shorten a long line. * linux-aarch64-low.c (emit_movk): Shorten a long line.

View File

@ -1924,8 +1924,8 @@ can_encode_int32 (int32_t val, unsigned bits)
return rest == 0 || rest == -1; return rest == 0 || rest == -1;
} }
/* Relocate an instruction from OLDLOC to *TO. This function will also /* Relocate an instruction INSN from OLDLOC to *TO. This function will
increment TO by the number of bytes the new instruction(s) take(s). also increment TO by the number of bytes the new instruction(s) take(s).
PC relative instructions need to be handled specifically: PC relative instructions need to be handled specifically:
@ -1937,11 +1937,10 @@ can_encode_int32 (int32_t val, unsigned bits)
- LDR/LDRSW (literal) */ - LDR/LDRSW (literal) */
static void static void
aarch64_relocate_instruction (CORE_ADDR *to, CORE_ADDR oldloc) aarch64_relocate_instruction (CORE_ADDR *to, CORE_ADDR oldloc, uint32_t insn)
{ {
uint32_t buf[32]; uint32_t buf[32];
uint32_t *p = buf; uint32_t *p = buf;
uint32_t insn;
int is_bl; int is_bl;
int is64; int is64;
@ -1956,8 +1955,6 @@ aarch64_relocate_instruction (CORE_ADDR *to, CORE_ADDR oldloc)
unsigned bit; unsigned bit;
int32_t offset; int32_t offset;
target_read_uint32 (oldloc, &insn);
if (aarch64_decode_b (oldloc, insn, &is_bl, &offset)) if (aarch64_decode_b (oldloc, insn, &is_bl, &offset))
{ {
offset = (oldloc - *to + offset); offset = (oldloc - *to + offset);
@ -2120,6 +2117,7 @@ aarch64_install_fast_tracepoint_jump_pad (CORE_ADDR tpoint,
uint32_t *p = buf; uint32_t *p = buf;
int32_t offset; int32_t offset;
int i; int i;
uint32_t insn;
CORE_ADDR buildaddr = *jump_entry; CORE_ADDR buildaddr = *jump_entry;
/* We need to save the current state on the stack both to restore it /* We need to save the current state on the stack both to restore it
@ -2422,7 +2420,8 @@ aarch64_install_fast_tracepoint_jump_pad (CORE_ADDR tpoint,
/* Now emit the relocated instruction. */ /* Now emit the relocated instruction. */
*adjusted_insn_addr = buildaddr; *adjusted_insn_addr = buildaddr;
aarch64_relocate_instruction (&buildaddr, tpaddr); target_read_uint32 (tpaddr, &insn);
aarch64_relocate_instruction (&buildaddr, tpaddr, insn);
*adjusted_insn_addr_end = buildaddr; *adjusted_insn_addr_end = buildaddr;
/* We may not have been able to relocate the instruction. */ /* We may not have been able to relocate the instruction. */