It seems SES ARM integrated disassemler is confused by a leading "bl" instruction. To reproduce:
void __attribute__((naked)) tester(void)
{
asm(
"bl extfunc \n\t"
"bx lr \n\t"
);
}
This is correctly compiled to (using objdump):
00000000 <tester>:
0: f7ff fffe bl 0 <extfunc>
4: 4770 bx lr
But when you open the .o file in the IDE for disassembly view, it's shown as:
section .text.tester
<tester>
00000000 F7FFFFFE bl 0x00000000
00000002 FFFE4770 vqshl.u32 q10, q8, #30
I have observed this issue in earlier versions. BL won't appear as the entry in normal compiled code (the test case above is not actually working), but might happen still, and the disassembler should not make such assumptions. Worth fixing?
void __attribute__((naked)) tester(void)
{
asm(
"bl extfunc \n\t"
"bx lr \n\t"
);
}
This is correctly compiled to (using objdump):
00000000 <tester>:
0: f7ff fffe bl 0 <extfunc>
4: 4770 bx lr
But when you open the .o file in the IDE for disassembly view, it's shown as:
section .text.tester
<tester>
00000000 F7FFFFFE bl 0x00000000
00000002 FFFE4770 vqshl.u32 q10, q8, #30
I have observed this issue in earlier versions. BL won't appear as the entry in normal compiled code (the test case above is not actually working), but might happen still, and the disassembler should not make such assumptions. Worth fixing?
The post was edited 1 time, last by LIx2NG ().