From patchwork Fri Mar 29 05:55:46 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tatsuyuki Ishi X-Patchwork-Id: 1917632 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=AcIccG+Y; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=libc-alpha-bounces+incoming=patchwork.ozlabs.org@sourceware.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4V5V5h20P7z1yXw for ; Fri, 29 Mar 2024 16:56:24 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 52E073858407 for ; Fri, 29 Mar 2024 05:56:22 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) by sourceware.org (Postfix) with ESMTPS id 6ABF43858D20 for ; Fri, 29 Mar 2024 05:56:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6ABF43858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6ABF43858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::1033 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711691766; cv=none; b=YNFAeIIgO59Xyj8Palp4Qw82Xo6PNyX4uKGQq5/gHegTTfFgPR4Me8iHuWHhCHO8UjRF/O8EsRyb2xI8nRi5sVgKmmdC/IqHOeVqKrD/fWoTX2TQrtnH1poc3Yathiin51rDtPFc3fSZ9YD+40kedQjqs33hcQmWuKHpQJNc5FQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711691766; c=relaxed/simple; bh=0Rt/SFvTT5YiZX2rzThFZzrAzBXkjZcNKmamytdew/c=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=mH34IskSeEtVhbi/GDnyRNhI7Cd79H62QFe+8RDv+htM7Oc8HduMKb1zybOaj3fjfrBGmsTYeoajiyj3WBRFtWWWtBO++xMYzzweSbrKsRTvecAOMve+kw3cbwKxGmLAWhQvIP/hLAAs3KllI3AtP4gD3lV2Ydqf1qNjojNelrw= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-29f66c9ffa5so346565a91.0 for ; Thu, 28 Mar 2024 22:56:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711691763; x=1712296563; darn=sourceware.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5c0DY7i6ZvyiGdlThcdFHTmQrNhMn3yb7QOPjZDi9d8=; b=AcIccG+Y7M+i6UQ5dKIlFTJgBRN/3E4bI1JI0HpOZ4Q3bgLeFjcDTvZDOBrt4hB+Ci j6FtLJ8UFHA2NkIKolnqc8OEotxFnTOK2RrEiSBLdhkXTMwdYj162oXLKnJF4CR4IKQr 4TuuWWb/7MNEH4mNjq6zqN8fhf4CNhXSyP2muKQ68Ad2KnsD0WCMO7vHPumMgO+M8mPu 8lzAf03qPC6ns7QcKTCW8I+6r3b1ZPxflV6uIHA/syS1s7dBH9SnOpnDHnQwRnM1V8kP a8k8Apj5kn3Uh3I6J/Iez3Yz/nUH2xubYUJVGkTobh+75hSFMMBTAhnPnEDOO5Y4gVHU 7FOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711691763; x=1712296563; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5c0DY7i6ZvyiGdlThcdFHTmQrNhMn3yb7QOPjZDi9d8=; b=QBnTRM5DOdBg7QuZGjhHFpPkG8RVSegS3RSjNOqQeK3UgIpETatc1hktyDpvPwpMkU D01EfVeCkDE1e4EHRUZWpzP4uBAatqmyhsEo/CAzvBKlZiK3CF4wdQOjv4iXRnLz84aJ 2Sb8FdMsG4ksanA4J9D/UT4o/T2iRzzdseJZ9IfjwPAL3dFSjGE9PPjsijmvfEoMZ4cG 8e4bGtVtVkbWQQnxJZydUS7NikzyiZtwXS2C/0IKXcqrkApJI4mNuCnAm+jwcvHlxsO8 051uk3rYjB9nsb5tERIxtPfv/xN4nVsFGN/Ko3aMjs0TjVtLG3CBmPbQ5aSZaHWh5eOH hBdQ== X-Gm-Message-State: AOJu0Ywz0+PqOIlDq9qXXMXx1LazGdIlHwotKptXWbkwA2vnILtzMiWX ZrwMacQaZZe4nAGhsx2mB5QNgE40PurJNpqnMQgNQkQNsy6GRXXt X-Google-Smtp-Source: AGHT+IFSN7BBuKl9AtNVpBevOuhGnOMayPsvwl3Ac7JCqjIxRNrbX5SR5490745Ocguq4dhQx510uQ== X-Received: by 2002:a17:90b:2786:b0:29b:ef73:44ff with SMTP id pw6-20020a17090b278600b0029bef7344ffmr1549102pjb.1.1711691762932; Thu, 28 Mar 2024 22:56:02 -0700 (PDT) Received: from localhost (zz20184013906F627101.userreverse.dion.ne.jp. [111.98.113.1]) by smtp.gmail.com with ESMTPSA id gj16-20020a17090b109000b0029aac9c523fsm2305687pjb.47.2024.03.28.22.56.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Mar 2024 22:56:02 -0700 (PDT) From: Tatsuyuki Ishi To: ishitatsuyuki@gmail.com Cc: libc-alpha@sourceware.org, rui314@gmail.com, ruiu@bluewhale.systems, schwab@linux-m68k.org, adhemerval.zanella@linaro.org, andrew@sifive.com, fweimer@redhat.com Subject: [PATCH v5 0/3] RISC-V: Implement TLS Descriptors. Date: Fri, 29 Mar 2024 14:55:46 +0900 Message-ID: <20240329055549.31940-1-ishitatsuyuki@gmail.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20230817181228.122674-2-ishitatsuyuki@gmail.com> References: <20230817181228.122674-2-ishitatsuyuki@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-5.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, 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+incoming=patchwork.ozlabs.org@sourceware.org This patchset implements TLS Descriptors (TLSDESC) for RISC-V targets, per the ratified specification at [1]. Partial support for TLSDESC is in binutils trunk. In [2] there is additional support for relaxation which is required to pass tst-tls1-static. GCC needs to be patched with [3]. Passes binutils and gcc tests for rv32gcv and rv64gcv. For glibc I only tested elf/ as other subsystems sometimes doesn't work well under qemu. This contribution is made on behalf of Blue Whale Systems, which has copyright assignment on file with the FSF. v2: Fix end-of-file newlines. v3: Fix segfaulting on the slow path of TLSDESC resolver. Fix handling of lazy relocations. v4: Fix compiler warnings. Fix fast path stack alignment pointed out by Andrew. Fix style issues pointed out by Adhemerval. Include 2 missing prerequisite commits. Update localplt list. v5: Add stubs for save/restore of vector registers. Add comments and reordered sections for readability in the TLSDESC assembly. Add clobber test sequence for tst-gnu2-tls2. [1]: https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/373 [2]: https://inbox.sourceware.org/binutils/20240220175556.304692-1-ishitatsuyuki@gmail.com/ [3]: https://inbox.sourceware.org/gcc-patches/20240329055239.29719-1-ishitatsuyuki@gmail.com/ Tatsuyuki Ishi (3): RISC-V: Add include guard for dl-tls.h. RISC-V: Add TLSDESC reloc definitions. RISC-V: Implement TLS Descriptors. elf/elf.h | 5 + sysdeps/riscv/Makefile | 10 + sysdeps/riscv/dl-lookupcfg.h | 27 ++ sysdeps/riscv/dl-machine.h | 50 +++- sysdeps/riscv/dl-tls.h | 4 + sysdeps/riscv/dl-tlsdesc.S | 269 ++++++++++++++++++++ sysdeps/riscv/dl-tlsdesc.h | 48 ++++ sysdeps/riscv/linkmap.h | 1 + sysdeps/riscv/preconfigure | 1 + sysdeps/riscv/tlsdesc.c | 38 +++ sysdeps/riscv/tlsdesc.sym | 19 ++ sysdeps/riscv/tst-gnu2-tls2.c | 33 +++ sysdeps/unix/sysv/linux/riscv/localplt.data | 2 + 13 files changed, 506 insertions(+), 1 deletion(-) create mode 100644 sysdeps/riscv/dl-lookupcfg.h create mode 100644 sysdeps/riscv/dl-tlsdesc.S create mode 100644 sysdeps/riscv/dl-tlsdesc.h create mode 100644 sysdeps/riscv/tlsdesc.c create mode 100644 sysdeps/riscv/tlsdesc.sym create mode 100644 sysdeps/riscv/tst-gnu2-tls2.c