[FFmpeg-devel] [PATCH 1/3] configure: Force mingw's ld to keep the reloc section

Michael Niedermayer michaelni at gmx.at
Wed Sep 23 01:43:22 CEST 2015


On Mon, Sep 21, 2015 at 12:41:36AM -0400, Alex Smith wrote:
> From: Alex Smith <alex.smith at warpsharp.info>
> 
> Binutils will always strip the relocation information from executable
> files even if it needs it (dynamicbase/ASLR).  We can work around this
> by using the pic-executable flag combined with setting the correct entry
> point since apparently ld forgets what that should be.  This problem
> affects both 32 and 64-bit mingw-w64.
> 
> We can combine the nxcompat/dynamicbase check because they were added to
> binutils at the same time.
> 
> Signed-off-by: Alex Smith <alex.smith at warpsharp.info>
> 
> Conflicts:
> 	configure
> ---
>  configure | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/configure b/configure
> index d2a25bb..d6ab35a 100755
> --- a/configure
> +++ b/configure
> @@ -4367,8 +4367,6 @@ case $target_os in
>              LIBTARGET=arm-wince
>          fi
>          enabled shared && ! enabled small && check_cmd $windres --version && enable gnu_windres
> -        check_ldflags -Wl,--nxcompat
> -        check_ldflags -Wl,--dynamicbase
>          enabled x86_32 && check_ldflags -Wl,--large-address-aware
>          shlibdir_default="$bindir_default"
>          SLIBPREF=""
> @@ -4392,6 +4390,17 @@ case $target_os in
>          objformat="win32"
>          ranlib=:
>          enable dos_paths
> +        check_ldflags -Wl,--nxcompat,--dynamicbase

> +        # Lets work around some stupidity in binutils.
> +        # ld will strip relocations from executables even though we need them
> +        # for dynamicbase (ASLR).  Using -pie does retain the reloc section
> +        # however ld then forgets what the entry point should be (oops) so we
> +        # have to manually (re)set it.
> +        if enabled x86_32; then
> +            add_ldexeflags -Wl,--pic-executable,-e,_mainCRTStartup
> +        elif enabled x86_64; then
> +            add_ldexeflags -Wl,--pic-executable,-e,mainCRTStartup
> +        fi

this is ugly, but ASLR is important thus applied
i did not apply the nxcompat dynamicbase merge as its unrelated

Thanks

PS: if this breaks some version of mingw then this should be reverted

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

If a bugfix only changes things apparently unrelated to the bug with no
further explanation, that is a good sign that the bugfix is wrong.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150923/921315af/attachment.sig>


More information about the ffmpeg-devel mailing list