ARM Assembly backtrace PC offset

Viewed 856

The ARM manual mentions that:

During execution, PC does not contain the address of the currently executing instruction. The address of the currently executing instruction is typically PC-8 for ARM, or PC-4 for Thumb.

Does this apply for PC values in crash backtraces as well?

For example, if I have the following backtrace (from Android armv7 device using ARM instructions):

libSomeLib.so!SomeClass::someMethod [someFile.cpp : 638 + 0x4]
    r0 = 0x00000001    r1 = 0xffffffff    r2 = 0x00000000    r3 = 0xd4fcd71c
    r4 = 0xd39b9284    r5 = 0xd39b927c    r6 = 0xd39b9278    r7 = 0xc7025520
    r8 = 0xc5e1d7b0    r9 = 0xe01136a8   r10 = 0x00000012   r12 = 0xd39b9268
    fp = 0xd39b92d4    sp = 0xd39b9268    lr = 0xd4ea1f24    pc = 0xd4ea1f24
...
0xd47cb000 - 0xd5079fff  libSomeLib.so  ???

Should I look for the crashing instruction inside libSomeLib.so at 0xd4ea1f24-0xd47cb000=0x006D6F24 or 0xd4ea1f24-0xd47cb000-8=0x006D6F1C?

1 Answers
Related