From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by sourceware.org (Postfix) with ESMTP id 562FE3858D35; Tue, 9 May 2023 01:38:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 562FE3858D35 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=loongson.cn Received: from loongson.cn (unknown [192.168.100.1]) by gateway (Coremail) with SMTP id _____8Bx7eojpFlkE88GAA--.11509S3; Tue, 09 May 2023 09:38:43 +0800 (CST) Received: from [0.0.0.0] (unknown [192.168.100.1]) by localhost.localdomain (Coremail) with SMTP id AQAAf8Dxn7MipFlkIQFSAA--.16633S3; Tue, 09 May 2023 09:38:43 +0800 (CST) Subject: Re: [PATCH 2/5] backends: Add set_initial_registers_tid callback for LoongArch To: Mark Wielaard References: <1680836368-5373-1-git-send-email-tangyouling@loongson.cn> <1680836368-5373-3-git-send-email-tangyouling@loongson.cn> <20230508195744.GE11475@gnu.wildebeest.org> Cc: elfutils-devel@sourceware.org, Mark@sourceware.org, Wielaard@sourceware.org, Hengqi Chen , Liwei Ge From: Youling Tang Message-ID: <996e8d86-c477-a566-1fb9-3d2acc1b9537@loongson.cn> Date: Tue, 9 May 2023 09:38:42 +0800 User-Agent: Mozilla/5.0 (X11; Linux mips64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-CM-TRANSID:AQAAf8Dxn7MipFlkIQFSAA--.16633S3 X-CM-SenderInfo: 5wdqw5prxox03j6o00pqjv00gofq/ X-Coremail-Antispam: 1Uk129KBjvJXoW7WF4rXr1DZr18Aw43Zr4kCrg_yoW8Wr15pF WFkF93tF4rCrsrKF4UXw1av34akr95Ja4093W5KryfArn8u39agFyUKryjyFn3Cw47CF4I vF1vqay5XFn8AFDanT9S1TB71UUUUUDqnTZGkaVYY2UrUUUUj1kv1TuYvTs0mT0YCTnIWj qI5I8CrVACY4xI64kE6c02F40Ex7xfYxn0WfASr-VFAUDa7-sFnT9fnUUIcSsGvfJTRUUU baAYFVCjjxCrM7AC8VAFwI0_Jr0_Gr1l1xkIjI8I6I8E6xAIw20EY4v20xvaj40_Wr0E3s 1l1IIY67AEw4v_Jrv_JF1l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xv wVC0I7IYx2IY67AKxVW7JVWDJwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVWxJVW8Jr1l84 ACjcxK6I8E87Iv67AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVCY1x0267AKxVW8Jr0_Cr1U M2AIxVAIcxkEcVAq07x20xvEncxIr21l57IF6xkI12xvs2x26I8E6xACxx1l5I8CrVACY4 xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r126r1DMcIj6I8E87Iv67AKxVW8JVWx JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IY64vIr41lc7I2V7IY0VAS07AlzVAYIcxG8w CF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwCFI7km07C267AKxVWUAVWU twC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1V AFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xII jxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4 A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI 43ZEXa7IU8P5r7UUUUU== X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,KAM_DMARC_STATUS,NICE_REPLY_A,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 05/09/2023 09:32 AM, Youling Tang wrote: > Hi, Mark > > On 05/09/2023 03:57 AM, Mark Wielaard wrote: >> Him >> >> On Fri, Apr 07, 2023 at 10:59:25AM +0800, Youling Tang wrote: >>> This patch implements the set_initial_registers_tid hook for LoongArch. >> >> Looks good, but one question: >> >>> + /* Floating-point registers (only 64bits are used). */ >>> + struct user_fp_struct fregs; >>> + iovec.iov_base = &fregs; >>> + iovec.iov_len = sizeof (fregs); >>> + if (ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET, &iovec) != 0) >>> + return false; >>> + >>> + Dwarf_Word dwarf_fregs[32]; >>> + for (int r = 0; r < 32; r++) >>> + dwarf_fregs[r] = fregs.fpr[r] & 0xFFFFFFFF; >> >> The comment says 64bits, but the mask is for 32bits. >> I assume the comment is wrong and the masking is deliberate? > > Thanks for pointing out that there is no need to mask the lower 32 bits > here. > > It can be modified as follows, > --- a/backends/loongarch_initreg.c > +++ b/backends/loongarch_initreg.c > @@ -79,11 +79,8 @@ loongarch_set_initial_registers_tid (pid_t tid > __attribute__ ((unused)), > if (ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET, &iovec) != 0) > return false; > > - Dwarf_Word dwarf_fregs[32]; > - for (int r = 0; r < 32; r++) > - dwarf_fregs[r] = fregs.fpr[r] & 0xFFFFFFFF; > - > - if (! setfunc (32, 32, dwarf_fregs, arg)) > + /* $f0-$f31 */ > + if (! setfunc (32, 32, &fregs.fpr[0], arg)) Need to add `(Dwarf_Word *)`, if (! setfunc (32, 32, (Dwarf_Word *) &fregs. fpr[0], arg)) > > Do I need to send the v2 patchset again? > > Thanks, > Youling. > >> >> Cheers, >> >> Mark >>