Observation (which may or may not be relevant):
It doesn't seem to get anywhere near main or libc startup (gdb break on main or __start or anything like that just doesn't stop).
Break'ing on _GLOBAL__sub_I_error.cc does stop and is an initialisation routine from the error.cc which is known to be broken.
objdump of the error.opic misdisasembles the first word of this function as:
That's actually a push and ldr; in gdb the instruction actually seems to be there, but when you break on _GLOBAL__sub_I_error you seem to be left at the 1st instruction after the push.
Observation (which may or may not be relevant): _sub_I_ error.cc does stop and is an initialisation routine from the error.cc which is known to be broken.
It doesn't seem to get anywhere near main or libc startup (gdb break on main or __start or anything like that just doesn't stop).
Break'ing on _GLOBAL_
objdump of the error.opic misdisasembles the first word of this function as:
00000000 <_GLOBAL_ _sub_I_ error.cc> : _sub_I_ error.cc+ 0x28>) base4InitC1Ev> _sub_I_ error.cc+ 0x2c>) _sub_I_ error.cc+ 0x30>)
0: 4d08b538 .word 0x4d08b538 <<<<<<<<<<<!!!
4: 4c08 ldr r4, [pc, #32] ; (28 <_GLOBAL_
6: 447d add r5, pc
8: 3508 adds r5, #8
a: 447c add r4, pc
c: 4628 mov r0, r5
e: f7ff fffe bl 0 <_ZNSt8ios_
12: 4b06 ldr r3, [pc, #24] ; (2c <_GLOBAL_
14: 4628 mov r0, r5
16: 58e1 ldr r1, [r4, r3]
18: 4b05 ldr r3, [pc, #20] ; (30 <_GLOBAL_
1a: 58e2 ldr r2, [r4, r3]
1c: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr}
20: f7ff bffe b.w 0 <__aeabi_atexit>
24: 0000001a .word 0x0000001a
28: 0000001a .word 0x0000001a
That's actually a push and ldr; in gdb the instruction actually seems to be there, but when you break on _GLOBAL_ _sub_I_ error you seem to be left at the 1st instruction after the push.
Dave