From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS31976 209.132.180.0/23 X-Spam-Status: No, score=-4.1 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id C65F220248 for ; Thu, 7 Mar 2019 02:02:18 +0000 (UTC) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id; q=dns; s= default; b=USVkhxUlS7D8NcGN84z+5cL84WCV+iOrOi+BAy57mRYKLeY44x3Zk gQUEceQekhySsxo3gJoeCvHe7EzPa23SBaUh4pJksjQbYRjNyKesNcHtmDYq7Vmx 56Y+i/YvHryRHIgihgqJQNvryZyacrEULeSbAXWihF9vz1os7zh7GE= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id; s=default; bh=uX6WZDyZM51wjHs1L9WHbLifrEM=; b=A06u780qr008Va6jK8FgDTrCukaa 1sCsNFEhgQS0IEw5a4JOiGFFdrwlwl34l4Fp4UYhWbmTuJBuIR1o10dhkDQc0axU IfhtqYn/ojtvinaUYABEN+3AA/qj8kiO5WG8aqA0W0NHfXewuwUe5kqa/8vWTBcA OdVB5FSvVZ1oJTM= Received: (qmail 21258 invoked by alias); 7 Mar 2019 02:02:16 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 21246 invoked by uid 89); 7 Mar 2019 02:02:15 -0000 Authentication-Results: sourceware.org; auth=none X-HELO: vmh-VirtualBox From: Mao Han To: libc-alpha@sourceware.org Cc: Mao Han Subject: [PATCH 1/4] C-SKY: fix sigcontext miss match Date: Thu, 7 Mar 2019 09:34:03 +0800 Message-Id: C-SKY defines SIGCONTEXT as siginfo_t *_si, struct ucontext_t * for __profil_counter. ucontext_t get an extra __mask field which is miss match with the struct sigcontext from linux kernel. The time value from gprof report will be always zero without this patch. This patch also fix the registers sequence in register-dump.h. * sysdeps/unix/sysv/linux/csky/register-dump.h: Adjust offset change. * sysdeps/unix/sysv/linux/csky/sys/ucontext.h: Remove __mask field in mcontext_t --- ChangeLog | 6 ++ sysdeps/unix/sysv/linux/csky/register-dump.h | 127 +++++++++++++-------------- sysdeps/unix/sysv/linux/csky/sys/ucontext.h | 1 - 3 files changed, 68 insertions(+), 66 deletions(-) diff --git a/ChangeLog b/ChangeLog index 53c5d2f..dba3547 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2019-02-15 Mao Han + + * sysdeps/unix/sysv/linux/csky/register-dump.h: Adjust offset change. + * sysdeps/unix/sysv/linux/csky/sys/ucontext.h: Remove __mask field + in mcontext_t + 2019-03-05 Adhemerval Zanella * nptl/nptl-init.c (__have_futex_clock_realtime, diff --git a/sysdeps/unix/sysv/linux/csky/register-dump.h b/sysdeps/unix/sysv/linux/csky/register-dump.h index 003d105..9496189 100644 --- a/sysdeps/unix/sysv/linux/csky/register-dump.h +++ b/sysdeps/unix/sysv/linux/csky/register-dump.h @@ -76,37 +76,36 @@ register_dump (int fd, const struct ucontext_t *ctx) hexvalue (ctx->uc_mcontext.__gregs.__pc, regs[1], 8); hexvalue (ctx->uc_mcontext.__gregs.__usp, regs[2], 8); hexvalue (ctx->uc_mcontext.__gregs.__lr, regs[3], 8); - hexvalue (ctx->uc_mcontext.__mask, regs[4], 8); - hexvalue (ctx->uc_mcontext.__gregs.__a0, regs[5], 8); - hexvalue (ctx->uc_mcontext.__gregs.__a1, regs[6], 8); - hexvalue (ctx->uc_mcontext.__gregs.__a2, regs[7], 8); - hexvalue (ctx->uc_mcontext.__gregs.__a3, regs[8], 8); - hexvalue (ctx->uc_mcontext.__gregs.__regs[0], regs[9], 8); - hexvalue (ctx->uc_mcontext.__gregs.__regs[1], regs[10], 8); - hexvalue (ctx->uc_mcontext.__gregs.__regs[2], regs[11], 8); - hexvalue (ctx->uc_mcontext.__gregs.__regs[3], regs[12], 8); - hexvalue (ctx->uc_mcontext.__gregs.__regs[4], regs[13], 8); - hexvalue (ctx->uc_mcontext.__gregs.__regs[5], regs[14], 8); - hexvalue (ctx->uc_mcontext.__gregs.__regs[6], regs[15], 8); - hexvalue (ctx->uc_mcontext.__gregs.__regs[7], regs[16], 8); - hexvalue (ctx->uc_mcontext.__gregs.__regs[8], regs[17], 8); - hexvalue (ctx->uc_mcontext.__gregs.__regs[9], regs[18], 8); - hexvalue (ctx->uc_mcontext.__gregs.__exregs[0], regs[19], 8); - hexvalue (ctx->uc_mcontext.__gregs.__exregs[1], regs[20], 8); - hexvalue (ctx->uc_mcontext.__gregs.__exregs[2], regs[21], 8); - hexvalue (ctx->uc_mcontext.__gregs.__exregs[3], regs[22], 8); - hexvalue (ctx->uc_mcontext.__gregs.__exregs[4], regs[23], 8); - hexvalue (ctx->uc_mcontext.__gregs.__exregs[5], regs[24], 8); - hexvalue (ctx->uc_mcontext.__gregs.__exregs[6], regs[25], 8); - hexvalue (ctx->uc_mcontext.__gregs.__exregs[7], regs[26], 8); - hexvalue (ctx->uc_mcontext.__gregs.__exregs[8], regs[27], 8); - hexvalue (ctx->uc_mcontext.__gregs.__exregs[9], regs[28], 8); - hexvalue (ctx->uc_mcontext.__gregs.__exregs[10], regs[29], 8); - hexvalue (ctx->uc_mcontext.__gregs.__exregs[11], regs[30], 8); - hexvalue (ctx->uc_mcontext.__gregs.__exregs[12], regs[31], 8); - hexvalue (ctx->uc_mcontext.__gregs.__exregs[13], regs[32], 8); - hexvalue (ctx->uc_mcontext.__gregs.__exregs[14], regs[33], 8); - hexvalue (ctx->uc_mcontext.__gregs.__tls, regs[34], 8); + hexvalue (ctx->uc_mcontext.__gregs.__a0, regs[4], 8); + hexvalue (ctx->uc_mcontext.__gregs.__a1, regs[5], 8); + hexvalue (ctx->uc_mcontext.__gregs.__a2, regs[6], 8); + hexvalue (ctx->uc_mcontext.__gregs.__a3, regs[7], 8); + hexvalue (ctx->uc_mcontext.__gregs.__regs[0], regs[8], 8); + hexvalue (ctx->uc_mcontext.__gregs.__regs[1], regs[9], 8); + hexvalue (ctx->uc_mcontext.__gregs.__regs[2], regs[10], 8); + hexvalue (ctx->uc_mcontext.__gregs.__regs[3], regs[11], 8); + hexvalue (ctx->uc_mcontext.__gregs.__regs[4], regs[12], 8); + hexvalue (ctx->uc_mcontext.__gregs.__regs[5], regs[13], 8); + hexvalue (ctx->uc_mcontext.__gregs.__regs[6], regs[14], 8); + hexvalue (ctx->uc_mcontext.__gregs.__regs[7], regs[15], 8); + hexvalue (ctx->uc_mcontext.__gregs.__regs[8], regs[16], 8); + hexvalue (ctx->uc_mcontext.__gregs.__regs[9], regs[17], 8); + hexvalue (ctx->uc_mcontext.__gregs.__exregs[0], regs[18], 8); + hexvalue (ctx->uc_mcontext.__gregs.__exregs[1], regs[19], 8); + hexvalue (ctx->uc_mcontext.__gregs.__exregs[2], regs[20], 8); + hexvalue (ctx->uc_mcontext.__gregs.__exregs[3], regs[21], 8); + hexvalue (ctx->uc_mcontext.__gregs.__exregs[4], regs[22], 8); + hexvalue (ctx->uc_mcontext.__gregs.__exregs[5], regs[23], 8); + hexvalue (ctx->uc_mcontext.__gregs.__exregs[6], regs[24], 8); + hexvalue (ctx->uc_mcontext.__gregs.__exregs[7], regs[25], 8); + hexvalue (ctx->uc_mcontext.__gregs.__exregs[8], regs[26], 8); + hexvalue (ctx->uc_mcontext.__gregs.__exregs[9], regs[27], 8); + hexvalue (ctx->uc_mcontext.__gregs.__exregs[10], regs[28], 8); + hexvalue (ctx->uc_mcontext.__gregs.__exregs[11], regs[29], 8); + hexvalue (ctx->uc_mcontext.__gregs.__exregs[12], regs[30], 8); + hexvalue (ctx->uc_mcontext.__gregs.__exregs[13], regs[31], 8); + hexvalue (ctx->uc_mcontext.__gregs.__exregs[14], regs[32], 8); + hexvalue (ctx->uc_mcontext.__gregs.__tls, regs[33], 8); /* Generate the output. */ ADD_STRING ("Register dump:\n\n PSR: "); @@ -117,72 +116,70 @@ register_dump (int fd, const struct ucontext_t *ctx) ADD_MEM (regs[2], 8); ADD_STRING (" LR: "); ADD_MEM (regs[3], 8); - ADD_STRING ("\n MASK: "); - ADD_MEM (regs[4], 8); ADD_STRING ("\n\n A0: "); - ADD_MEM (regs[5], 8); + ADD_MEM (regs[4], 8); ADD_STRING (" A1: "); - ADD_MEM (regs[6], 8); + ADD_MEM (regs[5], 8); ADD_STRING (" A2: "); - ADD_MEM (regs[7], 8); + ADD_MEM (regs[6], 8); ADD_STRING (" A3: "); - ADD_MEM (regs[8], 8); + ADD_MEM (regs[7], 8); ADD_STRING ("\n R4: "); + ADD_MEM (regs[8], 8); + ADD_STRING (" R5: "); ADD_MEM (regs[9], 8); - ADD_STRING (" r5: "); + ADD_STRING (" R6: "); ADD_MEM (regs[10], 8); - ADD_STRING (" r6: "); + ADD_STRING (" R7: "); ADD_MEM (regs[11], 8); - ADD_STRING (" r7: "); - ADD_MEM (regs[12], 8); ADD_STRING ("\n R8: "); - ADD_MEM (regs[13], 8); + ADD_MEM (regs[12], 8); ADD_STRING (" R9: "); - ADD_MEM (regs[14], 8); + ADD_MEM (regs[13], 8); ADD_STRING (" R10: "); - ADD_MEM (regs[15], 8); + ADD_MEM (regs[14], 8); ADD_STRING (" R11: "); - ADD_MEM (regs[16], 8); + ADD_MEM (regs[15], 8); ADD_STRING ("\n R12: "); - ADD_MEM (regs[17], 8); + ADD_MEM (regs[16], 8); ADD_STRING (" R13: "); - ADD_MEM (regs[18], 8); + ADD_MEM (regs[17], 8); ADD_STRING (" R14: "); - ADD_MEM (regs[19], 8); + ADD_MEM (regs[2], 8); ADD_STRING (" R15: "); - ADD_MEM (regs[20], 8); + ADD_MEM (regs[3], 8); ADD_STRING ("\n R16: "); - ADD_MEM (regs[21], 8); + ADD_MEM (regs[18], 8); ADD_STRING (" R17: "); - ADD_MEM (regs[22], 8); + ADD_MEM (regs[19], 8); ADD_STRING (" R18: "); - ADD_MEM (regs[23], 8); + ADD_MEM (regs[20], 8); ADD_STRING (" R19: "); - ADD_MEM (regs[24], 8); + ADD_MEM (regs[21], 8); ADD_STRING ("\n R20: "); - ADD_MEM (regs[25], 8); + ADD_MEM (regs[22], 8); ADD_STRING (" R21: "); - ADD_MEM (regs[26], 8); + ADD_MEM (regs[23], 8); ADD_STRING (" R22: "); - ADD_MEM (regs[27], 8); + ADD_MEM (regs[24], 8); ADD_STRING (" R23: "); - ADD_MEM (regs[28], 8); + ADD_MEM (regs[25], 8); ADD_STRING ("\n R24: "); - ADD_MEM (regs[29], 8); + ADD_MEM (regs[26], 8); ADD_STRING (" R25: "); - ADD_MEM (regs[30], 8); + ADD_MEM (regs[27], 8); ADD_STRING (" R26: "); - ADD_MEM (regs[31], 8); + ADD_MEM (regs[28], 8); ADD_STRING (" R27: "); - ADD_MEM (regs[32], 8); + ADD_MEM (regs[29], 8); ADD_STRING ("\n R28: "); - ADD_MEM (regs[33], 8); + ADD_MEM (regs[30], 8); ADD_STRING (" R29: "); - ADD_MEM (regs[34], 8); + ADD_MEM (regs[31], 8); ADD_STRING (" R30: "); + ADD_MEM (regs[32], 8); + ADD_STRING (" R31: "); ADD_MEM (regs[33], 8); - ADD_STRING (" TP: "); - ADD_MEM (regs[34], 8); ADD_STRING ("\n"); diff --git a/sysdeps/unix/sysv/linux/csky/sys/ucontext.h b/sysdeps/unix/sysv/linux/csky/sys/ucontext.h index b4b277a..5eac9e6 100644 --- a/sysdeps/unix/sysv/linux/csky/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/csky/sys/ucontext.h @@ -69,7 +69,6 @@ typedef struct /* Context to describe whole processor state. */ typedef struct { - unsigned long __mask; gregset_t __gregs; fpregset_t __fpregs; } mcontext_t; -- 2.7.4