[PATCH] configure: don't enable ASLR for --enable-debug Windows builds

Mark Cave-Ayland posted 1 patch 5 years, 2 months ago
Test docker-quick@centos7 failed
Test docker-mingw@fedora failed
Test checkpatch passed
Test FreeBSD failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20201005133434.12614-1-mark.cave-ayland@ilande.co.uk
configure | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
[PATCH] configure: don't enable ASLR for --enable-debug Windows builds
Posted by Mark Cave-Ayland 5 years, 2 months ago
Unlike other OSs it is not possible for gdb to temporarily disable ASLR when
debugging executables on Windows which causes gdb to fail with memory access
errors when trying to debug QEMU.

Keep ASLR enabled by default on Windows via the --dynamicbase compiler flag
except for --enable-debug builds when there is a clear expectation that a
functioning gdb is expected at the cost of slightly less security.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
---
 configure | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/configure b/configure
index f46f433649..a3de75b9f8 100755
--- a/configure
+++ b/configure
@@ -6144,7 +6144,14 @@ fi
 
 # Use ASLR, no-SEH and DEP if available
 if test "$mingw32" = "yes" ; then
-    for flag in --dynamicbase --no-seh --nxcompat; do
+    flags="--no-seh --nxcompat"
+
+    # Disable ASLR for debug builds to allow debugging with gdb
+    if test "$debug" = "no" ; then
+        flags="--dynamicbase $flags"
+    fi
+
+    for flag in $flags; do
         if ld_has $flag ; then
             QEMU_LDFLAGS="-Wl,$flag $QEMU_LDFLAGS"
         fi
-- 
2.20.1


Re: [PATCH] configure: don't enable ASLR for --enable-debug Windows builds
Posted by Richard Henderson 5 years, 2 months ago
On 10/5/20 8:34 AM, Mark Cave-Ayland wrote:
> Unlike other OSs it is not possible for gdb to temporarily disable ASLR when
> debugging executables on Windows which causes gdb to fail with memory access
> errors when trying to debug QEMU.
> 
> Keep ASLR enabled by default on Windows via the --dynamicbase compiler flag
> except for --enable-debug builds when there is a clear expectation that a
> functioning gdb is expected at the cost of slightly less security.
> 
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> ---
>  configure | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


Re: [PATCH] configure: don't enable ASLR for --enable-debug Windows builds
Posted by Paolo Bonzini 5 years, 2 months ago
On 05/10/20 15:42, Richard Henderson wrote:
> On 10/5/20 8:34 AM, Mark Cave-Ayland wrote:
>> Unlike other OSs it is not possible for gdb to temporarily disable ASLR when
>> debugging executables on Windows which causes gdb to fail with memory access
>> errors when trying to debug QEMU.
>>
>> Keep ASLR enabled by default on Windows via the --dynamicbase compiler flag
>> except for --enable-debug builds when there is a clear expectation that a
>> functioning gdb is expected at the cost of slightly less security.
>>
>> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>> ---
>>  configure | 9 ++++++++-
>>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

Queued, thanks.

Paolo