From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 88882 invoked by alias); 10 Jul 2019 04:04:35 -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 88869 invoked by uid 89); 10 Jul 2019 04:04:35 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-18.4 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_SHORT,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: simark.ca Received: from simark.ca (HELO simark.ca) (158.69.221.121) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 10 Jul 2019 04:04:33 +0000 Received: from [10.0.0.11] (unknown [192.222.164.54]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id 092A61E472; Wed, 10 Jul 2019 00:04:31 -0400 (EDT) Subject: Re: [PATCH 6/7] Arm: Use read_description funcs in gdbserver To: Alan Hayward , "gdb-patches@sourceware.org" Cc: nd References: <20190705094525.51536-1-alan.hayward@arm.com> <20190705094525.51536-7-alan.hayward@arm.com> From: Simon Marchi Message-ID: <3b3d8fc5-24ae-a8a5-08ff-c5a776929284@simark.ca> Date: Wed, 10 Jul 2019 04:04:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.2 MIME-Version: 1.0 In-Reply-To: <20190705094525.51536-7-alan.hayward@arm.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-SW-Source: 2019-07/txt/msg00237.txt.bz2 > diff --git a/gdb/gdbserver/linux-aarch32-tdesc.c b/gdb/gdbserver/linux-aarch32-tdesc.c > new file mode 100644 > index 0000000000..6f0e8c9aa9 > --- /dev/null > +++ b/gdb/gdbserver/linux-aarch32-tdesc.c > @@ -0,0 +1,46 @@ > +/* Copyright (C) 2019 Free Software Foundation, Inc. > + > + This file is part of GDB. > + > + This program is free software; you can redistribute it and/or modify > + it under the terms of the GNU General Public License as published by > + the Free Software Foundation; either version 3 of the License, or > + (at your option) any later version. > + > + This program is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + GNU General Public License for more details. > + > + You should have received a copy of the GNU General Public License > + along with this program. If not, see . */ > + > +#include "server.h" > +#include "tdesc.h" > +#include "arch/aarch32.h" > +#include > + > +struct target_desc *tdesc_aarch32; static > diff --git a/gdb/gdbserver/linux-arm-tdesc.c b/gdb/gdbserver/linux-arm-tdesc.c > new file mode 100644 > index 0000000000..fa54e48592 > --- /dev/null > +++ b/gdb/gdbserver/linux-arm-tdesc.c > @@ -0,0 +1,62 @@ > +/* Copyright (C) 2019 Free Software Foundation, Inc. > + > + This file is part of GDB. > + > + This program is free software; you can redistribute it and/or modify > + it under the terms of the GNU General Public License as published by > + the Free Software Foundation; either version 3 of the License, or > + (at your option) any later version. > + > + This program is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + GNU General Public License for more details. > + > + You should have received a copy of the GNU General Public License > + along with this program. If not, see . */ > + > +#include "server.h" > +#include "tdesc.h" > +#include "arch/arm.h" > +#include > + > +/* All possible Arm target descriptors. */ > +struct target_desc *tdesc_arm_list[ARM_FP_TYPE_INVALID]; static > + > +/* See linux-arm-tdesc.h. */ > + > +const target_desc * > +arm_linux_read_description (arm_fp_type fp_type) > +{ > + struct target_desc *tdesc = tdesc_arm_list[fp_type]; > + > + if (tdesc == nullptr) > + { > + tdesc = arm_create_target_description (fp_type); > + > + static const char *expedite_regs[] = { "r11", "sp", "pc", 0 }; > + init_target_desc (tdesc, expedite_regs); > + > + tdesc_arm_list[fp_type] = tdesc; > + } > + > + return tdesc; > +} > + > +/* See linux-arm-tdesc.h. */ > + > +arm_fp_type arm_linux_get_tdesc_fp_type (const target_desc *tdesc) Return type on its own line. > +{ > + if (tdesc == nullptr) > + return ARM_FP_TYPE_INVALID; Can this (tdesc == nullptr) actually happen? If you expect it's not possible, don't hesitate to use a gdb_assert instead. It helps catch bugs and acts as some kind of self-documentation of the allowed values. > + > + /* Many of the tdesc_arm_list entries may not have been initialised yet. This > + is ok, because tdesc must be one of the initialised ones. */ > + for (int i = ARM_FP_TYPE_VFPV2; i < ARM_FP_TYPE_INVALID; i++) Is it intended here that you skip ARM_FP_TYPE_NONE? Why? Simon