ARM: arm_breakpoint should be little endian form in case for arm BE8
authorVictor Kamensky <victor.kamensky@linaro.org>
Sun, 2 Nov 2014 21:28:35 +0000 (13:28 -0800)
committerVictor Kamensky <victor.kamensky@linaro.org>
Sun, 2 Nov 2014 21:30:02 +0000 (13:30 -0800)
commitdcd4a3a4e7fc3912194d1346d2dfc6252f70b456
treee74a1e61ca69dece8e59575954b8a674bdd25637
parent2959fed98cf1b1fd32516194619a5edbdf6a41a3
ARM: arm_breakpoint should be little endian form in case for arm BE8

tdep->arm_breakpoint, tdep->thumb_breakpoint, tdep->thumb2_breakpoint
should be set le_ variants in case of arm BE8 code. Those instruciton
sequences are writen to target with simple write_memory, without
regarding gdbarch_byte_order_for_code. But in BE8 case even data
memory is in big endian form, instructions are still in little endian
form.

Because of this issue there are many issues while running gdb test
case in armv7b mode. For example gdb.arch/arm-disp-step.exp test fails
because it gets SIGILL when displaced instrucion sequence reaches
break instruction, which is in wrong byte order.

Solution is to set tdep->xxx_breakpoint sequences in BE8 case (i.e
when gdbarch_byte_order_for_code is BFD_ENDIAN_BIG.

gdb/ChangeLog:

2014-11-02  Victor Kamensky  <victor.kamensky@linaro.org>

* arm-linux-tdep.c (arm_linux_init_abi): Use
info.byte_order_for_code to choose endianity of breakpoint
instructions snippets.
gdb/arm-linux-tdep.c