I am compiling this piece of code from an open source project that I wish not to have to change. The problem is that when compiled for ARM, it generates an LDRD instruction, which when executed, causes a bus error since the address in ptr is not doubleword aligned. I know I can change the code but I prefer to leave it intact as there may be many more instances of this and I don't wish to maintain the code. I found the compiler option -mfix-cortex-m3-ldrd but the code still being generated with the LDRD instruction. Any suggestions on how to tell the compiler to avoid LDRD instructions?
248 static DWORD64 dwarf2_get_u8(const unsigned char* ptr) 249 { 250 return *(const UINT64*)ptr; 251 } (gdb) x/5i $pc => 0x4325ffd4 <dwarf2_get_u8+20>: ldrd r2, [r3] gdb) p ptr $6 = (const unsigned char *) 0x435a2fa5 "" (gdb) p $r3 $7 = 0x435a2fa5 Happy Holidays, Roger R. Cruz