From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21271 invoked by alias); 16 May 2013 14:48:34 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 21238 invoked by uid 89); 16 May 2013 14:48:34 -0000 X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,KHOP_THREADED autolearn=ham version=3.3.1 Received: from gbenson.demon.co.uk (HELO blade.nx) (80.177.220.214) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Thu, 16 May 2013 14:48:33 +0000 Received: by blade.nx (Postfix, from userid 500) id 9FCDD263EBE; Thu, 16 May 2013 15:48:30 +0100 (BST) Date: Thu, 16 May 2013 14:48:00 -0000 From: Gary Benson To: gdb-patches@sourceware.org Subject: [RFA 4/7] GDB support for new gdbserver functionality Message-ID: <20130516144830.GE2105@blade.nx> Mail-Followup-To: gdb-patches@sourceware.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="CaPKgh3XHpq3rEUV" Content-Disposition: inline In-Reply-To: <20130516144340.GA2105@blade.nx> X-Virus-Found: No X-SW-Source: 2013-05/txt/msg00628.txt.bz2 --CaPKgh3XHpq3rEUV Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-length: 103 This patch adds client support for the new gdbserver functionality provided by patch 3 of this series. --CaPKgh3XHpq3rEUV Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="rtld-probes-4-remote.patch" Content-length: 4593 2013-05-16 Gary Benson * target.h (target_ops): New field "to_augmented_libraries_svr4_read". (target_augmented_libraries_svr4_read): New macro. * target.c (update_current_target): Handle to_augmented_libraries_svr4_read. * remote.c (remote_state): New field "augmented_libraries_svr4_read". (remote_augmented_libraries_svr4_read_feature): New function. (remote_protocol_features): Add entry for "augmented-libraries-svr4-read". (remote_augmented_libraries_svr4_read): New function. (init_remote_ops): Initialize remote_ops.to_augmented_libraries_svr4_read. diff --git a/gdb/target.h b/gdb/target.h index e937d39..a8587e8 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -941,6 +941,10 @@ struct target_ops (inclusive) to function END (exclusive). */ void (*to_call_history_range) (ULONGEST begin, ULONGEST end, int flags); + /* Nonzero if TARGET_OBJECT_LIBRARIES_SVR4 may be read with a + non-empty annex. */ + int (*to_augmented_libraries_svr4_read) (void); + int to_magic; /* Need sub-structure for target machine related rather than comm related? */ @@ -1809,6 +1813,9 @@ extern char *target_fileio_read_stralloc (const char *filename); #define target_can_use_agent() \ (*current_target.to_can_use_agent) () +#define target_augmented_libraries_svr4_read() \ + (*current_target.to_augmented_libraries_svr4_read) () + /* Command logging facility. */ #define target_log_command(p) \ diff --git a/gdb/target.c b/gdb/target.c index 8653dac..519b97f 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -731,6 +731,7 @@ update_current_target (void) INHERIT (to_traceframe_info, t); INHERIT (to_use_agent, t); INHERIT (to_can_use_agent, t); + INHERIT (to_augmented_libraries_svr4_read, t); INHERIT (to_magic, t); INHERIT (to_supports_evaluation_of_breakpoint_conditions, t); INHERIT (to_can_run_breakpoint_commands, t); @@ -975,6 +976,9 @@ update_current_target (void) de_fault (to_can_use_agent, (int (*) (void)) return_zero); + de_fault (to_augmented_libraries_svr4_read, + (int (*) (void)) + return_zero); de_fault (to_execution_direction, default_execution_direction); #undef de_fault diff --git a/gdb/remote.c b/gdb/remote.c index 51bf025..e1cf8a4 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -343,6 +343,10 @@ struct remote_state /* True if the stub can collect strings using tracenz bytecode. */ int string_tracing; + /* True if the stub supports qXfer:libraries-svr4:read with a + non-empty annex. */ + int augmented_libraries_svr4_read; + /* Nonzero if the user has pressed Ctrl-C, but the target hasn't responded to that. */ int ctrlc_pending_p; @@ -3931,6 +3935,16 @@ remote_string_tracing_feature (const struct protocol_feature *feature, rs->string_tracing = (support == PACKET_ENABLE); } +static void +remote_augmented_libraries_svr4_read_feature + (const struct protocol_feature *feature, + enum packet_support support, const char *value) +{ + struct remote_state *rs = get_remote_state (); + + rs->augmented_libraries_svr4_read = (support == PACKET_ENABLE); +} + static struct protocol_feature remote_protocol_features[] = { { "PacketSize", PACKET_DISABLE, remote_packet_size, -1 }, { "qXfer:auxv:read", PACKET_DISABLE, remote_supported_packet, @@ -3941,6 +3955,8 @@ static struct protocol_feature remote_protocol_features[] = { PACKET_qXfer_libraries }, { "qXfer:libraries-svr4:read", PACKET_DISABLE, remote_supported_packet, PACKET_qXfer_libraries_svr4 }, + { "augmented-libraries-svr4-read", PACKET_DISABLE, + remote_augmented_libraries_svr4_read_feature, -1 }, { "qXfer:memory-map:read", PACKET_DISABLE, remote_supported_packet, PACKET_qXfer_memory_map }, { "qXfer:spu:read", PACKET_DISABLE, remote_supported_packet, @@ -11343,6 +11359,14 @@ remote_read_btrace (struct btrace_target_info *tinfo, return btrace; } +static int +remote_augmented_libraries_svr4_read (void) +{ + struct remote_state *rs = get_remote_state (); + + return rs->augmented_libraries_svr4_read; +} + static void init_remote_ops (void) { @@ -11465,6 +11489,8 @@ Specify the serial device it is connected to\n\ remote_ops.to_disable_btrace = remote_disable_btrace; remote_ops.to_teardown_btrace = remote_teardown_btrace; remote_ops.to_read_btrace = remote_read_btrace; + remote_ops.to_augmented_libraries_svr4_read = + remote_augmented_libraries_svr4_read; } /* Set up the extended remote vector by making a copy of the standard --CaPKgh3XHpq3rEUV--