From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 19657 invoked from network); 29 Mar 2022 11:44:59 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 29 Mar 2022 11:44:59 -0000 Received: (qmail 3979 invoked by uid 550); 29 Mar 2022 11:44:55 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 3945 invoked from network); 29 Mar 2022 11:44:54 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=profian-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=LJsN5K7TiXTx4/3x3fN3fyPLYBEqimP57RhPk3YWCDg=; b=KxxP8PIaM3x9UORMc+EGzO2q3u4bPRJiAt4DEUqB251cEzNE6LpRTV87lejDSYC8QE eodI5fp2kOWpyEHEYsqFUQgASuZsqIATsSvybrpaPBGzpnWAUS+PYbCBGT6Yda0xfnhs r8flOC4mIKmx5w7bar3AIDHfbi4YisukTCO7AcW9ouJIC/mGBqc09rsUuCOYU17LnNEs AVEYhAmy7fc8Mbl8OK59tNfhv8+AWRfzQqvLNUgWj719YLRY5n/ZzmoYqK4g+mT0sQWf WYfznf0HaOKJNTxiVM3WmHqno/4m5Eigd2EZstaZMqeusp55RXRwjAzTFdK4Hk2nJLX0 Y6VA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=LJsN5K7TiXTx4/3x3fN3fyPLYBEqimP57RhPk3YWCDg=; b=cJxERBVVVVzbsGEuWSVeBvQtfZQRWnn+AN+Gc61hq1pJ6TIxN95dPo0AtVXwmklCOw oTh2UMxBMhzAWjW7R9618Jp4ErxhQBZ09bwu52G/p/3wX8t1Ou8MjsaNqKnoi5uSyqh/ 6hA2/gzuE51Krf9NYbZM1mk/uz9O4UiZqlD7ZqeYro4RJZQeXwI6LXsFa12i01AYNBRb a0DQC4SFCUp7IpMT64qzeTy7bwM7AMZKGAQdL30PYVjuBOOW9NZryNZZTbR5nBtOozhr bbhu5F5lqlTDajANIJb34sMA6+c44E0zdZ3SFSzT8W6ajGtGWn8KbMdHvmFkZGvuCDdn wkzg== X-Gm-Message-State: AOAM53246vuf0ff3/Pxx0l0Of39nUUDWzqan4WRddtIYo+GQJ0E8VZw9 6VtAOMOPW9OVsRTO8vqjvXltscvzr0E6jdM0 X-Google-Smtp-Source: ABdhPJxsUfJ9SWkT5EzNMvca7XWcthr74WFV5FIFmuOln/xDzgp72YhqkgOOCYdS+guWeuxKZT25kw== X-Received: by 2002:a17:906:69c5:b0:6cf:d164:8b32 with SMTP id g5-20020a17090669c500b006cfd1648b32mr34200005ejs.233.1648554282727; Tue, 29 Mar 2022 04:44:42 -0700 (PDT) From: Harald Hoyer To: musl@lists.openwall.com Cc: Harald Hoyer Date: Tue, 29 Mar 2022 13:42:57 +0200 Message-Id: <20220329114257.914392-1-harald@profian.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [musl] [PATCH] feat(x86_64): use wrfsbase if AT_HWCAP2 allows usage If `AT_HWCAP2` has `HWCAP2_FSGSBASE` set, then instead of calling `arch_prctl()`, the `wrfsbase` instruction will be used. This is helpful in SGX contexts, where inside the enclave no other mechanism is possible. Tested against `libc-test`. Signed-off-by: Harald Hoyer --- ldso/dynlink.c | 1 + src/env/__libc_start_main.c | 1 + src/internal/libc.c | 1 + src/internal/libc.h | 1 + src/thread/x86_64/__set_thread_area.c | 14 ++++++++++++++ src/thread/x86_64/__set_thread_area.s | 11 ----------- 6 files changed, 18 insertions(+), 11 deletions(-) create mode 100644 src/thread/x86_64/__set_thread_area.c delete mode 100644 src/thread/x86_64/__set_thread_area.s diff --git a/ldso/dynlink.c b/ldso/dynlink.c index 5b9c8be4..2d38ec63 100644 --- a/ldso/dynlink.c +++ b/ldso/dynlink.c @@ -1710,6 +1710,7 @@ void __dls2b(size_t *sp, size_t *auxv) * use during dynamic linking. If possible it will also serve as the * thread pointer at runtime. */ search_vec(auxv, &__hwcap, AT_HWCAP); + search_vec(auxv, &__hwcap2, AT_HWCAP2); libc.auxv = auxv; libc.tls_size = sizeof builtin_tls; libc.tls_align = tls_align; diff --git a/src/env/__libc_start_main.c b/src/env/__libc_start_main.c index c5b277bd..38772bdb 100644 --- a/src/env/__libc_start_main.c +++ b/src/env/__libc_start_main.c @@ -28,6 +28,7 @@ void __init_libc(char **envp, char *pn) libc.auxv = auxv = (void *)(envp+i+1); for (i=0; auxv[i]; i+=2) if (auxv[i]