From: Alex Smith <alex.sm...@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.sm...@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 -- 1.9.5.msysgit.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel