From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 126632 invoked by alias); 23 Nov 2016 22:11:24 -0000 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 Received: (qmail 119360 invoked by uid 89); 23 Nov 2016 22:11:15 -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*RU:209.85.192.193, Hx-spam-relays-external:209.85.192.193, ixr, 9006 X-HELO: mail-pf0-f193.google.com Received: from mail-pf0-f193.google.com (HELO mail-pf0-f193.google.com) (209.85.192.193) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 23 Nov 2016 22:11:12 +0000 Received: by mail-pf0-f193.google.com with SMTP id c4so1038751pfb.3 for ; Wed, 23 Nov 2016 14:11:11 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ynpKpCTXGz6KDrpGo8m/MjCbsiO2s3mMTe2XK6qQ8QY=; b=KOvJIX2y/D6zgUoC+oBL+Fvf461ANh7W6vRSvS0CR8ZxtINjn1MMCQtRaXqkWXs6qW IKqi2lug6AxmbnwekYFxjNI6t1ATJBh6DzFwTIuTk7e2hDBJsP78w0j9+1FHnMwu6F1a tUXdKa41ZL6D4qM2YkVgJNSyd+bHrNFhj068Rr6ereJElKl/jv+39L4n0iVRHW66dyhD SXaK9VWZw6LRHc6Uo1LnoHFBrJkA1GmdVrZH7tag46NDuHD/nUCk5jm+4ScbdbV/SiMP LTtlGdtIUB1VWbxA7R98tucKkmdtBnXK7XrJyQ6k5zdMayAJ7P8/Y1GOIKel5rbsW3Sd IcUw== X-Gm-Message-State: AKaTC009Eo8Z63T2vsdpup6zHpgsv5su/VDhwhJvlZ6if9NstRF8x0Ot2gvKyzl1F71Rqw== X-Received: by 10.84.134.3 with SMTP id 3mr11212871plg.90.1479939070416; Wed, 23 Nov 2016 14:11:10 -0800 (PST) Received: from lianli.shorne-pla.net (z14.124-44-185.ppp.wakwak.ne.jp. [124.44.185.14]) by smtp.gmail.com with ESMTPSA id c15sm54981926pfd.36.2016.11.23.14.11.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 23 Nov 2016 14:11:09 -0800 (PST) Received: from lianli.shorne-pla.net (localhost [127.0.0.1]) by lianli.shorne-pla.net (8.15.2/8.15.2) with ESMTPS id uANMB7VK001435 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 24 Nov 2016 07:11:07 +0900 Received: (from shorne@localhost) by lianli.shorne-pla.net (8.15.2/8.15.2/Submit) id uANMB75A001434; Thu, 24 Nov 2016 07:11:07 +0900 From: Stafford Horne To: gdb-patches@sourceware.org Cc: openrisc@lists.librecores.org, Franck Jullien Subject: [PATCH 04/18] gdb: add tdesc_find_register functions Date: Wed, 23 Nov 2016 22:11:00 -0000 Message-Id: <1479939044-1341-5-git-send-email-shorne@gmail.com> In-Reply-To: <1479939044-1341-1-git-send-email-shorne@gmail.com> References: <1479939044-1341-1-git-send-email-shorne@gmail.com> X-IsSubscribed: yes X-SW-Source: 2016-11/txt/msg00699.txt.bz2 From: Franck Jullien In order to get registers names and groups from the target descriptor file, some new functions are needed. This patch adds: - tdesc_find_register_name: Search FEATURE for a register REGNO and return its name. - tdesc_find_register_group_name: Search FEATURE for a register REGNO and return its group name. gdb/ChangeLog: * target-descriptions.c: (tdesc_find_register_name) create (tdesc_find_register_group_name) create * target-descriptions.h: (tdesc_find_register_name) create (tdesc_find_register_group_name) create --- gdb/target-descriptions.c | 34 ++++++++++++++++++++++++++++++++++ gdb/target-descriptions.h | 12 ++++++++++++ 2 files changed, 46 insertions(+) diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c index 40f0478..18c39cd 100644 --- a/gdb/target-descriptions.c +++ b/gdb/target-descriptions.c @@ -900,6 +900,40 @@ tdesc_numbered_register (const struct tdesc_feature *feature, return 1; } +/* Search FEATURE for a register REGNO and return its name. */ +char * +tdesc_find_register_name (const struct tdesc_feature *feature, + int regno) +{ + int ixr; + struct tdesc_reg *reg; + + for (ixr = 0; + VEC_iterate (tdesc_reg_p, feature->registers, ixr, reg); + ixr++) + if (ixr == regno) + return reg->name; + + return NULL; +} + +/* Search FEATURE for a register REGNO and return its group name. */ +char * +tdesc_find_register_group_name (const struct tdesc_feature *feature, + int regno) +{ + int ixr; + struct tdesc_reg *reg; + + for (ixr = 0; + VEC_iterate (tdesc_reg_p, feature->registers, ixr, reg); + ixr++) + if (ixr == regno) + return reg->group; + + return NULL; +} + /* Search FEATURE for a register named NAME, but do not assign a fixed register number to it. */ diff --git a/gdb/target-descriptions.h b/gdb/target-descriptions.h index ef97d1d..0d8f03f 100644 --- a/gdb/target-descriptions.h +++ b/gdb/target-descriptions.h @@ -111,6 +111,18 @@ struct tdesc_arch_data *tdesc_data_alloc (void); void tdesc_data_cleanup (void *data_untyped); +/* Search FEATURE for a register REGNO and return its name. */ + +char *tdesc_find_register_name (const struct tdesc_feature *feature, + int regno); + + +/* Search FEATURE for a register REGNO and return its group name. */ + +char *tdesc_find_register_group_name (const struct tdesc_feature *feature, + int regno); + + /* Search FEATURE for a register named NAME. Record REGNO and the register in DATA; when tdesc_use_registers is called, REGNO will be assigned to the register. 1 is returned if the register was found, -- 2.7.4