| Summary: | armv7l Unrecognised instruction "bkpt" 0xE1200070 | ||
|---|---|---|---|
| Product: | [Developer tools] valgrind | Reporter: | John Reiser <jreiser> |
| Component: | vex | Assignee: | Julian Seward <jseward> |
| Status: | REPORTED --- | ||
| Severity: | normal | ||
| Priority: | NOR | ||
| Version First Reported In: | 3.13.0 | ||
| Target Milestone: | --- | ||
| Platform: | Fedora RPMs | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
On armv7l (RaspberryPi-3B ARM in 32-bit mode) coregrind does not recognize the instruction "bkpt" which is 0xE1200070. This is a "compiled-in breakpoint" which should generate SIGTRAP, much like "int3" 0xcc on x86. [Except that x86 stops after the int3, while ARM stops at the bkpt.] The instruction is documented in ARM Architecture Reference Manual, ARM DDI 0100E on p.A4-14 (.pdf p.114). ===== console log $ ./gdbtest ## kernel-4.14.6-300.fc27.armv7hl Trace/breakpoint trap (core dumped) $ valgrind --tool=none ./gdbtest ==2518== Nulgrind, the minimal Valgrind tool ==2518== Copyright (C) 2002-2017, and GNU GPL'd, by Nicholas Nethercote. ==2518== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info ==2518== Command: ./gdbtest ==2518== disInstr(arm): unhandled instruction: 0xE1200070 cond=14(0xE) 27:20=18(0x12) 4:4=1 3:0=0(0x0) <<snip>> ==2518== Process terminating with default action of signal 4 (SIGILL): dumping core ==2518== Illegal opcode at address 0x103E4 ==2518== at 0x103E4: main (gdbtest.c:4) ===== end console log ===== test case file gdbtest.c int main(int argc, char *argv[]) { asm("bkpt"); return 0; } ===== end test case file gdbtest.c