Rockbox.org home
release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide



Rockbox mail archive

Subject: Segfault with Faster MDCT patch and -fPIC

Segfault with Faster MDCT patch and -fPIC

From: Slawomir Testowy <slawomir.testowy_at_gmail.com>
Date: Fri, 17 Sep 2010 09:32:13 +0200

Hi all!

For some time I have been using tremor with fastermdct patch found on
http://www.rockbox.org/wiki/FasterMDCT. This patch gives huge speedup on
i686/x86_64 machines and smaller, but still significant, speedup on ARM.

Everything works great until I compile tremor on ARM with -fPIC flag (I link
tremor into a shared object). In such case it segfaults in macro TRANSFORM_EQUAL
in file fft-ffmpeg_arm.h at line 158:

asm volatile( "ldmia %[my_z], {%[t5],%[t6]}\n\t":[t5] "=r" (t5), [t6] "=r"
                (t6):[my_z] "r" (z));\

When I compile tremor without -fPIC or with -U_ARM_ASSEM_, there is no segfault.
Tremor without fastermdct.patch also doesn't have this problem.

I tried debugging the code for a moment, but this code (MDCT +
#defines + lots of
assmebly) is completely incomprehensible to me.

Unfortunately, I don't have gdb built for this platform (I managed to find the
problematic line with `fprintf(stderr, ...)`, which itself could change the way
it segfaults). At first sight all variables are initialized to proper values.

The ARM processor I'm using is (according to /proc/cpuinfo):

        Processor : ARMv6-compatible processor rev 4 (v6l)
        CPU implementer : 0x41
        CPU architecture: 6TEJ
        CPU variant : 0x0
        CPU part : 0xb36
        CPU revision : 4
        Hardware : Freescale MX31/MX32 3-Stack Board

Can you help me handle this issue?

--
regards,
Slawomir Testowy
Received on 2010-09-17

Page was last modified "Jan 10 2012" The Rockbox Crew
aaa