From patchwork Fri Dec 9 16:05:43 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yao Qi X-Patchwork-Id: 18326 Received: (qmail 53938 invoked by alias); 9 Dec 2016 16:06:12 -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 53915 invoked by uid 89); 9 Dec 2016 16:06:11 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=H*i:sk:1481287, H*MI:sk:1481287, H*f:sk:1481287 X-HELO: mail-wj0-f196.google.com Received: from mail-wj0-f196.google.com (HELO mail-wj0-f196.google.com) (209.85.210.196) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 09 Dec 2016 16:06:01 +0000 Received: by mail-wj0-f196.google.com with SMTP id kp2so3052780wjc.0 for ; Fri, 09 Dec 2016 08:06:01 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to:user-agent; bh=9GFr1b+RZeVFb85MfAy2BcyL2RxSq7lZX2axSmZ40bY=; b=g39+XTTCTWlWuMVt1BAeXQVCmuT0z6vH4UifE6l/g+R7vdK8k3+inMefBlLGrPWTlp I0sI0/rOAShs0fKuExhsl9719SC3IM6DCSVPNv9HdS2oTIFL8YIt/O8Tn6y43zJOPI6x MdHy647j0f2IPft23tyIYiqPIkt+EnppPuEdUpnNYp/yLQK3y50bb+JLLt5NOm5vfp2D 0WSaAw/kCPLWMgdk3olZv690sJizSdlPgR4Oij7UA/8Gx0MBdQTCiwdAAmsdfpgzBHBR uP3Z7ieHe3DBQh+3Rh+OUJAbBvny//LWm9S4HJBgKbsTxZNH7WtvBaKI6LLU0F4ZkJY+ eSYA== X-Gm-Message-State: AKaTC01Ve2Em0YHnXeKI+Dzp/YUVHSv7oO1Jrgpgk3Rj7Hteko5ZzHj+O08Xl+xI3aB0+Q== X-Received: by 10.194.113.2 with SMTP id iu2mr80557488wjb.32.1481299559433; Fri, 09 Dec 2016 08:05:59 -0800 (PST) Received: from E107787-LIN (gcc1-power7.osuosl.org. [140.211.15.137]) by smtp.gmail.com with ESMTPSA id v2sm43001892wja.41.2016.12.09.08.05.57 for (version=TLS1_2 cipher=AES128-SHA bits=128/128); Fri, 09 Dec 2016 08:05:58 -0800 (PST) Date: Fri, 9 Dec 2016 16:05:43 +0000 From: Yao Qi To: gdb-patches@sourceware.org Subject: Re: [PATCH mainline/7.12.1] Create tdep->rl78_psw_type lazily Message-ID: <20161209160543.GH13661@E107787-LIN> References: <1481287961-10631-1-git-send-email-yao.qi@linaro.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1481287961-10631-1-git-send-email-yao.qi@linaro.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes On 16-12-09 12:52:41, Yao Qi wrote: > gdb: > > 2016-12-09 Yao Qi > > PR tdep/20953 > * rl78-tdep.c (rl78_psw_type): New function. > (rl78_register_type): Call rl78_psw_type. > (rl78_gdbarch_init): Move code to rl78_psw_type. Patch is pushed into 7.12 branch. Patch is updated for gdb.base/all-architectures.exp.in, and pushed into master as below. diff --git a/gdb/rl78-tdep.c b/gdb/rl78-tdep.c index 95a26a5..0e88fbc 100644 --- a/gdb/rl78-tdep.c +++ b/gdb/rl78-tdep.c @@ -261,6 +261,30 @@ struct rl78_prologue int reg_offset[RL78_NUM_TOTAL_REGS]; }; +/* Construct type for PSW register. */ + +static struct type * +rl78_psw_type (struct gdbarch *gdbarch) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + if (tdep->rl78_psw_type == NULL) + { + tdep->rl78_psw_type = arch_flags_type (gdbarch, + "builtin_type_rl78_psw", 1); + append_flags_type_flag (tdep->rl78_psw_type, 0, "CY"); + append_flags_type_flag (tdep->rl78_psw_type, 1, "ISP0"); + append_flags_type_flag (tdep->rl78_psw_type, 2, "ISP1"); + append_flags_type_flag (tdep->rl78_psw_type, 3, "RBS0"); + append_flags_type_flag (tdep->rl78_psw_type, 4, "AC"); + append_flags_type_flag (tdep->rl78_psw_type, 5, "RBS1"); + append_flags_type_flag (tdep->rl78_psw_type, 6, "Z"); + append_flags_type_flag (tdep->rl78_psw_type, 7, "IE"); + } + + return tdep->rl78_psw_type; +} + /* Implement the "register_type" gdbarch method. */ static struct type * @@ -273,7 +297,7 @@ rl78_register_type (struct gdbarch *gdbarch, int reg_nr) else if (reg_nr == RL78_RAW_PC_REGNUM) return tdep->rl78_uint32; else if (reg_nr == RL78_PSW_REGNUM) - return (tdep->rl78_psw_type); + return rl78_psw_type (gdbarch); else if (reg_nr <= RL78_MEM_REGNUM || (RL78_X_REGNUM <= reg_nr && reg_nr <= RL78_H_REGNUM) || (RL78_BANK0_R0_REGNUM <= reg_nr @@ -1406,16 +1430,6 @@ rl78_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) tdep->rl78_code_pointer = arch_pointer_type (gdbarch, 32, "rl78_code_addr_t", tdep->rl78_void); - tdep->rl78_psw_type = arch_flags_type (gdbarch, "builtin_type_rl78_psw", 1); - append_flags_type_flag (tdep->rl78_psw_type, 0, "CY"); - append_flags_type_flag (tdep->rl78_psw_type, 1, "ISP0"); - append_flags_type_flag (tdep->rl78_psw_type, 2, "ISP1"); - append_flags_type_flag (tdep->rl78_psw_type, 3, "RBS0"); - append_flags_type_flag (tdep->rl78_psw_type, 4, "AC"); - append_flags_type_flag (tdep->rl78_psw_type, 5, "RBS1"); - append_flags_type_flag (tdep->rl78_psw_type, 6, "Z"); - append_flags_type_flag (tdep->rl78_psw_type, 7, "IE"); - /* Registers. */ set_gdbarch_num_regs (gdbarch, RL78_NUM_REGS); set_gdbarch_num_pseudo_regs (gdbarch, RL78_NUM_PSEUDO_REGS); diff --git a/gdb/testsuite/gdb.base/all-architectures.exp.in b/gdb/testsuite/gdb.base/all-architectures.exp.in index 4a8099c..94bee2e 100644 --- a/gdb/testsuite/gdb.base/all-architectures.exp.in +++ b/gdb/testsuite/gdb.base/all-architectures.exp.in @@ -209,12 +209,6 @@ with_test_prefix "tests" { continue } - if {$arch == "rl78"} { - if {$want_tests_messages} { - kfail "set architecture rl78" "gdb/20953" - } - continue - } if {$arch == "rx"} { if {$want_tests_messages} { kfail "set architecture rx" "gdb/20954"