17b1509aac
In commit6085d6f6
, Z0 packet is disabled in aarch64 GDBserver if the inferior is 32-bit or there may be multiple inferiors, because Z0 packet isn't supported for arm then. Recently, Z0 packet is supported in arm target, so we don't have such limitation in aarch64 GDBserver, that is to say, aarch64 GDBserver can use Z0 packet in multi-arch/multi-inferior debugging when the inferior's arch is arm. Part of this patch is to revert6085d6f6
, and the rest of the patch is to move some breakpoint related arm_* functions into linux-aarch32-low.c in order to share them between arm and aarch64. This patch is regression tested on aarch64-linux for debugging both aarch64 programs and arm programs respectively. gdb/gdbserver: 2015-12-07 Yao Qi <yao.qi@linaro.org> * configure.srv: Append arm.o to srv_tgtobj for aarch64*-*-linux* target. * linux-aarch32-low.c (arm_abi_breakpoint): New macro. Moved from linux-arm-low.c. (arm_eabi_breakpoint, arm_breakpoint): Likewise. (arm_breakpoint_len, thumb_breakpoint): Likewise. (thumb_breakpoint_len, thumb2_breakpoint): Likewise. (thumb2_breakpoint_len): Likewise. (arm_is_thumb_mode, arm_breakpoint_at): Likewise. (arm_breakpoint_kinds): Likewise. (arm_breakpoint_kind_from_pc): Likewise. (arm_sw_breakpoint_from_kind): Likewise. (arm_breakpoint_kind_from_current_state): Likewise. * linux-aarch32-low.h (arm_breakpoint_kind_from_pc): Declare. (arm_sw_breakpoint_from_kind): Declare. (arm_breakpoint_kind_from_current_state): Declare. (arm_breakpoint_at): Declare. * linux-aarch64-low.c (aarch64_sw_breakpoint_from_kind): Call arm_sw_breakpoint_from_kind if process is 32-bit. (aarch64_breakpoint_kind_from_pc): New function. (aarch64_breakpoint_kind_from_current_state): New function. (the_low_target): Initialize fields breakpoint_kind_from_pc and breakpoint_kind_from_current_state. * linux-arm-low.c (arm_breakpoint_kinds): Move to linux-aarch32-low.c. (arm_abi_breakpoint, arm_eabi_breakpoint): Likewise. (arm_breakpoint, arm_breakpoint_len): Likewise. (thumb_breakpoint, thumb_breakpoint_len): Likewise. (thumb2_breakpoint, thumb2_breakpoint_len): Likewise. (arm_is_thumb_mode): Likewise. (arm_breakpoint_at): Likewise. (arm_breakpoint_kind_from_pc): Likewise. (arm_sw_breakpoint_from_kind): Likewise. (arm_breakpoint_kind_from_current_state): Likewise. Revert: 2015-08-04 Yao Qi <yao.qi@linaro.org> * linux-aarch64-low.c (aarch64_supports_z_point_type): Return 0 for Z_PACKET_SW_BP if it may be used in multi-arch debugging. * server.c (extended_protocol): Remove "static". * server.h (extended_protocol): Declare it.
136 lines
3.6 KiB
C
136 lines
3.6 KiB
C
/* Common definitions for remote server for GDB.
|
|
Copyright (C) 1993-2015 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 SERVER_H
|
|
#define SERVER_H
|
|
|
|
#include "common-defs.h"
|
|
|
|
gdb_static_assert (sizeof (CORE_ADDR) >= sizeof (void *));
|
|
|
|
#ifdef __MINGW32CE__
|
|
#include "wincecompat.h"
|
|
#endif
|
|
|
|
#include "version.h"
|
|
|
|
#if !HAVE_DECL_STRERROR
|
|
#ifndef strerror
|
|
extern char *strerror (int); /* X3.159-1989 4.11.6.2 */
|
|
#endif
|
|
#endif
|
|
|
|
#if !HAVE_DECL_PERROR
|
|
#ifndef perror
|
|
extern void perror (const char *);
|
|
#endif
|
|
#endif
|
|
|
|
#if !HAVE_DECL_VASPRINTF
|
|
extern int vasprintf(char **strp, const char *fmt, va_list ap);
|
|
#endif
|
|
#if !HAVE_DECL_VSNPRINTF
|
|
int vsnprintf(char *str, size_t size, const char *format, va_list ap);
|
|
#endif
|
|
|
|
#ifdef IN_PROCESS_AGENT
|
|
# define PROG "ipa"
|
|
#else
|
|
# define PROG "gdbserver"
|
|
#endif
|
|
|
|
#include "buffer.h"
|
|
#include "xml-utils.h"
|
|
#include "regcache.h"
|
|
#include "gdb_signals.h"
|
|
#include "target.h"
|
|
#include "mem-break.h"
|
|
#include "gdbthread.h"
|
|
#include "inferiors.h"
|
|
|
|
/* Target-specific functions */
|
|
|
|
void initialize_low ();
|
|
|
|
/* Public variables in server.c */
|
|
|
|
extern ptid_t cont_thread;
|
|
extern ptid_t general_thread;
|
|
|
|
extern int server_waiting;
|
|
extern int pass_signals[];
|
|
extern int program_signals[];
|
|
extern int program_signals_p;
|
|
|
|
extern int disable_packet_vCont;
|
|
extern int disable_packet_Tthread;
|
|
extern int disable_packet_qC;
|
|
extern int disable_packet_qfThreadInfo;
|
|
|
|
extern int run_once;
|
|
extern int multi_process;
|
|
extern int report_fork_events;
|
|
extern int report_vfork_events;
|
|
extern int report_exec_events;
|
|
extern int report_thread_events;
|
|
extern int non_stop;
|
|
|
|
/* True if the "swbreak+" feature is active. In that case, GDB wants
|
|
us to report whether a trap is explained by a software breakpoint
|
|
and for the server to handle PC adjustment if necessary on this
|
|
target. Only enabled if the target supports it. */
|
|
extern int swbreak_feature;
|
|
|
|
/* True if the "hwbreak+" feature is active. In that case, GDB wants
|
|
us to report whether a trap is explained by a hardware breakpoint.
|
|
Only enabled if the target supports it. */
|
|
extern int hwbreak_feature;
|
|
|
|
extern int disable_randomization;
|
|
|
|
#if USE_WIN32API
|
|
#include <winsock2.h>
|
|
typedef SOCKET gdb_fildes_t;
|
|
#else
|
|
typedef int gdb_fildes_t;
|
|
#endif
|
|
|
|
#include "event-loop.h"
|
|
|
|
/* Functions from server.c. */
|
|
extern int handle_serial_event (int err, gdb_client_data client_data);
|
|
extern int handle_target_event (int err, gdb_client_data client_data);
|
|
|
|
/* Get rid of the currently pending stop replies that match PTID. */
|
|
extern void discard_queued_stop_replies (ptid_t ptid);
|
|
|
|
#include "remote-utils.h"
|
|
|
|
#include "utils.h"
|
|
#include "debug.h"
|
|
|
|
/* Maximum number of bytes to read/write at once. The value here
|
|
is chosen to fill up a packet (the headers account for the 32). */
|
|
#define MAXBUFBYTES(N) (((N)-32)/2)
|
|
|
|
/* Buffer sizes for transferring memory, registers, etc. Set to a constant
|
|
value to accomodate multiple register formats. This value must be at least
|
|
as large as the largest register set supported by gdbserver. */
|
|
#define PBUFSIZ 16384
|
|
|
|
#endif /* SERVER_H */
|