That looks weird to me! R10 still holds one side of the previous butterfly
calculation but looks like gcc is assuming it still holds some address (I
don't know how pic is supposed to work however). So it's either a gcc bug,
or we need to explicitly put t10 in clobbers in asm (even though gcc should
see its clobbered from the output constraints) or the output constraints are
wrong, or we should just write the asm ourselves..
> 2010/9/20 Rafaël Carré <rafael.ca...@gmail.com>:
>>
>> Try disass $pc-32,$pc+32
>
> Thanks!
>>
>>
>> ... is not shown here, can you run the commands on the same crash?
>>
>> --
>> Rafaël Carré
>>
>
> I'm sorry. My fault.
>
> Program received signal SIGSEGV, Segmentation fault.
> 0x0003b3a0 in pass (z_arg=<value optimized out>, STEP_arg=<value
> optimized out>, n_arg=<value optimized out>) at fft-ffmpeg.c:243
> warning: Source file is more recent than executable.
> 243 w += STEP;
> (gdb) bt
> #0 0x0003b3a0 in pass (z_arg=<value optimized out>, STEP_arg=<value
> optimized out>, n_arg=<value optimized out>) at fft-ffmpeg.c:243
> #1 0x0003c080 in fft64 (z=0x1b10190) at fft-ffmpeg.c:355
> #2 0x0003c0b0 in fft128 (z=0x1b10190) at fft-ffmpeg.c:356
> #3 0x0003c0e0 in fft256 (z=0x1b10190) at fft-ffmpeg.c:357
> #4 0x0003b924 in ff_fft_calc_c (nbits=<value optimized out>,
> z=0x1ae2dc0) at fft-ffmpeg.c:370
> #5 0x0003ad78 in ff_imdct_half (nbits=28199880, output=0x1b100c8,
> input=<value optimized out>) at mdct-ffmpeg.c:112
> #6 0x0003b178 in ff_imdct_calc (nbits=28377488, output=0x1afa5c8,
> input=0x0) at mdct-ffmpeg.c:348
> #7 0x0003a5ac in mapping0_inverse (vb=0xbef68670, l=0x1b0b538) at
> mapping0.c:290
> #8 0x00033270 in vorbis_synthesis (vb=0xbef68670, op=<value optimized
> out>, decodep=1) at synthesis.c:75
> ...
> (gdb) disass $pc-64,$pc+64
> Dump of assembler code from 0x3b360 to 0x3b3e0:
> 0x0003b360 <pass+296>: sub r4, r9, r2, lsl #1
> 0x0003b364 <pass+300>: sub r6, r10, r6, lsl #1
> 0x0003b368 <pass+304>: stm r0, {r9, r10}
> 0x0003b36c <pass+308>: add r0, r11, r0
> 0x0003b370 <pass+312>: ldm r0, {r9, r10}
> 0x0003b374 <pass+316>: add r9, r7, r9
> 0x0003b378 <pass+320>: add r10, r8, r10
> 0x0003b37c <pass+324>: sub r7, r9, r7, lsl #1
> 0x0003b380 <pass+328>: sub r8, r10, r8, lsl #1
> 0x0003b384 <pass+332>: stm r0, {r9, r10}
> 0x0003b388 <pass+336>: add r0, r11, r0
> 0x0003b38c <pass+340>: stm r0, {r4, r6}
> 0x0003b390 <pass+344>: add r0, r11, r0
> 0x0003b394 <pass+348>: stm r0, {r7, r8}
> 0x0003b398 <pass+352>: ldr r3, [pc, #916] ; 0x3b734 <pass+1276>
> 0x0003b39c <pass+356>: ldr r12, [sp, #16]
> => 0x0003b3a0 <pass+360>: ldr r3, [r10, r3]
> 0x0003b3a4 <pass+364>: add lr, r12, r1
> 0x0003b3a8 <pass+368>: add r2, r12, lr
> 0x0003b3ac <pass+372>: ldr r1, [sp, #24]
> 0x0003b3b0 <pass+376>: str r3, [sp, #12]
> 0x0003b3b4 <pass+380>: mov r5, r2
> 0x0003b3b8 <pass+384>: lsl r3, r12, #1
> 0x0003b3bc <pass+388>: add r2, r12, r2
> 0x0003b3c0 <pass+392>: rsb r0, r1, r0
> 0x0003b3c4 <pass+396>: str r3, [sp, #36] ; 0x24
> 0x0003b3c8 <pass+400>: str r2, [sp, #32]
> 0x0003b3cc <pass+404>: add r3, r0, #8
> 0x0003b3d0 <pass+408>: ldm lr, {r4, r12}
> 0x0003b3d4 <pass+412>: ldr r0, [sp, #20]
> 0x0003b3d8 <pass+416>: add r3, r0, r3
> 0x0003b3dc <pass+420>: ldm r3, {r9, r10}
> End of assembler dump.
> (gdb) info all-registers
> r0 0x1b10190 28377488
> r1 0x1ae2dc0 28192192
> r2 0x0 0
> r3 0x100 256
> r4 0x0 0
> r5 0x0 0
> r6 0x0 0
> r7 0x0 0
> r8 0x0 0
> r9 0x0 0
> r10 0x0 0
> r11 0x40 64
> r12 0x400 1024
> sp 0xbef68450 0xbef68450
> lr 0x0 0
> pc 0x3b3a0 0x3b3a0 <pass+360>
> f0 0 (raw 0x0003f8cc0000000000000000)
> f1 0 (raw 0x0003f8cc0000000000000000)
> f2 0 (raw 0x0003f8cc0000000000000000)
> f3 0 (raw 0x0003f8cc0000000000000000)
> f4 0 (raw 0x0003f8cc0000000000000000)
> f5 0 (raw 0x0003f8cc0000000000000000)
> f6 0 (raw 0x0003f8cc0000000000000000)
> f7 0 (raw 0x0003f8cc0000000000000000)
> fps 0x0 0
> cpsr 0x60000010 1610612752
>
> --
> regards,
> Slawomir Testowy

Reply via email to