* [PATCH] Fix build with latest GCC 9.0 tree
@ 2018-12-17 19:31 Dimitar Dimitrov
2018-12-18 3:05 ` Simon Marchi
0 siblings, 1 reply; 4+ messages in thread
From: Dimitar Dimitrov @ 2018-12-17 19:31 UTC (permalink / raw)
To: gdb-patches; +Cc: Dimitar Dimitrov
A recent patch [1] to fix a GCC PR [2] actually broke the GDB build.
To fix, remove the stack pointer clobber. GCC will ignore the clobber
marker, and will not save or restore the stack pointer.
I ran "make check-gdb" on x86_64 to ensure there are no regressions.
gdb/ChangeLog:
2018-12-17 Dimitar Dimitrov <dimitar@dinux.eu>
* nat/linux-ptrace.c (linux_ptrace_test_ret_to_nx): Remove sp clobbers.
[1] https://gcc.gnu.org/ml/gcc-patches/2018-12/msg00532.html
[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52813
Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
---
gdb/nat/linux-ptrace.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gdb/nat/linux-ptrace.c b/gdb/nat/linux-ptrace.c
index 1f21ef03a3..58aed199bf 100644
--- a/gdb/nat/linux-ptrace.c
+++ b/gdb/nat/linux-ptrace.c
@@ -128,14 +128,14 @@ linux_ptrace_test_ret_to_nx (void)
".globl linux_ptrace_test_ret_to_nx_instr;"
"linux_ptrace_test_ret_to_nx_instr:"
"ret"
- : : "r" (return_address) : "%esp", "memory");
+ : : "r" (return_address) : "memory");
#elif defined __x86_64__
asm volatile ("pushq %0;"
".globl linux_ptrace_test_ret_to_nx_instr;"
"linux_ptrace_test_ret_to_nx_instr:"
"ret"
: : "r" ((uint64_t) (uintptr_t) return_address)
- : "%rsp", "memory");
+ : "memory");
#else
# error "!__i386__ && !__x86_64__"
#endif
--
2.11.0
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] Fix build with latest GCC 9.0 tree
2018-12-17 19:31 [PATCH] Fix build with latest GCC 9.0 tree Dimitar Dimitrov
@ 2018-12-18 3:05 ` Simon Marchi
2018-12-19 6:13 ` Dimitar Dimitrov
0 siblings, 1 reply; 4+ messages in thread
From: Simon Marchi @ 2018-12-18 3:05 UTC (permalink / raw)
To: Dimitar Dimitrov; +Cc: gdb-patches
On 2018-12-17 14:30, Dimitar Dimitrov wrote:
> A recent patch [1] to fix a GCC PR [2] actually broke the GDB build.
> To fix, remove the stack pointer clobber. GCC will ignore the clobber
> marker, and will not save or restore the stack pointer.
>
> I ran "make check-gdb" on x86_64 to ensure there are no regressions.
>
> gdb/ChangeLog:
>
> 2018-12-17 Dimitar Dimitrov <dimitar@dinux.eu>
>
> * nat/linux-ptrace.c (linux_ptrace_test_ret_to_nx): Remove sp
> clobbers.
>
> [1] https://gcc.gnu.org/ml/gcc-patches/2018-12/msg00532.html
> [2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52813
>
> Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
> ---
> gdb/nat/linux-ptrace.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/gdb/nat/linux-ptrace.c b/gdb/nat/linux-ptrace.c
> index 1f21ef03a3..58aed199bf 100644
> --- a/gdb/nat/linux-ptrace.c
> +++ b/gdb/nat/linux-ptrace.c
> @@ -128,14 +128,14 @@ linux_ptrace_test_ret_to_nx (void)
> ".globl linux_ptrace_test_ret_to_nx_instr;"
> "linux_ptrace_test_ret_to_nx_instr:"
> "ret"
> - : : "r" (return_address) : "%esp", "memory");
> + : : "r" (return_address) : "memory");
> #elif defined __x86_64__
> asm volatile ("pushq %0;"
> ".globl linux_ptrace_test_ret_to_nx_instr;"
> "linux_ptrace_test_ret_to_nx_instr:"
> "ret"
> : : "r" ((uint64_t) (uintptr_t) return_address)
> - : "%rsp", "memory");
> + : "memory");
> #else
> # error "!__i386__ && !__x86_64__"
> #endif
LGTM:
1. We push a return address and ret, so in the end the stack point has
not changed.
2. This is executed in a child process, which immediately stops on a
breakpoint and never continues, even if the stack pointer was messed up,
we wouldn't notice.
Do you have push access, or would you like me to push the patch for you?
Simon
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] Fix build with latest GCC 9.0 tree
2018-12-18 3:05 ` Simon Marchi
@ 2018-12-19 6:13 ` Dimitar Dimitrov
2018-12-19 15:46 ` Simon Marchi
0 siblings, 1 reply; 4+ messages in thread
From: Dimitar Dimitrov @ 2018-12-19 6:13 UTC (permalink / raw)
To: Simon Marchi; +Cc: gdb-patches
On понеделник, 17 декември 2018 г. 22:05:11 EET Simon Marchi wrote:
> On 2018-12-17 14:30, Dimitar Dimitrov wrote:
> > A recent patch [1] to fix a GCC PR [2] actually broke the GDB build.
> > To fix, remove the stack pointer clobber. GCC will ignore the clobber
> > marker, and will not save or restore the stack pointer.
> >
> > I ran "make check-gdb" on x86_64 to ensure there are no regressions.
> >
> > gdb/ChangeLog:
> >
> > 2018-12-17 Dimitar Dimitrov <dimitar@dinux.eu>
> >
> > * nat/linux-ptrace.c (linux_ptrace_test_ret_to_nx): Remove sp
> >
> > clobbers.
> >
> > [1] https://gcc.gnu.org/ml/gcc-patches/2018-12/msg00532.html
> > [2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52813
> >
> > Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
> > ---
> >
> > gdb/nat/linux-ptrace.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/gdb/nat/linux-ptrace.c b/gdb/nat/linux-ptrace.c
> > index 1f21ef03a3..58aed199bf 100644
> > --- a/gdb/nat/linux-ptrace.c
> > +++ b/gdb/nat/linux-ptrace.c
> > @@ -128,14 +128,14 @@ linux_ptrace_test_ret_to_nx (void)
> >
> > ".globl linux_ptrace_test_ret_to_nx_instr;"
> > "linux_ptrace_test_ret_to_nx_instr:"
> > "ret"
> >
> > - : : "r" (return_address) : "%esp", "memory");
> > + : : "r" (return_address) : "memory");
> >
> > #elif defined __x86_64__
> >
> > asm volatile ("pushq %0;"
> >
> > ".globl linux_ptrace_test_ret_to_nx_instr;"
> > "linux_ptrace_test_ret_to_nx_instr:"
> > "ret"
> >
> > : : "r" ((uint64_t) (uintptr_t) return_address)
> >
> > - : "%rsp", "memory");
> > + : "memory");
> >
> > #else
> > # error "!__i386__ && !__x86_64__"
> > #endif
>
> LGTM:
>
> 1. We push a return address and ret, so in the end the stack point has
> not changed.
> 2. This is executed in a child process, which immediately stops on a
> breakpoint and never continues, even if the stack pointer was messed up,
> we wouldn't notice.
>
> Do you have push access, or would you like me to push the patch for you?
I do not have push access for GDB. Please push it for me.
Please note that discussion on GCC mailing list is still ongoing. I still
think that this GDB patch should be merged, though.
https://gcc.gnu.org/ml/gcc-patches/2018-12/msg01250.html
https://gcc.gnu.org/ml/gcc-patches/2018-12/msg01308.html
Thanks,
Dimitar
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2018-12-19 15:46 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-17 19:31 [PATCH] Fix build with latest GCC 9.0 tree Dimitar Dimitrov
2018-12-18 3:05 ` Simon Marchi
2018-12-19 6:13 ` Dimitar Dimitrov
2018-12-19 15:46 ` Simon Marchi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox