aboutsummaryrefslogtreecommitdiff
path: root/gold/yyscript.y
diff options
context:
space:
mode:
authorYao Qi <yao.qi@linaro.org>2016-06-28 17:24:25 +0100
committerYao Qi <yao.qi@linaro.org>2016-06-28 17:24:25 +0100
commit2ac09a5bbbff78d363ede2f038c31a9b1cb0887b (patch)
tree8bc62d6e02445ca60084b892aca12d6df93dc83c /gold/yyscript.y
parentbb95c51a232dffb46067c402ac62f1f3303b6bbd (diff)
downloadgdb-2ac09a5bbbff78d363ede2f038c31a9b1cb0887b.zip
gdb-2ac09a5bbbff78d363ede2f038c31a9b1cb0887b.tar.gz
gdb-2ac09a5bbbff78d363ede2f038c31a9b1cb0887b.tar.bz2
[AArch64] Use int64_t for address offset
In AArch64 displaced stepping and fast tracepoint, GDB/GDBserver needs to check whether the offset can fit in the range. We are using int32_t for offset, it is sufficient to get an offset from an instruction, but it is not enough to get an offset from two addresses. For example, we have a BL in shared lib which is at 0x0000002000040774, and the scratch pad for displaced stepping is at 0x400698. The offset can't fit in 28 bit imm. However, since we are using int32_t for offset, GDB thinks the offset can fit it, and generate the B instruction with wrong offset. It fixes the following fail, -FAIL: gdb.base/dso2dso.exp: next over call to sub2 gdb: 2016-06-28 Yao Qi <yao.qi@linaro.org> * aarch64-tdep.c (aarch64_displaced_step_b): Use int64_t for variable new_offset. gdb/gdbserver: 2016-06-28 Yao Qi <yao.qi@linaro.org> * linux-aarch64-low.c (aarch64_ftrace_insn_reloc_b): Use int64_t for variable new_offset. (aarch64_ftrace_insn_reloc_b_cond): Likewise. (aarch64_ftrace_insn_reloc_cb): Likewise. (aarch64_ftrace_insn_reloc_tb): Likewise. (aarch64_install_fast_tracepoint_jump_pad): Likewise. Use PRIx64 instead of PRIx32.
Diffstat (limited to 'gold/yyscript.y')
0 files changed, 0 insertions, 0 deletions