works on i386 as well, so ok On 24/01/23 14:36 +0100, Mark Kettenis wrote: > This makes all the tests pass on an amd64 machine with PKU. The trick > is to put the dispatch tables in .data.rel.ro. That means we can have > relocations there but that the tables become read-only after the > relocations have been processed. Since the table now contains the > actual addresses of the functions the extra PIC code isn't needed > anymore. Bumped REVISION to make sure folks get an updated version. > > According to robert@ it builds on i386, but the tests fail because the > -Wl,-znotext isn't passed down to the tests for some reason. But that > isn't a new problem as far as I can tell. > > Upstream probably cares about platforms without relro (which is fairly > specific to ELF), so this is probably not upstreamable without some > further abstractions/changes. > > ok? > > > Index: graphics/ffmpeg/Makefile > =================================================================== > RCS file: /cvs/ports/graphics/ffmpeg/Makefile,v > retrieving revision 1.230 > diff -u -p -r1.230 Makefile > --- graphics/ffmpeg/Makefile 24 Jan 2023 12:08:40 -0000 1.230 > +++ graphics/ffmpeg/Makefile 24 Jan 2023 13:27:45 -0000 > @@ -2,7 +2,7 @@ COMMENT= audio/video converter and strea > > V= 4.4.3 > DISTNAME= ffmpeg-${V} > -REVISION= 2 > +REVISION= 3 > EPOCH= 1 > CATEGORIES= graphics multimedia > MASTER_SITES= https://ffmpeg.org/releases/ > Index: graphics/ffmpeg/patches/patch-libavcodec_x86_fft_asm > =================================================================== > RCS file: graphics/ffmpeg/patches/patch-libavcodec_x86_fft_asm > diff -N graphics/ffmpeg/patches/patch-libavcodec_x86_fft_asm > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ graphics/ffmpeg/patches/patch-libavcodec_x86_fft_asm 24 Jan 2023 > 13:27:45 -0000 > @@ -0,0 +1,37 @@ > +Index: libavcodec/x86/fft.asm > +--- libavcodec/x86/fft.asm.orig > ++++ libavcodec/x86/fft.asm > +@@ -548,10 +548,6 @@ DEFINE_ARGS zc, w, n, o1, o3 > + %macro FFT_DISPATCH 2; clobbers 5 GPRs, 8 XMMs > + lea r2, [dispatch_tab%1] > + mov r2, [r2 + (%2q-2)*gprsize] > +-%ifdef PIC > +- lea r3, [$$] > +- add r2, r3 > +-%endif > + call r2 > + %endmacro ; FFT_DISPATCH > + > +@@ -731,11 +727,7 @@ DECL_PASS pass_interleave_3dnow, PASS_BIG 0 > + %define pass_interleave_3dnowext pass_interleave_3dnow > + %endif > + > +-%ifdef PIC > +-%define SECTION_REL - $$ > +-%else > + %define SECTION_REL > +-%endif > + > + %macro DECL_FFT 1-2 ; nbits, suffix > + %ifidn %0, 1 > +@@ -773,8 +765,10 @@ fft %+ n %+ fullsuffix: > + %endrep > + %undef n > + > ++[SECTION .data.rel.ro write] > + align 8 > + dispatch_tab %+ fullsuffix: pointer list_of_fft > ++__?SECT?__ > + %endmacro ; DECL_FFT > + > + %if HAVE_AVX_EXTERNAL
-- Regards, Robert Nagy