From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1791) id 3CB8238582A3; Thu, 9 Feb 2023 19:54:09 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3CB8238582A3 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1675972449; bh=HBqZZplwhY5KFLh/zBzdaWIw2gJ7Qtc2kkSZr4Pi89I=; h=From:To:Subject:Date:From; b=g+oGehQ+DSfCRTJVlKl1XMWKFfujU0n3ytnOlph6AxsXiBUIK5U7YjFOw/kln52uo spDC6IoEPNJUJz8vAznxeD+A6948n2LieNSQpToRnolHT2/yynaGyN6QK6XIQzBW91 WjoiXw3M/HSuDjonf3ujOWGEPnqxPM2/96YXEa28= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Adhemerval Zanella To: glibc-cvs@sourceware.org Subject: [glibc/azanella/clang] elf: Use volatile to set __rseq_size and __rseq_offset X-Act-Checkin: glibc X-Git-Author: Adhemerval Zanella X-Git-Refname: refs/heads/azanella/clang X-Git-Oldrev: dfbf8a4c59ca2e8f66ca777c55882a78b36a343d X-Git-Newrev: 9b5a101aae11fc4d6b4f6fd1cc6d6228486a25e6 Message-Id: <20230209195409.3CB8238582A3@sourceware.org> Date: Thu, 9 Feb 2023 19:54:09 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9b5a101aae11fc4d6b4f6fd1cc6d6228486a25e6 commit 9b5a101aae11fc4d6b4f6fd1cc6d6228486a25e6 Author: Adhemerval Zanella Date: Sun Apr 3 11:23:20 2022 -0300 elf: Use volatile to set __rseq_size and __rseq_offset To avoid compiler to optimize them away. Diff: --- sysdeps/nptl/dl-tls_init_tp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sysdeps/nptl/dl-tls_init_tp.c b/sysdeps/nptl/dl-tls_init_tp.c index 0db0349c4b..05856095a9 100644 --- a/sysdeps/nptl/dl-tls_init_tp.c +++ b/sysdeps/nptl/dl-tls_init_tp.c @@ -109,7 +109,7 @@ __tls_init_tp (void) { /* We need a writable view of the variables. They are in .data.relro and are not yet write-protected. */ - extern unsigned int size __asm__ ("__rseq_size"); + extern volatile unsigned int size __asm__ ("__rseq_size"); size = sizeof (pd->rseq_area); } @@ -119,7 +119,7 @@ __tls_init_tp (void) all targets support __thread_pointer, so set __rseq_offset only if thre rseq registration may have happened because RSEQ_SIG is defined. */ - extern ptrdiff_t offset __asm__ ("__rseq_offset"); + extern volatile ptrdiff_t offset __asm__ ("__rseq_offset"); offset = (char *) &pd->rseq_area - (char *) __thread_pointer (); #endif }