From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27024 invoked by alias); 5 Jun 2012 03:16:05 -0000 Received: (qmail 27010 invoked by uid 22791); 5 Jun 2012 03:16:03 -0000 X-SWARE-Spam-Status: No, hits=-7.5 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_W,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 05 Jun 2012 03:15:43 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q553Fg9Q015714 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 4 Jun 2012 23:15:42 -0400 Received: from spoyarek (vpn-232-179.phx2.redhat.com [10.3.232.179]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q553FdEl026086; Mon, 4 Jun 2012 23:15:40 -0400 Date: Tue, 05 Jun 2012 03:16:00 -0000 From: Siddhesh Poyarekar To: Jan Kratochvil Cc: gdb-patches@sourceware.org, Tom Tromey Subject: Re: [PATCH] Memory reads and writes should have size_t length Message-ID: <20120605084605.186d537a@spoyarek> In-Reply-To: <20120604215419.GA27980@host2.jankratochvil.net> References: <20120531125320.65ad1f8f@spoyarek> <20120601174809.GA21938@host2.jankratochvil.net> <20120602012958.4a6d9a7c@spoyarek> <20120604215419.GA27980@host2.jankratochvil.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/+mCXCCDqvr9MKmVY7xuiOLm" 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 X-SW-Source: 2012-06/txt/msg00110.txt.bz2 --MP_/+mCXCCDqvr9MKmVY7xuiOLm Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 854 On Mon, 4 Jun 2012 23:54:19 +0200, Jan wrote: > > Unless someone else is going to protect all the hundreds/thousands of > callers I do not think it is worth it and ssize_t is good enough. > OK, thanks for the explanation. Updated patch attached. Regards, Siddhesh gdb/ChangeLog: 2012-06-05 Siddhesh Poyarekar * corefile.c (read_memory): Accept LEN argument as ssize_t. (read_stack): Likewise. (write_memory): Likewise. * gdbcore.h (read_memory): Likewise. (read_stack): Likewise. (write_memory): Likewise. * remote.c (remote_write_bytes_aux): Likewise. (remote_write_bytes): Likewise. * target.c (target_read_stack): Likewise. (target_write_memory): Likewise. (target_write_raw_memory): Likewise. * target.h (target_read_stack): Likewise. (target_write_memory): Likewise. (target_write_raw_memory): Likewise. --MP_/+mCXCCDqvr9MKmVY7xuiOLm Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=gdb-memory-ssizet.patch Content-length: 5186 diff --git a/gdb/corefile.c b/gdb/corefile.c index 986e4f5..611cd62 100644 --- a/gdb/corefile.c +++ b/gdb/corefile.c @@ -213,7 +213,7 @@ memory_error (int status, CORE_ADDR memaddr) /* Same as target_read_memory, but report an error if can't read. */ void -read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len) +read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len) { int status; @@ -225,7 +225,7 @@ read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len) /* Same as target_read_stack, but report an error if can't read. */ void -read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, int len) +read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len) { int status; @@ -352,7 +352,7 @@ read_memory_typed_address (CORE_ADDR addr, struct type *type) write. */ void write_memory (CORE_ADDR memaddr, - const bfd_byte *myaddr, int len) + const bfd_byte *myaddr, ssize_t len) { int status; diff --git a/gdb/gdbcore.h b/gdb/gdbcore.h index 776ce9f..1081f3f 100644 --- a/gdb/gdbcore.h +++ b/gdb/gdbcore.h @@ -45,11 +45,11 @@ extern void memory_error (int status, CORE_ADDR memaddr); /* Like target_read_memory, but report an error if can't read. */ -extern void read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len); +extern void read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len); /* Like target_read_stack, but report an error if can't read. */ -extern void read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, int len); +extern void read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len); /* Read an integer from debugged memory, given address and number of bytes. */ @@ -83,7 +83,8 @@ CORE_ADDR read_memory_typed_address (CORE_ADDR addr, struct type *type); byteswapping, alignment, different sizes for host vs. target types, etc. */ -extern void write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, int len); +extern void write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, + ssize_t len); /* Store VALUE at ADDR in the inferior as a LEN-byte unsigned integer. */ extern void write_memory_unsigned_integer (CORE_ADDR addr, int len, diff --git a/gdb/remote.c b/gdb/remote.c index 54e7a67..322ff01 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -6450,7 +6450,7 @@ check_binary_download (CORE_ADDR addr) static int remote_write_bytes_aux (const char *header, CORE_ADDR memaddr, - const gdb_byte *myaddr, int len, + const gdb_byte *myaddr, ssize_t len, char packet_format, int use_length) { struct remote_state *rs = get_remote_state (); @@ -6611,7 +6611,7 @@ remote_write_bytes_aux (const char *header, CORE_ADDR memaddr, error. Only transfer a single packet. */ static int -remote_write_bytes (CORE_ADDR memaddr, const gdb_byte *myaddr, int len) +remote_write_bytes (CORE_ADDR memaddr, const gdb_byte *myaddr, ssize_t len) { char *packet_format = 0; diff --git a/gdb/target.c b/gdb/target.c index a2b2098..f7a78bb 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -1772,7 +1772,7 @@ target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, size_t len) the target's stack. This may trigger different cache behavior. */ int -target_read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, int len) +target_read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len) { /* Dispatch to the topmost target, not the flattened current_target. Memory accesses check target->to_has_(all_)memory, and the @@ -1791,7 +1791,7 @@ target_read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, int len) Callers that can deal with partial writes should call target_write. */ int -target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, int len) +target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, ssize_t len) { /* Dispatch to the topmost target, not the flattened current_target. Memory accesses check target->to_has_(all_)memory, and the @@ -1810,7 +1810,7 @@ target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, int len) should call target_write. */ int -target_write_raw_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, int len) +target_write_raw_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, ssize_t len) { /* Dispatch to the topmost target, not the flattened current_target. Memory accesses check target->to_has_(all_)memory, and the diff --git a/gdb/target.h b/gdb/target.h index a615e47..1057a02 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -999,13 +999,13 @@ extern int target_read_string (CORE_ADDR, char **, int, int *); extern int target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, size_t len); -extern int target_read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, int len); +extern int target_read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len); extern int target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, - int len); + ssize_t len); extern int target_write_raw_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, - int len); + ssize_t len); /* Fetches the target's memory map. If one is found it is sorted and returned, after some consistency checking. Otherwise, NULL --MP_/+mCXCCDqvr9MKmVY7xuiOLm--