1. 10 Dec, 2005 1 commit
    • Nikola Valerjev's avatar
      [ARM] 3200/1: Singlestep over ARM BX and BLX instructions using ptrace fix · 22f975f4
      Nikola Valerjev authored
      Patch from Nikola Valerjev
      
      Single stepping an application using ptrace() fails over ARM instructions BX and BLX.
      
      Steps to reproduce:
      
      Compile and link the following files
      
      main.c
      -----
      void foo();
      int main() {
          foo();
          return 0;
      }
      
      foo.s
      -----
      	.text
      	.globl foo
      foo:
      	BX LR
      
      Using ptrace() functionality, run to main(), and start singlestepping.
      Singlestep over \"BX LR\" instruction won\'t transfer the control back
      to main, but run the code to completion.
      
      This problems seems to be in the function get_branch_address() in
      arch/arm/kernel/ptrace.c. The function doesn\'t seem to recognize BX
      and BLX instructions as branches. BX and BLX instructions can be used
      to convert from ARM to Thumb mode if the target address has the low
      bit set. However, they are also perfectly legal in the ARM only mode.
      Although other things in the kernel seem to indicate that only ARM
      mode is accepted (and not Thumb), many compilers will generate BX
      and BLX instructions even when generating ARM only code.
      Signed-off-by: default avatarNikola Valerjev <nikola@ghs.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      22f975f4
  2. 08 Dec, 2005 1 commit
  3. 05 Dec, 2005 3 commits
  4. 04 Dec, 2005 6 commits
  5. 03 Dec, 2005 13 commits
  6. 02 Dec, 2005 5 commits
  7. 01 Dec, 2005 11 commits