From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30725 invoked by alias); 31 May 2012 08:08:00 -0000 Received: (qmail 30701 invoked by uid 22791); 31 May 2012 08:07:56 -0000 X-SWARE-Spam-Status: No, hits=-6.6 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,MAY_BE_FORGED,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; Thu, 31 May 2012 08:07:33 +0000 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q4V7NDPc001199 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 31 May 2012 03:23:15 -0400 Received: from spoyarek (dhcp233-8.pnq.redhat.com [10.65.223.8] (may be forged)) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id q4V7MpVM001812; Thu, 31 May 2012 03:23:12 -0400 Date: Thu, 31 May 2012 08:08:00 -0000 From: Siddhesh Poyarekar To: gdb-patches@sourceware.org Cc: Jan Kratochvil , Tom Tromey Subject: [PATCH] Memory reads and writes should have size_t length Message-ID: <20120531125320.65ad1f8f@spoyarek> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/caE4Q=S=+J3K4pDz5TNjJ4D" 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-05/txt/msg01073.txt.bz2 --MP_/caE4Q=S=+J3K4pDz5TNjJ4D Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 1302 Hi, Following the patch to bfd to accept size_t when reading objects from memory: http://sourceware.org/ml/gdb-patches/2012-05/msg00988.html here's a patch makes memory reading and writing code consistent with the above change and hence accept size_t for length. This change is not comprehensive, i.e. there are a number of other places (to_xfer_partial and friends) where a similar change should occur, but they're not included in this change since those places already use LONGEST for length and hence won't really be *fixing* anything. These changes on the other hand, are supporting changes for the bitpos and type.length changes: http://sourceware.org/ml/gdb-patches/2012-05/msg00128.html Regards, Siddhesh gdb/ChangeLog: 2012-05-31 Siddhesh Poyarekar * corefile.c (read_memory): Accept LEN argument as size_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_/caE4Q=S=+J3K4pDz5TNjJ4D Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=gdb-memory-sizet.patch Content-length: 5185 diff --git a/gdb/corefile.c b/gdb/corefile.c index 986e4f5..89fcf49 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, size_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, size_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, size_t len) { int status; diff --git a/gdb/gdbcore.h b/gdb/gdbcore.h index 776ce9f..9843b1e 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, size_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, size_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, + size_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 565de19..80e889f 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, size_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, size_t len) { char *packet_format = 0; diff --git a/gdb/target.c b/gdb/target.c index 91b4b47..a074188 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, size_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, size_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, size_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 f3ef33a..99ce3b7 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, size_t len); extern int target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, - int len); + size_t len); extern int target_write_raw_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, - int len); + size_t len); /* Fetches the target's memory map. If one is found it is sorted and returned, after some consistency checking. Otherwise, NULL -- 1.7.7.6 --MP_/caE4Q=S=+J3K4pDz5TNjJ4D--