From patchwork Tue Feb 27 15:55:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Jeanson X-Patchwork-Id: 56736 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0EDC83858289 for ; Tue, 27 Feb 2024 15:56:15 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from smtpout.efficios.com (smtpout.efficios.com [IPv6:2607:5300:203:b2ee::31e5]) by sourceware.org (Postfix) with ESMTPS id 18EAD3858D20 for ; Tue, 27 Feb 2024 15:55:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 18EAD3858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=efficios.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=efficios.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 18EAD3858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:5300:203:b2ee::31e5 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1709049346; cv=none; b=VexIVF2lqLDQcqEVV8sq3MJyyLs+dp7P2dMh0NSnaBBQHJzEgagb/SUhzD7Nf/hRo/XtS4WfL/zymqgfyONLNLTnnX+aKBFx/0nOZYXpsLhDLnTdfZMcaSgJBkc8R+a+/wRl/XJwzQ8DwkXX7xCAKuzxs4CBj7CCheZE3kjuAAY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1709049346; c=relaxed/simple; bh=+/HWjS2bVYRmfZ4vlP95BE2E5LPZhdl1sX589Y1v2+E=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=JC3vhTwVZuiC+iTzwxnnDsUiIHZ3YIO/f2cEx/HpdKszj42hKnqsJ9Kh9i/WYn3O2aahzxMcqnIGlFhXFGcgN+Xf5EFnkf/k4hCdTFRRo5X9/Wf2BmRmhrVlDOBI3wiLLZkdc+AXaQNWVkjzWHxLDBQI03UPgcKNfqLRd0Wc5zM= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=efficios.com; s=smtpout1; t=1709049342; bh=+/HWjS2bVYRmfZ4vlP95BE2E5LPZhdl1sX589Y1v2+E=; h=From:To:Cc:Subject:Date:From; b=ZmKFCnCF9m9D6xtQ3j7t30NwU0DLwG3+M4BoWXrDfaLMFf7T6IYkIQMAc++XsOQwv 9DrQRRYJ4mkXC/RTjKisD5df0Z7UX4iVD6W+oo2glMnQSBs5RMR9jzlYb4ASNUC1SK bDGTTKONxwlkCZN4tZZLsi5yh8bAKL3Kc+eXA+o3mpQARrXeXjH2xYbTy530X6V5Wj kiuV9HK/STa6aMAuSaEMGw0PoXJrwzlAC+BaEDY6M+cBsYrI4Mlx95v1ornoKyXOrd lG88mYSwM1GjGr0h4g93F2NMy9/1bWTQeZS32Rt+gV1FiKBkxBOmW4qhuOVl8imrWX fHIaQloqDDH8g== Received: from laptop-mjeanson.internal.efficios.com (192-222-143-198.qc.cable.ebox.net [192.222.143.198]) by smtpout.efficios.com (Postfix) with ESMTPSA id 4TkhsV2rpZzdLW; Tue, 27 Feb 2024 10:55:42 -0500 (EST) From: Michael Jeanson To: libc-alpha@sourceware.org Cc: Michael Jeanson , Florian Weimer , Carlos O'Donell , DJ Delorie , Mathieu Desnoyers Subject: [PATCH 0/4] Extend rseq support Date: Tue, 27 Feb 2024 10:55:29 -0500 Message-Id: <20240227155533.298617-1-mjeanson@efficios.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Spam-Status: No, score=-6.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, SPF_HELO_NONE, 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 X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org This series rebases the standalone "Add rseq extensible ABI" patch on current master and addresses many review comments documented in each patch commit message. The accelerated getcpu() implementation using the rseq extensible ABI was split in a different patch series while we figure out the best way to interface with the librseq project as an upstream. Cc: Florian Weimer Cc: Carlos O'Donell Cc: DJ Delorie Cc: Mathieu Desnoyers --- Changes since v7: - Fix sorting of symbols in abilist files Changes since v9: - Address review comments - Split the accelerated getcpu() implementation in a separate patch set Michael Jeanson (4): nptl: fix potential merge of __rseq_* relro symbols Add rseq extensible ABI support nptl: Add public __rseq_feature_size symbol nptl: Add features to internal 'struct rseq_area' csu/Makefile | 2 +- csu/libc-tls.c | 84 +++++++++++++++++-- csu/rseq-sizes.sym | 11 +++ elf/Makefile | 1 + elf/dl-rseq-symbols.S | 72 ++++++++++++++++ elf/dl-tls.c | 78 +++++++++++++++++ elf/rtld_static_init.c | 12 +++ manual/threads.texi | 9 ++ nptl/descr.h | 20 +---- nptl/pthread_create.c | 2 +- sysdeps/generic/dl-rseq.h | 26 ++++++ sysdeps/generic/ldsodefs.h | 12 +++ sysdeps/i386/nptl/tcb-access.h | 56 +++++++++++++ sysdeps/nptl/dl-tls_init_tp.c | 22 +++-- sysdeps/nptl/tcb-access.h | 5 ++ sysdeps/unix/sysv/linux/Makefile | 10 +++ sysdeps/unix/sysv/linux/Versions | 3 + sysdeps/unix/sysv/linux/aarch64/ld.abilist | 1 + sysdeps/unix/sysv/linux/alpha/ld.abilist | 1 + sysdeps/unix/sysv/linux/arc/ld.abilist | 1 + sysdeps/unix/sysv/linux/arm/be/ld.abilist | 1 + sysdeps/unix/sysv/linux/arm/le/ld.abilist | 1 + sysdeps/unix/sysv/linux/csky/ld.abilist | 1 + sysdeps/unix/sysv/linux/dl-parse_auxv.h | 6 ++ sysdeps/unix/sysv/linux/hppa/ld.abilist | 1 + sysdeps/unix/sysv/linux/i386/ld.abilist | 1 + .../unix/sysv/linux/loongarch/lp64/ld.abilist | 1 + .../unix/sysv/linux/m68k/coldfire/ld.abilist | 1 + .../unix/sysv/linux/m68k/m680x0/ld.abilist | 1 + sysdeps/unix/sysv/linux/microblaze/ld.abilist | 1 + .../unix/sysv/linux/mips/mips32/ld.abilist | 1 + .../sysv/linux/mips/mips64/n32/ld.abilist | 1 + .../sysv/linux/mips/mips64/n64/ld.abilist | 1 + sysdeps/unix/sysv/linux/nios2/ld.abilist | 1 + sysdeps/unix/sysv/linux/or1k/ld.abilist | 1 + .../sysv/linux/powerpc/powerpc32/ld.abilist | 1 + .../linux/powerpc/powerpc64/be/ld.abilist | 1 + .../linux/powerpc/powerpc64/le/ld.abilist | 1 + sysdeps/unix/sysv/linux/riscv/rv32/ld.abilist | 1 + sysdeps/unix/sysv/linux/riscv/rv64/ld.abilist | 1 + sysdeps/unix/sysv/linux/rseq-internal.h | 33 +++++++- .../unix/sysv/linux/s390/s390-32/ld.abilist | 1 + .../unix/sysv/linux/s390/s390-64/ld.abilist | 1 + sysdeps/unix/sysv/linux/sched_getcpu.c | 3 +- sysdeps/unix/sysv/linux/sh/be/ld.abilist | 1 + sysdeps/unix/sysv/linux/sh/le/ld.abilist | 1 + .../unix/sysv/linux/sparc/sparc32/ld.abilist | 1 + .../unix/sysv/linux/sparc/sparc64/ld.abilist | 1 + sysdeps/unix/sysv/linux/sys/rseq.h | 4 + .../unix/sysv/linux/tst-rseq-disable-static.c | 1 + sysdeps/unix/sysv/linux/tst-rseq-disable.c | 18 ++-- .../unix/sysv/linux/tst-rseq-nptl-static.c | 1 + sysdeps/unix/sysv/linux/tst-rseq-static.c | 1 + sysdeps/unix/sysv/linux/tst-rseq.c | 24 +++++- sysdeps/unix/sysv/linux/tst-rseq.h | 9 +- sysdeps/unix/sysv/linux/x86_64/64/ld.abilist | 1 + sysdeps/unix/sysv/linux/x86_64/x32/ld.abilist | 1 + sysdeps/x86_64/nptl/tcb-access.h | 56 +++++++++++++ 58 files changed, 557 insertions(+), 54 deletions(-) create mode 100644 csu/rseq-sizes.sym create mode 100644 elf/dl-rseq-symbols.S create mode 100644 sysdeps/generic/dl-rseq.h create mode 100644 sysdeps/unix/sysv/linux/tst-rseq-disable-static.c create mode 100644 sysdeps/unix/sysv/linux/tst-rseq-nptl-static.c create mode 100644 sysdeps/unix/sysv/linux/tst-rseq-static.c