From patchwork Thu Nov 23 16:08:25 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Hayward X-Patchwork-Id: 24473 Received: (qmail 125568 invoked by alias); 23 Nov 2017 16:08:32 -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 125559 invoked by uid 89); 23 Nov 2017 16:08:32 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LOTSOFHASH, KAM_SHORT, KB_WAM_FROM_NAME_SINGLEWORD, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=5013 X-HELO: EUR02-VE1-obe.outbound.protection.outlook.com Received: from mail-eopbgr20062.outbound.protection.outlook.com (HELO EUR02-VE1-obe.outbound.protection.outlook.com) (40.107.2.62) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 23 Nov 2017 16:08:29 +0000 Received: from AM3PR08MB0101.eurprd08.prod.outlook.com (10.160.211.19) by AM3PR08MB0103.eurprd08.prod.outlook.com (10.160.211.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.260.4; Thu, 23 Nov 2017 16:08:25 +0000 Received: from AM3PR08MB0101.eurprd08.prod.outlook.com ([fe80::48ab:82cd:a8b8:3a84]) by AM3PR08MB0101.eurprd08.prod.outlook.com ([fe80::48ab:82cd:a8b8:3a84%13]) with mapi id 15.20.0260.004; Thu, 23 Nov 2017 16:08:25 +0000 From: Alan Hayward To: Yao Qi CC: "gdb-patches@sourceware.org" , nd Subject: Re: [PATCH 2/4] gdbserver use aarch64_create_target_description Date: Thu, 23 Nov 2017 16:08:25 +0000 Message-ID: References: <48281E67-64B6-4558-9790-CB4189187124@arm.com> <86po94ygg5.fsf@gmail.com> <83AC8291-7A68-4FC3-B1B4-9CA45EAA4E4F@arm.com> <86efpbwuuj.fsf@gmail.com> <6B24A0B2-B91D-4AE0-AAA3-158325FBC649@arm.com> <864lpms5c3.fsf@gmail.com> In-Reply-To: <864lpms5c3.fsf@gmail.com> authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alan.Hayward@arm.com; x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM3PR08MB0103; 6:74AbMM9hiZAYGoYoa59rIilyQaH243eyD2kfk+wpNqBJjdyPVzIJmsrSPlewwV9GDLmsLWVGjNKsy8cUNcFkJO3cn3Bmtd0Y7kEz5tZaX4U6gBOtFHzfl4sAU/mNLa8/WcH3v6wKzP4WIfZnjwYhGSUo+7MByjC59hyp+sSNXzFnrEOIC5zVAjuluG5nljnyk+DVRfM5CmZNMphqlkdOqtFMtJR6N4KuE3fXw2I24WZTEcy6Oz3VMVGga1OJh+RSVEdBx4LtiLrSxO5+ZEaskct/NVfTOMIziWPKhFY+98sySZ/kPPNsCI29YrzujLntrS8asZVxSwxeaXdim+UaXbh9ei6XSISYeKfjJYc1YIg=; 5:ODbbwSHGTkhEKccYbF+of9ji5dQhAoQiCkkAawQuJHz9w2lPBE1egaTs4Oy4XSkGzg5wQiVMTGOhs/A7rzBBKLW89Gy/MBVRoByh5PooMEns00zLa2+CZAlZE7XtJWoymXvPyTD+okz1KDtzkFqql9jqNq88X78nWhrYE+CuHwI=; 24:OCecpr97gSscWw/5sQ9JGrh1AX3RXBk92L6EKc6lgxDNuoP6g9+jOC+NClH38EoWTpYJ9IoZWQUKe2mDA0NkNYKuTsHmCYPUDvyij/L/3d8=; 7:t8FOW1v4q8sTCCVJqJC7ORs85s9FU/rdLh272J+sCKOLcpEKtA2TnqrK5RX9wj5bCu/Ut2z+0zoZTRWMWUlGE6WqOzzv7BF4uo2Llkg0N54cSWQNTNnIgTWbcdNcUWEPqecBmykLcprNcIBxdgTzAaTfLKTZRk0P9J6ZkXmtIIKFGR0+rggb5p6KE2qvDZSWc/eTOfcbjilsGCF5qKILNl0OAdHFh826xX/LEEEwypblCLjatpJErBnfSVlOIdgc x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: f16df1bb-7168-40da-e903-08d5328c6d52 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600025)(4604075)(2017052603199); SRVR:AM3PR08MB0103; x-ms-traffictypediagnostic: AM3PR08MB0103: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(250305191791016)(158342451672863)(180628864354917)(22074186197030); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(10201501046)(3231022)(3002001)(100000703101)(100105400095)(93006095)(93001095)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123562025)(20161123558100)(20161123555025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AM3PR08MB0103; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AM3PR08MB0103; x-forefront-prvs: 05009853EF x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6009001)(366004)(376002)(39860400002)(346002)(24454002)(189002)(199003)(305945005)(54906003)(53546010)(14454004)(4326008)(2950100002)(1411001)(6916009)(39060400002)(6512007)(53936002)(189998001)(6306002)(5250100002)(3280700002)(93886005)(2906002)(8936002)(72206003)(7520500002)(2900100001)(36756003)(478600001)(81166006)(8676002)(81156014)(3660700001)(7736002)(99286004)(5660300001)(106356001)(575784001)(86362001)(101416001)(229853002)(66066001)(105586002)(3846002)(102836003)(6116002)(97736004)(82746002)(15760500003)(6246003)(68736007)(33656002)(83716003)(6486002)(76176999)(6436002)(25786009)(316002)(6506006)(54356999)(50986999)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM3PR08MB0103; H:AM3PR08MB0101.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-ID: <836E2362F7CCAF44B2C3CE46F8F75A71@eurprd08.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: f16df1bb-7168-40da-e903-08d5328c6d52 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Nov 2017 16:08:25.2503 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM3PR08MB0103 X-IsSubscribed: yes > On 22 Nov 2017, at 15:25, Yao Qi wrote: > > Alan Hayward writes: > > Patch is good to me. A nit below, > >> + srv_aarch64_linux_regobj="aarch64.o" >> else >> srv_i386_linux_regobj="" >> srv_amd64_linux_regobj="" >> + srv_aarch64_linux_regobj="" >> fi > > Can we avoid using a variable srv_aarch64_linux_regobj here? Instead, > does the condition check $development somewhere below.... > > We have these variables for x86 because these variables are used > multiple times. However, for aarch64, we don't have such uses. > >> >> ipa_ppc_linux_regobj="powerpc-32l-ipa.o powerpc-altivec32l-ipa.o powerpc-cell32l-ipa.o powerpc-vsx32l-ipa.o powerpc-isa205-32l-ipa.o powerpc-isa205-altivec32l-ipa.o powerpc-isa205-vsx32l-ipa.o powerpc-e500l-ipa.o powerpc-64l-ipa.o powerpc-altivec64l-ipa.o powerpc-cell64l-ipa.o powerpc-vsx64l-ipa.o powerpc-isa205-64l-ipa.o powerpc-isa205-altivec64l-ipa.o powerpc-isa205-vsx64l-ipa.o" >> @@ -50,13 +52,15 @@ srv_linux_obj="linux-low.o linux-osdata.o linux-procfs.o linux-ptrace.o linux-wa >> >> case "${target}" in >> aarch64*-*-linux*) >> - srv_regobj="aarch64.o" >> + srv_regobj="$srv_aarch64_linux_regobj" > > ... here, like this, > if $development; then > srv_regobj="aarch64.o" > else > srv_regobj="" > fi Ok. Changed as requested, and managed to leave out the else case too. diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv index 82c3dc237c3fb6baeb2a72cd9ed66d8c7556d72a..0136ec326c916b0f35e49bf1500876e4cb80ce1f 100644 --- a/gdb/gdbserver/configure.srv +++ b/gdb/gdbserver/configure.srv @@ -50,13 +50,17 @@ srv_linux_obj="linux-low.o linux-osdata.o linux-procfs.o linux-ptrace.o linux-wa case "${target}" in aarch64*-*-linux*) - srv_regobj="aarch64.o" - srv_regobj="${srv_regobj} arm-with-neon.o" + srv_regobj="arm-with-neon.o" + if $development; then + srv_regobj="${srv_regobj} aarch64.o" + fi srv_tgtobj="linux-aarch64-low.o aarch64-linux-hw-point.o" srv_tgtobj="$srv_tgtobj linux-aarch32-low.o" srv_tgtobj="${srv_tgtobj} arch/arm.o" srv_tgtobj="$srv_tgtobj aarch64-linux.o" srv_tgtobj="$srv_tgtobj arch/aarch64-insn.o" + srv_tgtobj="$srv_tgtobj arch/aarch64.o" + srv_tgtobj="$srv_tgtobj linux-aarch64-tdesc.o" srv_tgtobj="${srv_tgtobj} $srv_linux_obj" srv_xmlfiles="aarch64.xml" srv_xmlfiles="${srv_xmlfiles} aarch64-core.xml" @@ -65,7 +69,9 @@ case "${target}" in srv_xmlfiles="${srv_xmlfiles} arm/arm-with-neon.xml" srv_linux_regsets=yes srv_linux_thread_db=yes - ipa_obj="linux-aarch64-ipa.o aarch64-ipa.o" + ipa_obj="linux-aarch64-ipa.o" + ipa_obj="${ipa_obj} linux-aarch64-tdesc-ipa.o" + ipa_obj="${ipa_obj} arch/aarch64-ipa.o" ;; arm*-*-linux*) srv_regobj="reg-arm.o arm-with-iwmmxt.o" srv_regobj="${srv_regobj} arm-with-vfpv2.o" diff --git a/gdb/gdbserver/linux-aarch64-ipa.c b/gdb/gdbserver/linux-aarch64-ipa.c index ad1059029bb669f4fd6240d8ce8aef126879b6ff..28dc9776a1c8d273e8bc749296a57bc62b8619d5 100644 --- a/gdb/gdbserver/linux-aarch64-ipa.c +++ b/gdb/gdbserver/linux-aarch64-ipa.c @@ -25,10 +25,10 @@ #ifdef HAVE_GETAUXVAL #include #endif +#include "linux-aarch64-tdesc.h" /* Defined in auto-generated file aarch64.c. */ void init_registers_aarch64 (void); -extern const struct target_desc *tdesc_aarch64; /* Each register saved by the jump pad is in a 16 byte cell. */ #define FT_CR_SIZE 16 @@ -155,7 +155,7 @@ get_raw_reg (const unsigned char *raw_regs, int regnum) const struct target_desc * get_ipa_tdesc (int idx) { - return tdesc_aarch64; + return aarch64_linux_read_description (); } /* Allocate buffer for the jump pads. The branch instruction has a reach diff --git a/gdb/gdbserver/linux-aarch64-low.c b/gdb/gdbserver/linux-aarch64-low.c index b00d5c502d2be67daf0e7f48025647f191efef3b..dcce287974cb6afd2f530ce1257dbbf25ed25ddc 100644 --- a/gdb/gdbserver/linux-aarch64-low.c +++ b/gdb/gdbserver/linux-aarch64-low.c @@ -39,10 +39,10 @@ #include "gdb_proc_service.h" #include "arch/aarch64.h" +#include "linux-aarch64-tdesc.h" /* Defined in auto-generated files. */ void init_registers_aarch64 (void); -extern const struct target_desc *tdesc_aarch64; #ifdef HAVE_SYS_REG_H #include @@ -467,11 +467,10 @@ aarch64_linux_new_fork (struct process_info *parent, *child->priv->arch_private = *parent->priv->arch_private; } -/* Return the right target description according to the ELF file of - current thread. */ +/* Implementation of linux_target_ops method "arch_setup". */ -static const struct target_desc * -aarch64_linux_read_description (void) +static void +aarch64_arch_setup (void) { unsigned int machine; int is_elf64; @@ -482,17 +481,9 @@ aarch64_linux_read_description (void) is_elf64 = linux_pid_exe_is_elf_64_file (tid, &machine); if (is_elf64) - return tdesc_aarch64; + current_process ()->tdesc = aarch64_linux_read_description (); else - return tdesc_arm_with_neon; -} - -/* Implementation of linux_target_ops method "arch_setup". */ - -static void -aarch64_arch_setup (void) -{ - current_process ()->tdesc = aarch64_linux_read_description (); + current_process ()->tdesc = tdesc_arm_with_neon; aarch64_linux_get_debug_reg_capacity (lwpid_of (current_thread)); } diff --git a/gdb/gdbserver/linux-aarch64-tdesc.h b/gdb/gdbserver/linux-aarch64-tdesc.h new file mode 100644 index 0000000000000000000000000000000000000000..6d6731720c3b4123d16f179acc5087ffd2d9b454 --- /dev/null +++ b/gdb/gdbserver/linux-aarch64-tdesc.h @@ -0,0 +1,20 @@ +/* Low level support for aarch64, shared between gdbserver and IPA. + + Copyright (C) 2016-2017 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 . */ + +const target_desc * aarch64_linux_read_description (); diff --git a/gdb/gdbserver/linux-aarch64-tdesc.c b/gdb/gdbserver/linux-aarch64-tdesc.c new file mode 100644 index 0000000000000000000000000000000000000000..8518ef73389ce9d7bd526de75716bd21dbef7959 --- /dev/null +++ b/gdb/gdbserver/linux-aarch64-tdesc.c @@ -0,0 +1,37 @@ +/* GNU/Linux/aarch64 specific target description, for the remote server + for GDB. + Copyright (C) 2017 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/aarch64.h" +#include "linux-aarch32-low.h" + +/* Create the aarch64 target description. */ + +const target_desc * +aarch64_linux_read_description () +{ + static target_desc *aarch64_tdesc = NULL; + target_desc **tdesc = &aarch64_tdesc; + + if (*tdesc == NULL) + *tdesc = aarch64_create_target_description (); + + return *tdesc; +}