[binutils-gdb/gdb-8.3-branch] Fix regression caused by recently added syscall restart code
Tom de Vries
vries@sourceware.org
Fri Jul 12 12:33:00 GMT 2019
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1e31ba653644faf289e8210ef25c7ab9a65fa865
commit 1e31ba653644faf289e8210ef25c7ab9a65fa865
Author: Kevin Buettner <kevinb@redhat.com>
Date: Fri Jul 12 14:33:40 2019 +0200
Fix regression caused by recently added syscall restart code
[ Backport of master commit e90a813d96. ]
This line of code...
*(int64_t *) ptr = *(int32_t *) ptr;
...in linux-x86-low.c is not needed (and does not work correctly)
within a 32-bit executable. I added an __x86_64__ ifdef (which is
used extensively elsewhere in the file for like purposes) to prevent
this code from being included in 32-bit builds.
It fixes the following regressions when running on native
i686-pc-linux-gnu:
FAIL: gdb.server/abspath.exp: continue to main
FAIL: gdb.server/connect-without-multi-process.exp: multiprocess=auto: continue to main
FAIL: gdb.server/connect-without-multi-process.exp: multiprocess=off: continue to main
FAIL: gdb.server/ext-restart.exp: restart: run to main
FAIL: gdb.server/ext-restart.exp: run to main
FAIL: gdb.server/ext-run.exp: continue to main
FAIL: gdb.server/ext-wrapper.exp: print d
FAIL: gdb.server/ext-wrapper.exp: restart: print d
FAIL: gdb.server/ext-wrapper.exp: restart: run to marker
FAIL: gdb.server/ext-wrapper.exp: run to marker
FAIL: gdb.server/no-thread-db.exp: continue to breakpoint: after tls assignment
FAIL: gdb.server/reconnect-ctrl-c.exp: first: stop with control-c
FAIL: gdb.server/reconnect-ctrl-c.exp: second: stop with control-c
FAIL: gdb.server/run-without-local-binary.exp: run test program until the end
FAIL: gdb.server/server-kill.exp: continue to breakpoint: after server_pid assignment
FAIL: gdb.server/server-kill.exp: tstatus
FAIL: gdb.server/server-run.exp: continue to main
gdb/gdbserver/ChangeLog:
PR gdb/24592
* linux-x86-low.c (x86_fill_gregset): Don't compile 64-bit
sign extension code on 32-bit builds.
Diff:
---
gdb/gdbserver/ChangeLog | 6 ++++++
gdb/gdbserver/linux-x86-low.c | 2 ++
2 files changed, 8 insertions(+)
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index f9f6abc..9968804 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,9 @@
+2019-05-06 Kevin Buettner <kevinb@redhat.com>
+
+ PR gdb/24592
+ * linux-x86-low.c (x86_fill_gregset): Don't compile 64-bit
+ sign extension code on 32-bit builds.
+
2019-04-10 Kevin Buettner <kevinb@redhat.com>
PR gdb/24592
diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c
index dd76731..adddfe7 100644
--- a/gdb/gdbserver/linux-x86-low.c
+++ b/gdb/gdbserver/linux-x86-low.c
@@ -339,6 +339,7 @@ x86_fill_gregset (struct regcache *regcache, void *buf)
collect_register_by_name (regcache, "orig_eax",
((char *) buf) + ORIG_EAX * REGSIZE);
+#ifdef __x86_64__
/* Sign extend EAX value to avoid potential syscall restart
problems.
@@ -351,6 +352,7 @@ x86_fill_gregset (struct regcache *regcache, void *buf)
*(int64_t *) ptr = *(int32_t *) ptr;
}
+#endif
}
static void
More information about the Gdb-cvs
mailing list