[FFmpeg-devel] [PATCH 1/3] configure: Force mingw's ld to keep the reloc section
Hendrik Leppkes
h.leppkes at gmail.com
Thu Mar 10 19:57:53 CET 2016
On Mon, Sep 21, 2015 at 6:41 AM, Alex Smith <alex.smith at warpsharp.info> 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
> ;;
> win32|win64)
> disable symver
This patch (the relocations part) broke debugging mingw-w64 ffmpeg
builds with gdb, you can't set breakpoints anymore when its applied.
It should either be reverted or made dependent on
--enable/disable-debug (I would favor the first, honestly, since its a
rather ugly hack in itself).
Did the binutils/mingw guys ever comment anything useful on this issue?
- Hendrik
More information about the ffmpeg-devel
mailing list