From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10682 invoked by alias); 25 Jul 2012 17:21:29 -0000 Received: (qmail 10667 invoked by uid 22791); 25 Jul 2012 17:21:27 -0000 X-SWARE-Spam-Status: No, hits=-7.6 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_W,SPF_HELO_PASS,TW_BJ,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; Wed, 25 Jul 2012 17:21:09 +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 q6PHL88e024627 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 25 Jul 2012 13:21:08 -0400 Received: from spoyarek (vpn-235-231.phx2.redhat.com [10.3.235.231]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q6PHL5fp023330; Wed, 25 Jul 2012 13:21:06 -0400 Date: Wed, 25 Jul 2012 17:21:00 -0000 From: Siddhesh Poyarekar To: Tom Tromey Cc: gdb-patches@sourceware.org Subject: [PATCH][v2] Make SIZE element for dwarf_block as size_t Message-ID: <20120725225053.3119effa@spoyarek> In-Reply-To: <87boj6qphd.fsf@fleche.redhat.com> References: <20120722131658.2809309e@spoyarek> <20120722135746.1e864ddc@spoyarek> <87fw8isfoo.fsf@fleche.redhat.com> <20120723225922.30d293e7@spoyarek> <87boj6qphd.fsf@fleche.redhat.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/Ei4BnN3yakzLh8RXrmeJv0N" 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-07/txt/msg00554.txt.bz2 --MP_/Ei4BnN3yakzLh8RXrmeJv0N Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 1303 Hi, This is version 2 of the patch I posted in the following thread: http://sourceware.org/ml/gdb-patches/2012-07/msg00422.html dwarf_block.SIZE should be size_t to accept larger data blocks in case of DW_FORM_block, since the size of the length of a DW_FORM_block is not specified and can be anything encoded in a uleb128. The dwarf2_loclist_baton and dwarf2_locexpr_baton SIZE members also need to be made size_t just to eliminate splint warnings. I haven't been able to figure out a test case to reproduce this problem, so I have stuck to ensuring that it does not cause a regression in the testsuite. I have also done another pass through the code to make sure that there are no other places that need fixing as a result of this. Regards, Siddhesh gdb/ChangeLog: 2012-07-25 Siddhesh Poyarekar * dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Expand parameter SIZE to size_t. (dwarf2_evaluate_loc_desc): Likewise. (dwarf2_loc_desc_needs_frame): Likewise. (locexpr_describe_location_1): Likewise. * dwarf2loc.h (struct dwarf2_locexpr_baton): Make SIZE as size_t. (struct dwarf2_loclist_baton): Likewise. * dwarf2read.c (struct dwarf_block): Likewise. (dump_die_shallow): Use pulongest to print dwarf_block.size. (decode_locdesc): Expand SIZE and I to size_t. --MP_/Ei4BnN3yakzLh8RXrmeJv0N Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=locexpr-baton.patch Content-length: 4425 diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index 9b87dad..3eadc55 100644 --- a/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c @@ -54,8 +54,8 @@ static const struct dwarf_expr_context_funcs dwarf_expr_ctx_funcs; static struct value *dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame, const gdb_byte *data, - unsigned short size, - struct dwarf2_per_cu_data *per_cu, + size_t size, + struct dwarf2_per_cu_data *per_cu, LONGEST byte_offset); /* Until these have formal names, we define these here. @@ -2112,7 +2112,7 @@ static const struct dwarf_expr_context_funcs dwarf_expr_ctx_funcs = static struct value * dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame, - const gdb_byte *data, unsigned short size, + const gdb_byte *data, size_t size, struct dwarf2_per_cu_data *per_cu, LONGEST byte_offset) { @@ -2313,7 +2313,7 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame, struct value * dwarf2_evaluate_loc_desc (struct type *type, struct frame_info *frame, - const gdb_byte *data, unsigned short size, + const gdb_byte *data, size_t size, struct dwarf2_per_cu_data *per_cu) { return dwarf2_evaluate_loc_desc_full (type, frame, data, size, per_cu, 0); @@ -2434,7 +2434,7 @@ static const struct dwarf_expr_context_funcs needs_frame_ctx_funcs = requires a frame to evaluate. */ static int -dwarf2_loc_desc_needs_frame (const gdb_byte *data, unsigned short size, +dwarf2_loc_desc_needs_frame (const gdb_byte *data, size_t size, struct dwarf2_per_cu_data *per_cu) { struct needs_frame_baton baton; @@ -3828,7 +3828,7 @@ disassemble_dwarf_expression (struct ui_file *stream, static void locexpr_describe_location_1 (struct symbol *symbol, CORE_ADDR addr, struct ui_file *stream, - const gdb_byte *data, int size, + const gdb_byte *data, size_t size, struct objfile *objfile, unsigned int addr_size, int offset_size, struct dwarf2_per_cu_data *per_cu) { diff --git a/gdb/dwarf2loc.h b/gdb/dwarf2loc.h index e9d06a3..326838f 100644 --- a/gdb/dwarf2loc.h +++ b/gdb/dwarf2loc.h @@ -77,7 +77,7 @@ struct type *dwarf2_get_die_type (cu_offset die_offset, struct value *dwarf2_evaluate_loc_desc (struct type *type, struct frame_info *frame, const gdb_byte *data, - unsigned short size, + size_t size, struct dwarf2_per_cu_data *per_cu); CORE_ADDR dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu, @@ -97,7 +97,7 @@ struct dwarf2_locexpr_baton /* Length of the location expression. For optimized out expressions it is zero. */ - unsigned long size; + size_t size; /* The compilation unit containing the symbol whose location we're computing. */ @@ -114,7 +114,7 @@ struct dwarf2_loclist_baton const gdb_byte *data; /* Length of the location list. */ - unsigned long size; + size_t size; /* The compilation unit containing the symbol whose location we're computing. */ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 4b20098..99fef46 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -990,7 +990,7 @@ struct die_info /* Blocks are a bunch of untyped bytes. */ struct dwarf_block { - unsigned int size; + size_t size; /* Valid only if SIZE is not zero. */ gdb_byte *data; @@ -16197,12 +16197,12 @@ dump_die_shallow (struct ui_file *f, int indent, struct die_info *die) case DW_FORM_block4: case DW_FORM_block: case DW_FORM_block1: - fprintf_unfiltered (f, "block: size %d", - DW_BLOCK (&die->attrs[i])->size); + fprintf_unfiltered (f, "block: size %s", + pulongest (DW_BLOCK (&die->attrs[i])->size)); break; case DW_FORM_exprloc: - fprintf_unfiltered (f, "expression: size %u", - DW_BLOCK (&die->attrs[i])->size); + fprintf_unfiltered (f, "expression: size %s", + pulongest (DW_BLOCK (&die->attrs[i])->size)); break; case DW_FORM_ref_addr: fprintf_unfiltered (f, "ref address: "); @@ -16746,8 +16746,8 @@ static CORE_ADDR decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu) { struct objfile *objfile = cu->objfile; - int i; - int size = blk->size; + size_t i; + size_t size = blk->size; gdb_byte *data = blk->data; CORE_ADDR stack[64]; int stacki; --MP_/Ei4BnN3yakzLh8RXrmeJv0N--