xscale uclibc softfloat & gdb : SIGILL

Mike Frysinger vapier at gentoo.org
Wed Sep 28 23:37:54 UTC 2005


On Tuesday 27 September 2005 12:55 pm, John Bowler wrote:
> When I debugged my case it seemed to occur as a result of the breakpoint
> gdb puts on _dl_debug_state.  When that function was thumb I got SIGILL,
> when it was arm I got SIGSEGV.  I think the address on the second
> instruction in start is bogus - I think that's just because gdb can't work
> out what is going on.

uClibc looks like this:
_start:
    /* Clear the frame pointer and link register since this is the
	* outermost frame. */
    mov fp, #0
    mov lr, #0

    /* Pop argc off the stack and save a pointer to argv */
    ldr a2, [sp], #4
    mov a3, sp

glibc looks like this:
_start:
    /* Fetch address of fini */
    ldr ip, =__libc_csu_fini

    /* Clear the frame pointer since this is the outermost frame.  */
    mov fp, #0

    /* Pop argc off the stack and save a pointer to argv */
    ldr a2, [sp], #4
    mov a3, sp

i'm not arm expert, so can someone comment on the 2nd line which John points 
out ?  the 'mov lr, #0'
-mike



More information about the uClibc mailing list