mingw: do not let ld strip relocations
authorİsmail Dönmez <ismail@i10z.com>
Wed, 8 May 2019 11:30:58 +0000 (04:30 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 13 May 2019 01:55:18 +0000 (10:55 +0900)
This is the first step for enabling ASLR (Address Space Layout
Randomization) support. We want to enable ASLR for better protection
against exploiting security holes in Git: it makes it harder to attack
software by making code addresses unpredictable.

The problem fixed by this commit is that `ld.exe` seems to be stripping
relocations which in turn will break ASLR support. We just make sure
it's not stripping the main executable entry.

Signed-off-by: İsmail Dönmez <ismail@i10z.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
config.mak.uname
index d916d1dc7ab90d954dcd25f89d09f7478053112a..01b390c04310e1ff05ed63691d4be63fbdb515b5 100644 (file)
@@ -578,10 +578,12 @@ else
                ifeq (MINGW32,$(MSYSTEM))
                        prefix = /mingw32
                        HOST_CPU = i686
                ifeq (MINGW32,$(MSYSTEM))
                        prefix = /mingw32
                        HOST_CPU = i686
+                       BASIC_LDFLAGS += -Wl,--pic-executable,-e,_mainCRTStartup
                endif
                ifeq (MINGW64,$(MSYSTEM))
                        prefix = /mingw64
                        HOST_CPU = x86_64
                endif
                ifeq (MINGW64,$(MSYSTEM))
                        prefix = /mingw64
                        HOST_CPU = x86_64
+                       BASIC_LDFLAGS += -Wl,--pic-executable,-e,mainCRTStartup
                else
                        COMPAT_CFLAGS += -D_USE_32BIT_TIME_T
                        BASIC_LDFLAGS += -Wl,--large-address-aware
                else
                        COMPAT_CFLAGS += -D_USE_32BIT_TIME_T
                        BASIC_LDFLAGS += -Wl,--large-address-aware