[FFmpeg-devel] PIC and YASM

Reimar Döffinger Reimar.Doeffinger
Sun Nov 8 00:30:31 CET 2009


Hello,
I have been trying to figure out some compilation issues with hardened
gentoo on AMD64 and they all come down to YASM.
Several issues:
-DPIC is and must be added explicitly to the yasm flags.
in particular:
--enable-pic will not add -DPIC to YASMFLAGS, nor will the enable_pic
function. --enable-shared will though.
Also the code will not be compiled as PIC if the compiler generates
PIC code by default (the remaining code handles this by detecting
__PIC__ or __pic__ set by the compiler).
Lastly, this is also inconsistent with all other code, including other
asm code, which always uses RIP-relative addressing for AMD64 (which is
the only effect that -DPIC has for the yasm stuff).
The easiest way to "fix" this and at the same time remove some crap from
configure is to do this:
Index: x86/x86inc.asm
===================================================================
--- x86/x86inc.asm      (revision 20469)
+++ x86/x86inc.asm      (working copy)
@@ -60,10 +60,8 @@
 ; Some distros prefer shared objects to be PIC, but nothing breaks if
 ; the code contains a few textrels, so we'll skip that complexity.
 
-%ifdef WIN64
+%ifdef ARCH_X86_64
     %define PIC
-%elifndef ARCH_X86_64
-    %undef PIC
 %endif
 %ifdef PIC
     %define GLOBAL wrt rip




More information about the ffmpeg-devel mailing list