From 91b668acd6decec0a6f8d20bf56e2644f96adcb9 Mon Sep 17 00:00:00 2001 From: Alex Smith Date: Mon, 21 Sep 2015 00:41:36 -0400 Subject: [PATCH] configure: Force mingw's ld to keep the reloc section 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. Signed-off-by: Michael Niedermayer --- configure | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/configure b/configure index da9f42ebcf..f6bc622c1c 100755 --- a/configure +++ b/configure @@ -4392,6 +4392,16 @@ case $target_os in objformat="win32" ranlib=: enable dos_paths + # 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