From patchwork Mon Jul 31 22:21:47 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yao Qi X-Patchwork-Id: 21829 Received: (qmail 7858 invoked by alias); 31 Jul 2017 22:22:08 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 7792 invoked by uid 89); 31 Jul 2017 22:22:07 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.4 required=5.0 tests=BAYES_00, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy=12868, H*r:sk:static. X-HELO: mail-io0-f193.google.com Received: from mail-io0-f193.google.com (HELO mail-io0-f193.google.com) (209.85.223.193) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 31 Jul 2017 22:22:06 +0000 Received: by mail-io0-f193.google.com with SMTP id c74so246518iod.4 for ; Mon, 31 Jul 2017 15:22:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=dkXwUxvbec3LD0syuSrN0hQKK+1/+Wk6mgkOAK/hOaA=; b=rQrKXxiNRugEFTz51spfRmAT3KiSV2znQd9OBXV+/WopD9DvrSGSe8JVNUUqhqm/8p HEm2ZTzVBdfNpTQRc3jcxySg3Ye2XtgcEYIo/mx+7nZ4tdHMpuO3i5TdPav8JUqyegjM 6vGbqdpHcbl+rBCFIxvRIG51r024/WI/zTMr9fqoF9frKifx0ID6oBubOXhT+rpEtotx qL8ql+Bj4r4mnP1N6VmurZjW0G30KxJiFeaW9WQATXMoRJz+ZTNYSuuA7HU/wH/0WGry pdI49cqPWvbx6BWAZsqW7kHK9eETob4i+CYnI9XvitD5yrnjt0bzzeFKVn4MkRYHBzMC 1xeA== X-Gm-Message-State: AIVw1126AOc66h3wwNfMS7eXLydqoEXVBqvL4lkJpfVY8MnJvmgRtVlt CCho8g8ILaU7xvsw X-Received: by 10.107.164.104 with SMTP id n101mr19958488ioe.42.1501539724416; Mon, 31 Jul 2017 15:22:04 -0700 (PDT) Received: from E107787-LIN.Home (static.42.136.251.148.clients.your-server.de. [148.251.136.42]) by smtp.gmail.com with ESMTPSA id s204sm5963117itd.34.2017.07.31.15.22.03 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 31 Jul 2017 15:22:04 -0700 (PDT) From: Yao Qi X-Google-Original-From: Yao Qi To: gdb-patches@sourceware.org Subject: [PATCH 1/9] Move dwarf2_frame_state_reg.exp_len to union .loc Date: Mon, 31 Jul 2017 23:21:47 +0100 Message-Id: <1501539715-8049-2-git-send-email-yao.qi@linaro.org> In-Reply-To: <1501539715-8049-1-git-send-email-yao.qi@linaro.org> References: <1501539715-8049-1-git-send-email-yao.qi@linaro.org> X-IsSubscribed: yes dwarf2_frame_state_reg.exp_len is only used together with .loc.exp, so it makes more sense to exp_len to the union as well. gdb: 2017-07-24 Yao Qi * dwarf2-frame.h (struct dwarf2_frame_state_reg) : Remove. : New field. * dwarf2-frame.c (execute_cfa_program): Update. (dwarf2_frame_prev_register): Update. --- gdb/dwarf2-frame.c | 16 ++++++++-------- gdb/dwarf2-frame.h | 7 +++++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c index d7f985b..191f60a 100644 --- a/gdb/dwarf2-frame.c +++ b/gdb/dwarf2-frame.c @@ -561,8 +561,8 @@ bad CFI data; mismatched DW_CFA_restore_state at %s"), reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p); dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1); insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp); - fs->regs.reg[reg].loc.exp = insn_ptr; - fs->regs.reg[reg].exp_len = utmp; + fs->regs.reg[reg].loc.exp.start = insn_ptr; + fs->regs.reg[reg].loc.exp.len = utmp; fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_EXP; insn_ptr += utmp; break; @@ -599,8 +599,8 @@ bad CFI data; mismatched DW_CFA_restore_state at %s"), insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, ®); dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1); insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp); - fs->regs.reg[reg].loc.exp = insn_ptr; - fs->regs.reg[reg].exp_len = utmp; + fs->regs.reg[reg].loc.exp.start = insn_ptr; + fs->regs.reg[reg].loc.exp.len = utmp; fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_VAL_EXP; insn_ptr += utmp; break; @@ -1286,8 +1286,8 @@ dwarf2_frame_prev_register (struct frame_info *this_frame, void **this_cache, return frame_unwind_got_register (this_frame, regnum, realnum); case DWARF2_FRAME_REG_SAVED_EXP: - addr = execute_stack_op (cache->reg[regnum].loc.exp, - cache->reg[regnum].exp_len, + addr = execute_stack_op (cache->reg[regnum].loc.exp.start, + cache->reg[regnum].loc.exp.len, cache->addr_size, cache->text_offset, this_frame, cache->cfa, 1); return frame_unwind_got_memory (this_frame, regnum, addr); @@ -1297,8 +1297,8 @@ dwarf2_frame_prev_register (struct frame_info *this_frame, void **this_cache, return frame_unwind_got_constant (this_frame, regnum, addr); case DWARF2_FRAME_REG_SAVED_VAL_EXP: - addr = execute_stack_op (cache->reg[regnum].loc.exp, - cache->reg[regnum].exp_len, + addr = execute_stack_op (cache->reg[regnum].loc.exp.start, + cache->reg[regnum].loc.exp.len, cache->addr_size, cache->text_offset, this_frame, cache->cfa, 1); return frame_unwind_got_constant (this_frame, regnum, addr); diff --git a/gdb/dwarf2-frame.h b/gdb/dwarf2-frame.h index 9e8668e..69a7a20 100644 --- a/gdb/dwarf2-frame.h +++ b/gdb/dwarf2-frame.h @@ -74,11 +74,14 @@ struct dwarf2_frame_state_reg union { LONGEST offset; ULONGEST reg; - const gdb_byte *exp; + struct + { + const gdb_byte *start; + ULONGEST len; + } exp; struct value *(*fn) (struct frame_info *this_frame, void **this_cache, int regnum); } loc; - ULONGEST exp_len; enum dwarf2_frame_reg_rule how; };