From patchwork Mon Mar 25 18:29:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Jeanson X-Patchwork-Id: 56820 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 1CFBC385842A for ; Mon, 25 Mar 2024 18:30:22 +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 78CDD3858401 for ; Mon, 25 Mar 2024 18:29:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 78CDD3858401 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 78CDD3858401 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=1711391385; cv=none; b=kURO7QeMEa4U538HhNfmWtWRp0zUdfolHMlEIX1qbiCHe1qs1z+HDM5WNpPLBMS0ZMrifzAQVV7a6kZAATHfcJC98d4SqgbCsJpbyYn9yzXNKSjBLumVkd2UJAOWQ1oY5cXJnD1njcqqptj/EI9eo4LsZEHI3L9AVM4izpXYP+M= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711391385; c=relaxed/simple; bh=yvOPH5Aj0Wb1HuA+/R3jouZ3Ygw7kDeXqouk+xd4gvQ=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=MvfYrZxUMWUXDJStyrHBiYoKzXsn70P/kSGvftPh5XK9zVO4WBBZuNC9P5U2asDttjEIx8U66YBpS5o7q+bQdQM/vINC20vLXqaDO9Fgil97pqJID+W7fi6sqTWWxnQDqeYaSwZH2VxVzatsgX6Vi+3qA0j0dMruLynUCVBRBCQ= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=efficios.com; s=smtpout1; t=1711391381; bh=yvOPH5Aj0Wb1HuA+/R3jouZ3Ygw7kDeXqouk+xd4gvQ=; h=From:To:Cc:Subject:Date:From; b=vFi2iYvTPc/FA9y+iMaZdOcH7XPoBr2ie9HmSmS0H2r9A4OOY1A5cWRagl55+J7Qb AQ8cgTbcgFYK0clFuHdjPgzMtkR3lxw30r5BGRE8WkRKI000X1uGMD/AJHrojVufne 4vYJx61tT27Zq0fI30ZsPsUkKJdq0tW/1RXbtLRRxa44LWxG+no4zT+UWxXp09Veec Qe5aYswkJ6mZFpd2k8Sc48PMaec32glcnVPJe+nbvA/Z2UawYQTekF88VV4D2A+Wwu aV65AjVxD6iM1G6hZ2TjqnxUHyiymcXwKaVls3tng1g+EaX3XvMMkxxaOp5xNbavDX 6lSUDPimmeufw== 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 4V3M0j5MLXzmvQ; Mon, 25 Mar 2024 14:29:41 -0400 (EDT) From: Michael Jeanson To: libc-alpha@sourceware.org Cc: Michael Jeanson , Florian Weimer , Carlos O'Donell , DJ Delorie , Mathieu Desnoyers Subject: [PATCH v10 0/4] Extend rseq support Date: Mon, 25 Mar 2024 14:29:23 -0400 Message-Id: <20240325182927.914830-1-mjeanson@efficios.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Spam-Status: No, score=-5.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, SPF_HELO_NONE, SPF_PASS, TXREP 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 v9: - Rebased on current master Changes since v8: - Address review comments - Split the accelerated getcpu() implementation in a separate patch set Changes since v7: - Fix sorting of symbols in abilist files 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