From: Kevin Buettner Date: Fri, 12 Jul 2019 12:33:40 +0000 (+0200) Subject: Fix regression caused by recently added syscall restart code X-Git-Tag: gdb-8.3.1-release~88 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1e31ba653644faf289e8210ef25c7ab9a65fa865;p=thirdparty%2Fbinutils-gdb.git 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 --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index f9f6abc22e6..9968804308d 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,9 @@ +2019-05-06 Kevin Buettner + + 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 PR gdb/24592 diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c index dd7673126ed..adddfe77971 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