From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11770 invoked by alias); 18 Apr 2012 18:47:44 -0000 Received: (qmail 11757 invoked by uid 22791); 18 Apr 2012 18:47:42 -0000 X-SWARE-Spam-Status: No, hits=-4.1 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KHOP_RCVD_TRUST,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-yw0-f73.google.com (HELO mail-yw0-f73.google.com) (209.85.213.73) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 18 Apr 2012 18:47:11 +0000 Received: by yhpp61 with SMTP id p61so897469yhp.0 for ; Wed, 18 Apr 2012 11:47:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=to:cc:subject:message-id:date:from:x-gm-message-state; bh=QRsLHNmRaSowon8T3aK9aUsOourQlYkbN4rQ7FGv2ak=; b=U+H3cZEiiEzLF4W85ip0tBCJmSvMRObXKb/SC5r4i95sKmY2P17jVqM7baPLV/71Xg zj4Zr+mxhJKn9V8Bb+ASCWL6OQP9GslRoiadA9gqfvqOWAsN4mM4TK6KEV/g0IbSVXJt s2jasyFwPQ+ie6ZOFWGJAPiQgFYbDXI4vrvnflkNeiZAYIL8l4y21pDgraNufl7kQXGp qxWMCwmQYY4sOt2WA98eXUArKJeZf1ACDRUJdoPZbfA6ETIHlCPdZjUVi1L8mrmfkFP8 aQk9djmsPy6D6AkmzsR6TFWY80t6MuRyFlr38QqKw9wKvOsf1R3z1RoPOr3DNvvxTxGe 80kA== Received: by 10.236.189.9 with SMTP id b9mr4159445yhn.8.1334774830411; Wed, 18 Apr 2012 11:47:10 -0700 (PDT) Received: by 10.236.189.9 with SMTP id b9mr4159430yhn.8.1334774830355; Wed, 18 Apr 2012 11:47:10 -0700 (PDT) Received: from wpzn3.hot.corp.google.com (216-239-44-65.google.com [216.239.44.65]) by gmr-mx.google.com with ESMTPS id k4si23247788yhm.3.2012.04.18.11.47.10 (version=TLSv1/SSLv3 cipher=AES128-SHA); Wed, 18 Apr 2012 11:47:10 -0700 (PDT) Received: from ruffy.mtv.corp.google.com (ruffy.mtv.corp.google.com [172.18.110.50]) by wpzn3.hot.corp.google.com (Postfix) with ESMTP id 3108910004D; Wed, 18 Apr 2012 11:47:10 -0700 (PDT) Received: by ruffy.mtv.corp.google.com (Postfix, from userid 67641) id D50152461AF; Wed, 18 Apr 2012 11:47:09 -0700 (PDT) To: gdb-patches@sourceware.org cc: ccoutant@google.com, saugustine@google.com Subject: [RFA 1/3] Initial Fission support, change reference forms to use DW_UNSND Message-Id: <20120418184709.D50152461AF@ruffy.mtv.corp.google.com> Date: Wed, 18 Apr 2012 18:54:00 -0000 From: dje@google.com (Doug Evans) X-Gm-Message-State: ALoCoQkvwcEu58qI300POXQaCdqD2M5RvV8JBsQBA7v0EFHqPBBGmUozzV0M2PS/SuWd4gFuRPo89aZIqePCqImbxPlqolmq5wXIKFNimfyk9MfktTpy0iQqv7vkw9PJwES0nRpcndZVAb9VtMrqlKIIveX8dWWz6Yof39uwhHq+dYVIW46sNNE= X-IsSubscribed: yes 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-04/txt/msg00599.txt.bz2 Hi. This is the first patch in the Fission series. It is a standalone patch, and simply moves reference attributes from DW_ADDR to DW_UNSND. [plus adds missing support for ref8, ref_udata to the pretty-printer] Regression tested on amd64-linux. Ok to commit? 2012-04-18 Doug Evans * dwarf2read.c (partial_die_full_name): Record DW_FORM_ref_addr in attr.u.unsnd instead of attr.u.addr. (read_attribute_value) Ditto for cases DW_FORM_ref_addr, DW_FORM_ref1, DW_FORM_ref2, DW_FORM_ref4, DW_FORM_reg8, DW_FORM_ref_udata. (dump_die_shallow): Update cases DW_FORM_ref_addr, DW_FORM_ref1, DW_FORM_ref2, DW_FORM_ref4. Add cases DW_FORM_reg8, DW_FORM_ref_udata. (dwarf2_get_ref_die_offset): Use DW_UNSND for reference attributes. Index: dwarf2read.c =================================================================== RCS file: /cvs/src/src/gdb/dwarf2read.c,v retrieving revision 1.635 diff -u -p -r1.635 dwarf2read.c --- dwarf2read.c 18 Apr 2012 06:24:48 -0000 1.635 +++ dwarf2read.c 18 Apr 2012 15:50:47 -0000 @@ -3996,6 +3996,7 @@ partial_die_parent_scope (struct partial /* Return the fully scoped name associated with PDI, from compilation unit CU. The result will be allocated with malloc. */ + static char * partial_die_full_name (struct partial_die_info *pdi, struct dwarf2_cu *cu) @@ -4019,7 +4020,7 @@ partial_die_full_name (struct partial_di /* DW_FORM_ref_addr is using section offset. */ attr.name = 0; attr.form = DW_FORM_ref_addr; - attr.u.addr = pdi->offset.sect_off; + attr.u.unsnd = pdi->offset.sect_off; die = follow_die_ref (NULL, &attr, &ref_cu); return xstrdup (dwarf2_full_name (NULL, die, ref_cu)); @@ -10226,10 +10227,10 @@ read_attribute_value (struct attribute * { case DW_FORM_ref_addr: if (cu->header.version == 2) - DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read); + DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read); else - DW_ADDR (attr) = read_offset (abfd, info_ptr, - &cu->header, &bytes_read); + DW_UNSND (attr) = read_offset (abfd, info_ptr, + &cu->header, &bytes_read); info_ptr += bytes_read; break; case DW_FORM_addr: @@ -10316,23 +10317,23 @@ read_attribute_value (struct attribute * info_ptr += bytes_read; break; case DW_FORM_ref1: - DW_ADDR (attr) = (cu->header.offset.sect_off - + read_1_byte (abfd, info_ptr)); + DW_UNSND (attr) = (cu->header.offset.sect_off + + read_1_byte (abfd, info_ptr)); info_ptr += 1; break; case DW_FORM_ref2: - DW_ADDR (attr) = (cu->header.offset.sect_off - + read_2_bytes (abfd, info_ptr)); + DW_UNSND (attr) = (cu->header.offset.sect_off + + read_2_bytes (abfd, info_ptr)); info_ptr += 2; break; case DW_FORM_ref4: - DW_ADDR (attr) = (cu->header.offset.sect_off - + read_4_bytes (abfd, info_ptr)); + DW_UNSND (attr) = (cu->header.offset.sect_off + + read_4_bytes (abfd, info_ptr)); info_ptr += 4; break; case DW_FORM_ref8: - DW_ADDR (attr) = (cu->header.offset.sect_off - + read_8_bytes (abfd, info_ptr)); + DW_UNSND (attr) = (cu->header.offset.sect_off + + read_8_bytes (abfd, info_ptr)); info_ptr += 8; break; case DW_FORM_ref_sig8: @@ -10344,8 +10345,8 @@ read_attribute_value (struct attribute * info_ptr += 8; break; case DW_FORM_ref_udata: - DW_ADDR (attr) = (cu->header.offset.sect_off - + read_unsigned_leb128 (abfd, info_ptr, &bytes_read)); + DW_UNSND (attr) = (cu->header.offset.sect_off + + read_unsigned_leb128 (abfd, info_ptr, &bytes_read)); info_ptr += bytes_read; break; case DW_FORM_indirect: @@ -13970,7 +13971,6 @@ dump_die_shallow (struct ui_file *f, int switch (die->attrs[i].form) { - case DW_FORM_ref_addr: case DW_FORM_addr: fprintf_unfiltered (f, "address: "); fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f); @@ -13986,11 +13986,17 @@ dump_die_shallow (struct ui_file *f, int fprintf_unfiltered (f, "expression: size %u", DW_BLOCK (&die->attrs[i])->size); break; + case DW_FORM_ref_addr: + fprintf_unfiltered (f, "ref address: "); + fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f); + break; case DW_FORM_ref1: case DW_FORM_ref2: case DW_FORM_ref4: + case DW_FORM_ref8: + case DW_FORM_ref_udata: fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)", - (long) (DW_ADDR (&die->attrs[i]))); + (long) (DW_UNSND (&die->attrs[i]))); break; case DW_FORM_data1: case DW_FORM_data2: @@ -14129,7 +14135,7 @@ is_ref_attr (struct attribute *attr) static sect_offset dwarf2_get_ref_die_offset (struct attribute *attr) { - sect_offset retval = { DW_ADDR (attr) }; + sect_offset retval = { DW_UNSND (attr) }; if (is_ref_attr (attr)) return retval;