diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/gdbserver/ChangeLog | 25 | ||||
-rw-r--r-- | gdb/gdbserver/linux-aarch64-tdesc.c | 6 | ||||
-rw-r--r-- | gdb/gdbserver/linux-tic6x-low.c | 4 | ||||
-rw-r--r-- | gdb/gdbserver/linux-x86-tdesc.c | 15 | ||||
-rw-r--r-- | gdb/gdbserver/lynx-i386-low.c | 3 | ||||
-rw-r--r-- | gdb/gdbserver/nto-x86-low.c | 3 | ||||
-rw-r--r-- | gdb/gdbserver/tdesc.c | 7 | ||||
-rw-r--r-- | gdb/gdbserver/tdesc.h | 6 | ||||
-rw-r--r-- | gdb/gdbserver/win32-i386-low.c | 5 | ||||
-rwxr-xr-x | gdb/gdbserver/x86-tdesc.h | 26 | ||||
-rwxr-xr-x | gdb/regformats/regdat.sh | 3 |
12 files changed, 81 insertions, 28 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 300e90c..3467467 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2018-05-10 Joel Brobecker <brobecker@adacore.com> + + PR server/23158: + * regformats/regdat.sh: Adjust script, following the addition + of the new expedite_regs parameter to init_target_desc. + 2018-05-10 Omair Javaid <omair.javaid@linaro.org> PR gdb/23127 diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 6b6f8fc..9ead122 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,6 +1,31 @@ 2018-05-10 Joel Brobecker <brobecker@adacore.com> PR server/23158: + * tdesc.h (init_target_desc) <expedite_regs>: New parameter. + * tdesc.c (init_target_desc) <expedite_regs>: New parameter. + Use it to set the expedite_regs field in the given tdesc. + * x86-tdesc.h: New file. + * linux-aarch64-tdesc.c (aarch64_linux_read_description): + Adjust following the addition of the new expedite_regs parameter + to init_target_desc. + * linux-tic6x-low.c (tic6x_read_description): Likewise. + * linux-x86-tdesc.c: #include "x86-tdesc.h". + (i386_linux_read_description, amd64_linux_read_description): + Adjust following the addition of the new expedite_regs parameter + to init_target_desc. + * lynx-i386-low.c: #include "x86-tdesc.h". + (lynx_i386_arch_setup): Adjust following the addition of the new + expedite_regs parameter to init_target_desc. + * nto-x86-low.c: #include "x86-tdesc.h". + (nto_x86_arch_setup): Adjust following the addition of the new + expedite_regs parameter to init_target_desc. + * win32-i386-low.c: #include "x86-tdesc.h". + (i386_arch_setup): Adjust following the addition of the new + expedite_regs parameter to init_target_desc. + +2018-05-10 Joel Brobecker <brobecker@adacore.com> + + PR server/23158: * win32-low.c (win32_create_inferior): Add call to my_wait setting last_status global. diff --git a/gdb/gdbserver/linux-aarch64-tdesc.c b/gdb/gdbserver/linux-aarch64-tdesc.c index 9f7b9e5..f433038 100644 --- a/gdb/gdbserver/linux-aarch64-tdesc.c +++ b/gdb/gdbserver/linux-aarch64-tdesc.c @@ -34,12 +34,8 @@ aarch64_linux_read_description () { *tdesc = aarch64_create_target_description (); - init_target_desc (*tdesc); - -#ifndef IN_PROCESS_AGENT static const char *expedite_regs_aarch64[] = { "x29", "sp", "pc", NULL }; - (*tdesc)->expedite_regs = expedite_regs_aarch64; -#endif + init_target_desc (*tdesc, expedite_regs_aarch64); } return *tdesc; diff --git a/gdb/gdbserver/linux-tic6x-low.c b/gdb/gdbserver/linux-tic6x-low.c index e1df59f..d90bbcf 100644 --- a/gdb/gdbserver/linux-tic6x-low.c +++ b/gdb/gdbserver/linux-tic6x-low.c @@ -199,10 +199,8 @@ tic6x_read_description (enum c6x_feature feature) if (*tdesc == NULL) { *tdesc = tic6x_create_target_description (feature); - init_target_desc (*tdesc); - static const char *expedite_regs[] = { "A15", "PC", NULL }; - (*tdesc)->expedite_regs = expedite_regs; + init_target_desc (*tdesc, expedite_regs); } return *tdesc; diff --git a/gdb/gdbserver/linux-x86-tdesc.c b/gdb/gdbserver/linux-x86-tdesc.c index 47b8476..358659b 100644 --- a/gdb/gdbserver/linux-x86-tdesc.c +++ b/gdb/gdbserver/linux-x86-tdesc.c @@ -25,6 +25,7 @@ #ifdef __x86_64__ #include "arch/amd64.h" #endif +#include "x86-tdesc.h" /* Return the right x86_linux_tdesc index for a given XCR0. Return X86_TDESC_LAST if can't find a match. */ @@ -88,12 +89,7 @@ i386_linux_read_description (uint64_t xcr0) { *tdesc = i386_create_target_description (xcr0, true); - init_target_desc (*tdesc); - -#ifndef IN_PROCESS_AGENT - static const char *expedite_regs_i386[] = { "ebp", "esp", "eip", NULL }; - (*tdesc)->expedite_regs = expedite_regs_i386; -#endif + init_target_desc (*tdesc, i386_expedite_regs); } return *tdesc;; @@ -124,12 +120,7 @@ amd64_linux_read_description (uint64_t xcr0, bool is_x32) { *tdesc = amd64_create_target_description (xcr0, is_x32, true); - init_target_desc (*tdesc); - -#ifndef IN_PROCESS_AGENT - static const char *expedite_regs_amd64[] = { "rbp", "rsp", "rip", NULL }; - (*tdesc)->expedite_regs = expedite_regs_amd64; -#endif + init_target_desc (*tdesc, amd64_expedite_regs); } return *tdesc; } diff --git a/gdb/gdbserver/lynx-i386-low.c b/gdb/gdbserver/lynx-i386-low.c index c7b4fe4..37c0dc9 100644 --- a/gdb/gdbserver/lynx-i386-low.c +++ b/gdb/gdbserver/lynx-i386-low.c @@ -21,6 +21,7 @@ #include <sys/ptrace.h> #include "x86-xstate.h" #include "arch/i386.h" +#include "x86-tdesc.h" /* The following two typedefs are defined in a .h file which is not in the standard include path (/sys/include/family/x86/ucontext.h), @@ -296,7 +297,7 @@ lynx_i386_arch_setup (void) struct target_desc *tdesc = i386_create_target_description (X86_XSTATE_SSE_MASK, false); - init_target_desc (tdesc); + init_target_desc (tdesc, i386_expedite_regs); lynx_tdesc = tdesc; } diff --git a/gdb/gdbserver/nto-x86-low.c b/gdb/gdbserver/nto-x86-low.c index b15c208..81c3c6a 100644 --- a/gdb/gdbserver/nto-x86-low.c +++ b/gdb/gdbserver/nto-x86-low.c @@ -25,6 +25,7 @@ #include <x86/context.h> #include "x86-xstate.h" #include "arch/i386.h" +#include "x86-tdesc.h" const unsigned char x86_breakpoint[] = { 0xCC }; #define x86_breakpoint_len 1 @@ -90,7 +91,7 @@ nto_x86_arch_setup (void) struct target_desc *tdesc = i386_create_target_description (X86_XSTATE_SSE_MASK, false); - init_target_desc (tdesc); + init_target_desc (tdesc, i386_expedite_regs); nto_tdesc = tdesc; } diff --git a/gdb/gdbserver/tdesc.c b/gdb/gdbserver/tdesc.c index 92524b3..d035083 100644 --- a/gdb/gdbserver/tdesc.c +++ b/gdb/gdbserver/tdesc.c @@ -60,7 +60,8 @@ void target_desc::accept (tdesc_element_visitor &v) const } void -init_target_desc (struct target_desc *tdesc) +init_target_desc (struct target_desc *tdesc, + const char **expedite_regs) { int offset = 0; @@ -86,6 +87,10 @@ init_target_desc (struct target_desc *tdesc) /* Make sure PBUFSIZ is large enough to hold a full register packet. */ gdb_assert (2 * tdesc->registers_size + 32 <= PBUFSIZ); + +#ifndef IN_PROCESS_AGENT + tdesc->expedite_regs = expedite_regs; +#endif } struct target_desc * diff --git a/gdb/gdbserver/tdesc.h b/gdb/gdbserver/tdesc.h index 61a3e4e..989c128 100644 --- a/gdb/gdbserver/tdesc.h +++ b/gdb/gdbserver/tdesc.h @@ -82,9 +82,11 @@ public: void copy_target_description (struct target_desc *dest, const struct target_desc *src); -/* Initialize TDESC. */ +/* Initialize TDESC, and then set its expedite_regs field to + EXPEDITE_REGS. */ -void init_target_desc (struct target_desc *tdesc); +void init_target_desc (struct target_desc *tdesc, + const char **expedite_regs); /* Return the current inferior's target description. Never returns NULL. */ diff --git a/gdb/gdbserver/win32-i386-low.c b/gdb/gdbserver/win32-i386-low.c index a242f72..16fe2c8 100644 --- a/gdb/gdbserver/win32-i386-low.c +++ b/gdb/gdbserver/win32-i386-low.c @@ -24,6 +24,7 @@ #endif #include "arch/i386.h" #include "tdesc.h" +#include "x86-tdesc.h" #ifndef CONTEXT_EXTENDED_REGISTERS #define CONTEXT_EXTENDED_REGISTERS 0 @@ -436,11 +437,13 @@ i386_arch_setup (void) #ifdef __x86_64__ tdesc = amd64_create_target_description (X86_XSTATE_SSE_MASK, false, false); + const char **expedite_regs = amd64_expedite_regs; #else tdesc = i386_create_target_description (X86_XSTATE_SSE_MASK, false); + const char **expedite_regs = i386_expedite_regs; #endif - init_target_desc (tdesc); + init_target_desc (tdesc, expedite_regs); win32_tdesc = tdesc; } diff --git a/gdb/gdbserver/x86-tdesc.h b/gdb/gdbserver/x86-tdesc.h new file mode 100755 index 0000000..c1641b2 --- /dev/null +++ b/gdb/gdbserver/x86-tdesc.h @@ -0,0 +1,26 @@ +/* Copyright (C) 2018 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#ifndef X86_TDESC_H + +/* The "expedite" registers for x86 targets. */ +static const char *i386_expedite_regs[] = {"ebp", "esp", "eip", NULL}; + +/* The "expedite" registers for x86_64 targets. */ +static const char *amd64_expedite_regs[] = {"rbp", "rsp", "rip", NULL}; + +#endif /* X86_TDESC_H */ diff --git a/gdb/regformats/regdat.sh b/gdb/regformats/regdat.sh index 8f546fe..5a8564a 100755 --- a/gdb/regformats/regdat.sh +++ b/gdb/regformats/regdat.sh @@ -185,11 +185,10 @@ echo cat <<EOF #ifndef IN_PROCESS_AGENT - result->expedite_regs = expedite_regs_${name}; result->xmltarget = xmltarget_${name}; #endif - init_target_desc (result); + init_target_desc (result, expedite_regs_${name}); tdesc_${name} = result; } |