From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Adhemerval Zanella Newsgroups: gmane.comp.lib.glibc.alpha Subject: [PATCH v2 08/21] nptl: aarch64: Fix Race conditions in pthread cancellation (BZ#12683) Date: Mon, 26 Feb 2018 18:03:23 -0300 Message-ID: <1519679016-12241-9-git-send-email-adhemerval.zanella@linaro.org> References: <1519679016-12241-1-git-send-email-adhemerval.zanella@linaro.org> NNTP-Posting-Host: blaine.gmane.org X-Trace: blaine.gmane.org 1519678987 27847 195.159.176.226 (26 Feb 2018 21:03:07 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 26 Feb 2018 21:03:07 +0000 (UTC) To: libc-alpha@sourceware.org Original-X-From: libc-alpha-return-90624-glibc-alpha=m.gmane.org@sourceware.org Mon Feb 26 22:03:03 2018 Return-path: Envelope-to: glibc-alpha@blaine.gmane.org 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:subject:date:message-id:in-reply-to :references; q=dns; s=default; b=JrUPCh6wz2/nTZAx2nSlu5zYJldo5ns GxfvDaXeWlLsHdtJc0JSqV863Glb+hjrF6bFxOYa76UIkyRl1MAUZJmvUXRWnB+s UIxjr10ODF90wwS4Tw83WyezXTQ2w+J4MxfIvk94fcFcIJiY8XPtVbI1x4pyODNW ByseUgpEsDw4= 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:subject:date:message-id:in-reply-to :references; s=default; bh=rSZ/EArDPWhdQrytvqpNDL96XB8=; b=Gr2AJ y4A8DUzWcxvMoGtjxv25MkoIgtfugK/CMVHLZ2hKmaKxzFe4uvvAJMBNVNGPOI4K hL+kFxmorfwYxGPqeViSgVytyyfoIZ3vb72sathUD/uJ7XyrhJC+27W/zvzLhkgj xPh0GkwYTPfYtR/wF+yIjrkBCabjG1CsBtdFZE= 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: , Original-Sender: libc-alpha-owner@sourceware.org Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.0 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-qt0-f193.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=rIKASI/xqygYPeVZN0MZuyA4i3E0zGIlkJOiUFa81Ow=; b=hDPEPeWiE+v06NYlGxKZg4I7YskWycJlEFNa0HWJo9gw2gYidC+k5BlkuI5PDd9aht x3L0prs1LsRJ9NISM2sDsw5G+Kk/dEmtSL2cWH/Dnvmqi6Uiiviw/0bOvh+a+Ni9TegG 27uuY4Ngpxuy7zbpUvgoRHNAEAxHDvlh28rwy9Wu17uJgBPPul+N9+UHTLKX5FFeXf5v z8KtODl2cqiMiCReVBVWXzpwG3IEArk1KiABNO6jUWxv4dcSWcNNdbc/7aXlKDCi24Ij zREiUilsrya2NQPfjkF5Tw23bFybkK1P2p2igVgjHQT5LKEivvxyHXej2DnjCtVFYNku rb9w== X-Gm-Message-State: APf1xPD9Ou0z0SVLtJnDfihJraqkxp2ADy/ZYgOqxrQ7Ghn3yBXrtw5Z NNofxb38czz/3MBxdt+5CsF63yQSQ2k= X-Google-Smtp-Source: AG47ELuEJbm96PVTIDV6HcV3d5H2jpriCK7zmAmEvEi+f5too6sHvroPc7yWQDeX/8FfqApTcMFb5g== X-Received: by 10.200.24.46 with SMTP id q43mr20235726qtj.309.1519679036167; Mon, 26 Feb 2018 13:03:56 -0800 (PST) In-Reply-To: <1519679016-12241-1-git-send-email-adhemerval.zanella@linaro.org> Xref: news.gmane.org gmane.comp.lib.glibc.alpha:82956 Archived-At: Received: from server1.sourceware.org ([209.132.180.131] helo=sourceware.org) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eqPvI-0006oR-So for glibc-alpha@blaine.gmane.org; Mon, 26 Feb 2018 22:03:01 +0100 Received: (qmail 75828 invoked by alias); 26 Feb 2018 21:04:00 -0000 Received: (qmail 75698 invoked by uid 89); 26 Feb 2018 21:03:59 -0000 This patch adds the aarch64 modifications required for the BZ#12683. It basically adds the required ucontext_get_pc function. The built cancelable syscall wrapper for aarch64 using GCC 7.2.1 and default configuration flags shows an expected optimized version: --- __GI___syscall_cancel_arch: .LFB38: .cfi_startproc .global __syscall_cancel_arch_start .type __syscall_cancel_arch_start,@function __syscall_cancel_arch_start: ldr w9, [x0] tbnz x9, 2, .L7 mov x8, x1 mov x0, x2 mov x1, x3 mov x2, x4 mov x3, x5 mov x4, x6 mov x5, x7 svc 0 // syscall nr .global __syscall_cancel_arch_end .type __syscall_cancel_arch_end,@function __syscall_cancel_arch_end: ret --- A similar code is obtained with GCC 5.3.1, so I see to need to provide an arch-specific syscall_cancel.S for aarch64. Checked on aarch64-linux-gnu. [BZ #12683] * sysdeps/unix/sysv/linux/aarch64/sysdep-cancel.h (PSEUDO): Redefine to call __syscall_cancel function for cancellable syscalls. (__pthread_get_ip): Add implementation. * sysdeps/unix/sysv/linux/aarch64/sysdep.h (SYSCALL_CANCEL_ERROR): Add definition. (SYSCALL_CANCEL_ERRNO): Likewise. --- ChangeLog | 4 ++++ sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h b/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h index 04596ef..d9822dc 100644 --- a/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h @@ -16,6 +16,9 @@ License along with the GNU C Library; if not, see . */ +#ifndef _SIGCONTEXTINFO_H +#define _SIGCONTEXTINFO_H + #include #include @@ -33,3 +36,11 @@ (act)->sa_flags |= SA_SIGINFO; \ (sigaction) (sig, act, oact); \ }) + +static inline uintptr_t +ucontext_get_pc (const ucontext_t *uc) +{ + return uc->uc_mcontext.pc; +} + +#endif -- 2.7.4