diff -up ffmpeg-0.5.1/libavcodec/x86/fft_mmx.asm.textrel ffmpeg-0.5.1/libavcodec/x86/fft_mmx.asm
--- ffmpeg-0.5.1/libavcodec/x86/fft_mmx.asm.textrel	2009-02-13 01:57:22.000000000 +0100
+++ ffmpeg-0.5.1/libavcodec/x86/fft_mmx.asm	2010-03-05 21:40:24.000000000 +0100
@@ -417,18 +417,23 @@ DECL_PASS pass_interleave_3dn, PASS_BIG 
 %define pass_3dn2 pass_3dn
 %define pass_interleave_3dn2 pass_interleave_3dn
 
+%ifdef PIC
+%define SECTION_REL - $$
+%else
+%define SECTION_REL
+%endif
 
 %macro DECL_FFT 2-3 ; nbits, cpu, suffix
-%xdefine list_of_fft fft4%2, fft8%2
+%xdefine list_of_fft fft4%2 SECTION_REL, fft8%2 SECTION_REL
 %if %1==5
-%xdefine list_of_fft list_of_fft, fft16%2
+%xdefine list_of_fft list_of_fft, fft16%2 SECTION_REL
 %endif
 
 %assign n 1<<%1
 %rep 17-%1
 %assign n2 n/2
 %assign n4 n/4
-%xdefine list_of_fft list_of_fft, fft %+ n %+ %3%2
+%xdefine list_of_fft list_of_fft, fft %+ n %+ %3%2 SECTION_REL
 
 align 16
 fft %+ n %+ %3%2:
@@ -460,6 +465,10 @@ section .text
 cglobal fft_dispatch%3%2, 2,5,0, z, nbits
     lea r2, [dispatch_tab%3%2 GLOBAL]
     mov r2, [r2 + (nbitsq-2)*gprsize]
+%ifdef PIC
+    lea r3, [$$ GLOBAL]
+    add r2, r3
+%endif
     call r2
     RET
 %endmacro ; DECL_FFT
