# HG changeset patch # User reimar # Date 1264879607 0 # Node ID daff451753334c5b202300f4853ff33ffdba3d7c # Parent e1bc538670928c29409dcebb8281a7fe4d59512f Make the jump-table section-relative for x86_64 with PIC enabled. This allows to get rid of the macho64 specific hack that moves them to rodata (with worse cache behaviour) and avoids textrels which e.g. Gentoo does not allow for x86_64 libraries. diff -r e1bc53867092 -r daff45175333 x86/fft_mmx.asm --- a/x86/fft_mmx.asm Sat Jan 30 18:50:00 2010 +0000 +++ b/x86/fft_mmx.asm Sat Jan 30 19:26:47 2010 +0000 @@ -419,18 +419,23 @@ %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: @@ -448,10 +453,6 @@ %endrep %undef n -%ifidn __OUTPUT_FORMAT__,macho64 -section .rodata -%endif - align 8 dispatch_tab%3%2: pointer list_of_fft @@ -462,6 +463,10 @@ cglobal fft_dispatch%3%2, 2,5,8, 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