From patchwork Sun Dec 22 00:04:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 852885 Delivered-To: patch@linaro.org Received: by 2002:a5d:4888:0:b0:385:e875:8a9e with SMTP id g8csp2769072wrq; Sat, 21 Dec 2024 16:12:36 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCUnYIpwz0MQSybkutatF5A6YO/oa/3M6MonDt6YhcF5HWkZNnaro1BAcc72/0oM0ewc/pxGNA==@linaro.org X-Google-Smtp-Source: AGHT+IE4GXmwDuqTaT8/wKbutzFi6mZtAFBkvI2w+LkFCrvV5FH80HxfSpYiHN7zkhOY8IHN/qD+ X-Received: by 2002:a05:6214:5290:b0:6d8:7e03:c427 with SMTP id 6a1803df08f44-6dd23346a54mr115554076d6.20.1734826356501; Sat, 21 Dec 2024 16:12:36 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1734826356; cv=pass; d=google.com; s=arc-20240605; b=AFr1TjjI+iSgOsWgNP++VvRO7eAUZToyyvQpidruf+n5s5aeLV+Dhc1uhQGln+4YRW XmTA8zZARmg8TSnQDr9htzD3MLzmCvXeu5V83ABL7S9wEYjvR+tLHqvqAAFFHMJCacey ZY9/rKIBJEKVoxsMZVTaZyejYjizJgEzN9MqbTDozn5wVrspzckKsxST4lOVBIkc8X1l WNUgzIv4IIxMSxCxKIR+3R+hUMo3rIo4vLSM1CA3Kx4dpy7tvNkxmGHHgmWhI743w9TP SuoBpGv2jaYUBZjD02+czGtVPYSnZXytxFjGI12M1/pIY2YjnFSroeFxhHCO/BLWgqFU TVPw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature:dkim-filter:arc-filter:dmarc-filter :delivered-to; bh=YypKVYxR33xhOJkkK2Xt5McNfyvI35NBxMLqxAFPywg=; fh=uKlFkH9AUukvL1xmvBA9M7Oe4ntiJIR8HCR4+3TPd4w=; b=SPbSQPVpyYk5J79cZloR4h5Ax9bRVbOFoVj5UMWPZPbR0LVmYeUeyz9ZFneiwcZQSm X4dLCzjF2tkxYJjCI5qv+k2o0R1Wwav01UE/YpxnHBLDHCq16yjIJ6OkFRJZhdv3GOi2 a00qXD9oEc7NVZ/3rhQhD86V8P2PE/AwncnbJ8CQinw+lBBXpnMlN85RlYOD/xmu3v+U iiirvMGjlOXGwJlEQrhIaF1KgUkzHuaY2yJzJoXau2x8d/G+bAxtvQqwC5trCK/QZRMu toxR84M43Ttxu+zQDuwv6UgbUtjjQGnDfSENt/d0/lXwPDhCwzNAHDDnmapslHBe6jih qS+Q==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=RFj7gJ7n; arc=pass (i=1); spf=pass (google.com: domain of libc-alpha-bounces~patch=linaro.org@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="libc-alpha-bounces~patch=linaro.org@sourceware.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id 6a1803df08f44-6dd182363aesi82834856d6.242.2024.12.21.16.12.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Dec 2024 16:12:36 -0800 (PST) Received-SPF: pass (google.com: domain of libc-alpha-bounces~patch=linaro.org@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=RFj7gJ7n; arc=pass (i=1); spf=pass (google.com: domain of libc-alpha-bounces~patch=linaro.org@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="libc-alpha-bounces~patch=linaro.org@sourceware.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E902B3858428 for ; Sun, 22 Dec 2024 00:12:35 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) by sourceware.org (Postfix) with ESMTPS id 8DC883857C5D for ; Sun, 22 Dec 2024 00:05:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8DC883857C5D 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 8DC883857C5D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::630 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1734825930; cv=none; b=ANIgjr2icWeDoNRQUL1xnALnBPNLGWOT0jyVy4tXfaVGrPwbSpLFd60MPSOfr+bzRLCQXzNMm7LLeLlM+hnnb2nD/M46/HnZaiViCEMC3+umHcxpfV7MyBMMa05QPip/znz5gWk0k8zy1CWZ7nPLIo0uyhxeztXH9Mi6DO7w+hQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1734825930; c=relaxed/simple; bh=kV85X6av+NUQvMW3fBpb0c6pXlm0uoHkx/ANp6kJMsA=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=CEh1CwI2feW4m+cdGjitO1JXARoIdudSHERKZ9W3eBEPh7eu787M3svdIqOEXtj8OlCVD8a+ZSOerEhO2H2IVCw+RjDjORZo5j80kDjmm4PwcA9N85Uh/qXHgZZaI7pKH+QDIyiQYpMEE+Ccm3bvMlQ+QVBlJSfNY3PHlGy5PqU= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8DC883857C5D Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=RFj7gJ7n Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2164b662090so25804945ad.1 for ; Sat, 21 Dec 2024 16:05:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1734825924; x=1735430724; 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=YypKVYxR33xhOJkkK2Xt5McNfyvI35NBxMLqxAFPywg=; b=RFj7gJ7neUA/Rnli6SXliAWBaXvZ/KHMa+4B5dmFUbzBfl+b9qdk1+ky5U1+rMGo2I MhMaf3IS3fYH/0jhD906a3CBQ574/FNFKAH7W0fY6OFGcWMrESN26aNLAYpOyFF3wsWM XAPcGgUe9SEQuVi0pSuaWu25Uean1QT5o8AjoogNZrEaB7ChCx+ku/5yvwVBY4hIbY4+ 3JScoWlnn7Qy8UoDIjaX4FLXmisiWxbhC0HHi5X019Q0avCCQV+XzpfxNzhOCYEnrI5M 0Bsi1MgsFP/JXnj1Z8dtQMOCFZM/vaMnI9GnwM6lET4BnpDa4lN0M300qNSFzorI1/d9 y9/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734825924; x=1735430724; 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=YypKVYxR33xhOJkkK2Xt5McNfyvI35NBxMLqxAFPywg=; b=P0RWg6U+8QVon4xlIoqBSthT6QyARcONPIEzMqjRRkLusOEmiNH0RNqPI7YgC6xBVQ ijiHbKgx4ERuosfr9WoHZcsLjx0qbc1vlDuF3ZSf5kqJvvw9wj3oYvJZm/e7tnFWGQR3 OHO6dVmKIrO8oW4HJEyEYbbaY9ZTIbrQMlOJnyUHzo/iBJMzJu9TvNo2gxchJhOBRo5j IMdEI9X34NNHnJefYmjfkf6jhgwE1xiNvtgy/GHZjUNWdWlrJ/UCFezJ18IFgbMzbLNX hzma7AkESfhnpv78Qx97rM8fPXSYCYIoSmtW+j29LM3DXRnmWfRFPdALPbFqok4xmr21 S4GA== X-Gm-Message-State: AOJu0Yy+OzAtPdwyuZnSQ0DO9Agu20ppvUKzpMTYD9Tzch4sgN4Z/XlE RLjm9ZFjOhEa4hjIlFRLDDC53CVlCBX0+ddp8MF9mjoQ6OUlW/0Bm5d7TsS5OgA1wg== X-Gm-Gg: ASbGncvvRteq3Gg1CpE9S0pgdh9H68k9K6QwsYxbJgDtUjJp34vkhznCwmQSXDu97lw Z9aZAAWPQDIgULoW66nBaxgu13qmwJtakflH9EoulEEUhO2xR61arIcDpM2hj39w5N1XCKxINc9 uOc+DcHo97KY0lu4eUUDt8KMamZrucEBudOYZ14phwigorZKFArURQL0kPfQDaOKE/QzgvkGfpV QGyXpCG2F4OAGnonDk2BDLN9oGy4LsCuiS+kmgW6EJHRU3ouc5NMwsNEDLXabzMwexCa/A= X-Received: by 2002:a17:903:2341:b0:215:9ea1:e95e with SMTP id d9443c01a7336-219e6ea1c17mr124000465ad.13.1734825923684; Sat, 21 Dec 2024 16:05:23 -0800 (PST) Received: from gnu-tgl-3.localdomain ([120.204.185.181]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-219dc9cde66sm49082855ad.145.2024.12.21.16.05.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Dec 2024 16:05:22 -0800 (PST) Received: from gnu-tgl-3.lan (localhost [IPv6:::1]) by gnu-tgl-3.localdomain (Postfix) with ESMTP id E26B3C07AD; Sun, 22 Dec 2024 08:05:14 +0800 (CST) From: "H.J. Lu" To: libc-alpha@sourceware.org Cc: sam@gentoo.org, Adhemerval Zanella Subject: [PATCH 17/39] And defines to __attribute__ (__noclone__) iff compiler supports it. Date: Sun, 22 Dec 2024 08:04:40 +0800 Message-ID: <20241222000509.2205895-18-hjl.tools@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241222000509.2205895-1-hjl.tools@gmail.com> References: <20241222000509.2205895-1-hjl.tools@gmail.com> MIME-Version: 1.0 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~patch=linaro.org@sourceware.org From: Adhemerval Zanella Signed-off-by: H.J. Lu Reviewed-by: Sam James --- benchtests/bench-hash-funcs-kernel.h | 4 ++-- benchtests/bench-hash-funcs.c | 2 +- benchtests/bench-strchr.c | 4 ++-- debug/tst-backtrace.h | 2 +- debug/tst-ssp-1.c | 2 +- elf/tst-p_alignmod-base.c | 2 +- gmon/tst-gmon.c | 8 +++++--- gmon/tst-mcount-overflow.c | 10 ++++++---- malloc/tst-malloc-thread-exit.c | 2 +- malloc/tst-malloc-thread-fail.c | 2 +- malloc/tst-mallocstate.c | 2 +- misc/sys/cdefs.h | 7 +++++++ misc/tst-syscalls.c | 14 ++++++------- nptl/tst-minstack-throw.cc | 8 ++++---- nptl/tst-thread-exit-clobber.cc | 12 +++++------ nptl/tst-thread_local1.cc | 12 +++++------ stdlib/tst-makecontext-align.c | 20 +++++++++---------- stdlib/tst-quick_exit.cc | 2 +- stdlib/tst-setcontext10.c | 6 +++--- stdlib/tst-setcontext11.c | 2 +- stdlib/tst-setcontext5.c | 4 ++-- stdlib/tst-setcontext8.c | 2 +- stdlib/tst-setcontext9.c | 2 +- stdlib/tst-swapcontext1.c | 8 ++++---- stdlib/tst-swapcontext2.c | 8 ++++---- stdlib/tst-thread-quick_exit.cc | 2 +- string/tst-xbzero-opt.c | 3 ++- sysdeps/generic/tst-stack-align.h | 2 +- .../sysv/linux/x86_64/tst-cet-property-2.c | 2 +- .../sysv/linux/x86_64/tst-cet-setcontext-1.c | 2 +- .../unix/sysv/linux/x86_64/tst-cet-vfork-1.c | 2 +- .../sysv/linux/x86_64/tst-gnu2-tls2-amx.c | 2 +- sysdeps/x86/tst-ldbl-nonnormal-printf.c | 2 +- sysdeps/x86/tst-memchr-rtm.c | 4 ++-- sysdeps/x86/tst-memcmp-rtm.c | 4 ++-- sysdeps/x86/tst-memmove-rtm.c | 4 ++-- sysdeps/x86/tst-memrchr-rtm.c | 4 ++-- sysdeps/x86/tst-memset-rtm.c | 4 ++-- sysdeps/x86/tst-strchr-rtm.c | 4 ++-- sysdeps/x86/tst-strcmp-rtm.c | 4 ++-- sysdeps/x86/tst-strcpy-rtm.c | 4 ++-- sysdeps/x86/tst-strlen-rtm.c | 4 ++-- sysdeps/x86/tst-strncmp-rtm.c | 8 ++++---- sysdeps/x86/tst-strrchr-rtm.c | 4 ++-- sysdeps/x86_64/tst-rsi-strlen.c | 2 +- 45 files changed, 113 insertions(+), 101 deletions(-) diff --git a/benchtests/bench-hash-funcs-kernel.h b/benchtests/bench-hash-funcs-kernel.h index 7eaa3665b6..aee1f1cdc8 100644 --- a/benchtests/bench-hash-funcs-kernel.h +++ b/benchtests/bench-hash-funcs-kernel.h @@ -35,7 +35,7 @@ #define PRIMITIVE_CAT(x, y) x ## y #define CAT(x, y) PRIMITIVE_CAT (x, y) -static double __attribute__ ((noinline, noclone)) +static double __attribute__ ((noinline)) __attribute_noclone__ CAT (do_one_test_kernel, POSTFIX) (const char *s, size_t len) { @@ -58,7 +58,7 @@ CAT (do_one_test_kernel, POSTFIX) (const char *s, size_t len) return (double) cur / (double) NFIXED_ITERS; } -static double __attribute__ ((noinline, noclone)) +static double __attribute__ ((noinline)) __attribute_noclone__ CAT (do_rand_test_kernel, POSTFIX) (char const *bufs, unsigned int const *sizes) { diff --git a/benchtests/bench-hash-funcs.c b/benchtests/bench-hash-funcs.c index 8dd88c9e39..ca199a7fae 100644 --- a/benchtests/bench-hash-funcs.c +++ b/benchtests/bench-hash-funcs.c @@ -67,7 +67,7 @@ do_one_test (json_ctx_t *json_ctx, size_t len) json_element_object_end (json_ctx); } -static void __attribute__ ((noinline, noclone)) +static void __attribute__ ((noinline)) __attribute_noclone__ do_rand_test (json_ctx_t *json_ctx) { size_t i, sz, offset; diff --git a/benchtests/bench-strchr.c b/benchtests/bench-strchr.c index eed6882085..5ef3a9d438 100644 --- a/benchtests/bench-strchr.c +++ b/benchtests/bench-strchr.c @@ -92,7 +92,7 @@ IMPL (generic_strchrnul, 0) branch coming we want to test the case where a potential branch in strchr can be used to skip a later mispredict because of the relationship between the two branches. */ -static void __attribute__ ((noinline, noclone)) +static void __attribute__ ((noinline)) __attribute_noclone__ do_one_rand_plus_branch_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s, const CHAR *c) { @@ -117,7 +117,7 @@ do_one_rand_plus_branch_test (json_ctx_t *json_ctx, impl_t *impl, json_element_double (json_ctx, (double)cur / (double)iters); } -static void __attribute__ ((noinline, noclone)) +static void __attribute__ ((noinline)) __attribute_noclone__ do_one_rand_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s, const CHAR *c) { diff --git a/debug/tst-backtrace.h b/debug/tst-backtrace.h index 53239dad59..5526cb2dc3 100644 --- a/debug/tst-backtrace.h +++ b/debug/tst-backtrace.h @@ -33,7 +33,7 @@ volatile int x; /* Use this attribute to prevent inlining, so that all expected frames are present. */ -#define NO_INLINE __attribute__ ((noinline, noclone, weak)) +#define NO_INLINE __attribute__ ((noinline, weak)) __attribute_noclone__ /* Look for a match in SYM from backtrace_symbols to NAME, a fragment of a function name. Ignore the filename before '(', but presume diff --git a/debug/tst-ssp-1.c b/debug/tst-ssp-1.c index a1e4fb0630..27f10edc56 100644 --- a/debug/tst-ssp-1.c +++ b/debug/tst-ssp-1.c @@ -21,7 +21,7 @@ #include static void -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ test (char *foo) { int i; diff --git a/elf/tst-p_alignmod-base.c b/elf/tst-p_alignmod-base.c index d6930b9f16..3f90212e07 100644 --- a/elf/tst-p_alignmod-base.c +++ b/elf/tst-p_alignmod-base.c @@ -26,7 +26,7 @@ int foo __attribute__ ((aligned (ALIGN))) = 1; bool -__attribute__ ((weak, noclone, noinline)) +__attribute__ ((weak, noinline)) __attribute_noclone__ is_aligned_p (void *p, int align) { return (((uintptr_t) p) & (align - 1)) == 0; diff --git a/gmon/tst-gmon.c b/gmon/tst-gmon.c index 9de4e7f85f..e379cced86 100644 --- a/gmon/tst-gmon.c +++ b/gmon/tst-gmon.c @@ -16,15 +16,17 @@ License along with the GNU C Library; if not, see . */ +#include + /* This program does not use the test harness because we want tight control over the call graph. */ -__attribute__ ((noinline, noclone, weak)) void +__attribute__ ((noinline, weak)) __attribute_noclone__ void f1 (void) { } -__attribute__ ((noinline, noclone, weak)) void +__attribute__ ((noinline, weak)) __attribute_noclone__ void f2 (void) { f1 (); @@ -32,7 +34,7 @@ f2 (void) asm volatile (""); } -__attribute__ ((noinline, noclone, weak)) void +__attribute__ ((noinline, weak)) __attribute_noclone__ void f3 (int count) { for (int i = 0; i < count; ++i) diff --git a/gmon/tst-mcount-overflow.c b/gmon/tst-mcount-overflow.c index 0e60f7e2e6..5fa98f3b38 100644 --- a/gmon/tst-mcount-overflow.c +++ b/gmon/tst-mcount-overflow.c @@ -16,6 +16,8 @@ License along with the GNU C Library; if not, see . */ +#include + /* Program with sufficiently complex, yet pointless, call graph that it will trigger an mcount overflow, when you set the minarcs/maxarcs tunables to very low values. */ @@ -31,12 +33,12 @@ /* Defines 16 leaf functions named f1_0 to f1_15 */ #define REP(n) \ - __attribute__ ((noinline, noclone, weak)) void f1_##n (void) {}; + __attribute__ ((noinline, weak)) __attribute_noclone__ void f1_##n (void) {}; REPS #undef REP /* Calls all 16 leaf functions f1_* in succession */ -__attribute__ ((noinline, noclone, weak)) void +__attribute__ ((noinline, weak)) __attribute_noclone__ void f2 (void) { # define REP(n) f1_##n(); @@ -47,12 +49,12 @@ f2 (void) /* Defines 16 functions named f2_0 to f2_15, which all just call f2 */ #define REP(n) \ - __attribute__ ((noinline, noclone, weak)) void \ + __attribute__ ((noinline, weak)) __attribute_noclone__ void \ f2_##n (void) { f2(); PREVENT_TAIL_CALL; }; REPS #undef REP -__attribute__ ((noinline, noclone, weak)) void +__attribute__ ((noinline, weak)) __attribute_noclone__ void f3 (int count) { for (int i = 0; i < count; ++i) diff --git a/malloc/tst-malloc-thread-exit.c b/malloc/tst-malloc-thread-exit.c index aec3897087..d21191a53d 100644 --- a/malloc/tst-malloc-thread-exit.c +++ b/malloc/tst-malloc-thread-exit.c @@ -42,7 +42,7 @@ static int inner_thread_count = 4; static size_t malloc_size = 32; static void -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ unoptimized_free (void *ptr) { free (ptr); diff --git a/malloc/tst-malloc-thread-fail.c b/malloc/tst-malloc-thread-fail.c index f698871876..d5bc3433e7 100644 --- a/malloc/tst-malloc-thread-fail.c +++ b/malloc/tst-malloc-thread-fail.c @@ -33,7 +33,7 @@ /* Wrapper for calloc with an optimization barrier. */ static void * -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ allocate_zeroed (size_t a, size_t b) { return calloc (a, b); diff --git a/malloc/tst-mallocstate.c b/malloc/tst-mallocstate.c index f72e1a1b28..25e3e31521 100644 --- a/malloc/tst-mallocstate.c +++ b/malloc/tst-mallocstate.c @@ -366,7 +366,7 @@ full_heap_check (void) } /* Used as an optimization barrier to force a heap allocation. */ -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static void my_free (void *ptr) { diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h index ab9620bd0d..4434bd3a46 100644 --- a/misc/sys/cdefs.h +++ b/misc/sys/cdefs.h @@ -883,4 +883,11 @@ _Static_assert (0, "IEEE 128-bits long double requires redirection on this platf # define __attribute_struct_may_alias__ #endif +/* Prevents a function from being considered for cloning. */ +#if __GNUC_PREREQ (4, 5) || __glibc_has_attribute (__noclone__) +# define __attribute_noclone__ __attribute__ ((__noclone__)) +#else +# define __attribute_noclone__ /* Ignore. */ +#endif + #endif /* sys/cdefs.h */ diff --git a/misc/tst-syscalls.c b/misc/tst-syscalls.c index d060b125c9..4418b1867a 100644 --- a/misc/tst-syscalls.c +++ b/misc/tst-syscalls.c @@ -37,7 +37,7 @@ struct Array static int error_count; -__attribute__ ((noclone, noinline)) +__attribute__ ((noinline)) __attribute_noclone__ struct Array allocate (size_t bytes) { @@ -52,7 +52,7 @@ allocate (size_t bytes) return __extension__ (struct Array) {bytes, p}; } -__attribute__ ((noclone, noinline)) +__attribute__ ((noinline)) __attribute_noclone__ void deallocate (struct Array b) { @@ -66,7 +66,7 @@ deallocate (struct Array b) } } -__attribute__ ((noclone, noinline)) +__attribute__ ((noinline)) __attribute_noclone__ void * do_mmap (void *addr, size_t length) { @@ -74,7 +74,7 @@ do_mmap (void *addr, size_t length) MAP_PRIVATE | MAP_ANON, -1, 0); } -__attribute__ ((noclone, noinline)) +__attribute__ ((noinline)) __attribute_noclone__ void * reallocate (struct Array b) { @@ -86,7 +86,7 @@ reallocate (struct Array b) return NULL; } -__attribute__ ((noclone, noinline)) +__attribute__ ((noinline)) __attribute_noclone__ void protect (struct Array b) { @@ -104,7 +104,7 @@ protect (struct Array b) } } -__attribute__ ((noclone, noinline)) +__attribute__ ((noinline)) __attribute_noclone__ ssize_t do_read (int fd, void *ptr, struct Array b) { @@ -116,7 +116,7 @@ do_read (int fd, void *ptr, struct Array b) return 0; } -__attribute__ ((noclone, noinline)) +__attribute__ ((noinline)) __attribute_noclone__ ssize_t do_write (int fd, void *ptr, struct Array b) { diff --git a/nptl/tst-minstack-throw.cc b/nptl/tst-minstack-throw.cc index b729091ec4..34b4bde825 100644 --- a/nptl/tst-minstack-throw.cc +++ b/nptl/tst-minstack-throw.cc @@ -24,7 +24,7 @@ #include /* Throw a std::runtime_exception. */ -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void do_throw_exception () { @@ -38,17 +38,17 @@ struct class_with_destructor ~class_with_destructor (); }; -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ class_with_destructor::class_with_destructor () { } -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ class_with_destructor::~class_with_destructor () { } -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void function_with_destructed_object () { diff --git a/nptl/tst-thread-exit-clobber.cc b/nptl/tst-thread-exit-clobber.cc index b3b6989268..28cd769198 100644 --- a/nptl/tst-thread-exit-clobber.cc +++ b/nptl/tst-thread-exit-clobber.cc @@ -73,7 +73,7 @@ enum { no_check = -1 }; /* Check that VALUE is the magic value for INDEX, behind a compiler barrier. */ -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void check_magic (int index, unsigned int value) { @@ -103,7 +103,7 @@ check_magic (int index, unsigned int value) /* Check that VALUE is the magic value for INDEX, behind a compiler barrier. Double variant. */ -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void check_magic (int index, double value) { @@ -153,7 +153,7 @@ struct checker call_pthread_exit are used to call pthread_exit indirectly, with the intent of clobbering the register values. */ -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void call_pthread_exit_0 (const values *pvalues) { @@ -166,7 +166,7 @@ call_pthread_exit_0 (const values *pvalues) pthread_exit (NULL); } -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void call_pthread_exit_1 (const values *pvalues) { @@ -180,7 +180,7 @@ call_pthread_exit_1 (const values *pvalues) call_pthread_exit_0 (&other_values); } -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void call_pthread_exit () { @@ -192,7 +192,7 @@ call_pthread_exit () pthread_exit. If Nested is true, call pthread_exit indirectly via call_pthread_exit. */ template -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void * threadfunc (void *closure) { diff --git a/nptl/tst-thread_local1.cc b/nptl/tst-thread_local1.cc index 270520528c..c6d5ec2e66 100644 --- a/nptl/tst-thread_local1.cc +++ b/nptl/tst-thread_local1.cc @@ -53,27 +53,27 @@ to_string (const counter &c) template struct counting { - counting () __attribute__ ((noinline, noclone)); - ~counting () __attribute__ ((noinline, noclone)); - void operation () __attribute__ ((noinline, noclone)); + counting () __attribute__ ((noinline)) __attribute_noclone__; + ~counting () __attribute__ ((noinline)) __attribute_noclone__; + void operation () __attribute__ ((noinline)) __attribute_noclone__; }; template -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ counting::counting () { ++Counter->constructed; } template -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ counting::~counting () { ++Counter->destructed; } template -void __attribute__ ((noinline, noclone)) +void __attribute__ ((noinline)) __attribute_noclone__ counting::operation () { // Optimization barrier. diff --git a/stdlib/tst-makecontext-align.c b/stdlib/tst-makecontext-align.c index e54b3e1ff2..b3187a5aa8 100644 --- a/stdlib/tst-makecontext-align.c +++ b/stdlib/tst-makecontext-align.c @@ -30,7 +30,7 @@ static const char *context; /* Check that ADDRESS is aligned to ALIGNMENT bytes, behind a compiler barrier. */ -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void check_align (void *address, size_t alignment) { @@ -45,7 +45,7 @@ check_align (void *address, size_t alignment) /* Various alignment checking functions. */ -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void check_align_int (void) { @@ -53,7 +53,7 @@ check_align_int (void) check_align (&a, __alignof__ (a)); } -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void check_align_long (void) { @@ -61,7 +61,7 @@ check_align_long (void) check_align (&a, __alignof__ (a)); } -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void check_align_long_long (void) { @@ -69,7 +69,7 @@ check_align_long_long (void) check_align (&a, __alignof__ (a)); } -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void check_align_double (void) { @@ -77,7 +77,7 @@ check_align_double (void) check_align (&a, __alignof__ (a)); } -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void check_align_4 (void) { @@ -85,7 +85,7 @@ check_align_4 (void) check_align (&a, 4); } -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void check_align_8 (void) { @@ -93,7 +93,7 @@ check_align_8 (void) check_align (&a, 8); } -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void check_align_16 (void) { @@ -105,7 +105,7 @@ check_align_16 (void) check_align (&a, 16); } -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void check_align_32 (void) { @@ -120,7 +120,7 @@ check_align_32 (void) } /* Call all the alignment checking functions. */ -__attribute__ ((noinline, noclone, weak)) +__attribute__ ((noinline, weak)) __attribute_noclone__ void check_alignments (void) { diff --git a/stdlib/tst-quick_exit.cc b/stdlib/tst-quick_exit.cc index 4331d80383..22789fe084 100644 --- a/stdlib/tst-quick_exit.cc +++ b/stdlib/tst-quick_exit.cc @@ -26,7 +26,7 @@ struct A thread_local A a; void -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ optimization_barrier (A &) { } diff --git a/stdlib/tst-setcontext10.c b/stdlib/tst-setcontext10.c index 7267f5efe3..65a7e53f0a 100644 --- a/stdlib/tst-setcontext10.c +++ b/stdlib/tst-setcontext10.c @@ -37,7 +37,7 @@ static ucontext_t ctx; static void f2 (void); static void -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ f1 (void) { printf ("start f1\n"); @@ -45,7 +45,7 @@ f1 (void) } static void -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ f2 (void) { printf ("start f2\n"); @@ -64,7 +64,7 @@ f3 (void) } static int -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ do_test_1 (void) { char st1[32768]; diff --git a/stdlib/tst-setcontext11.c b/stdlib/tst-setcontext11.c index 1883c44b76..c768782b86 100644 --- a/stdlib/tst-setcontext11.c +++ b/stdlib/tst-setcontext11.c @@ -54,7 +54,7 @@ f1 (int a0, int a1, int a2, int a3) } static void -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ call_longjmp (void) { longjmp_called = 1; diff --git a/stdlib/tst-setcontext5.c b/stdlib/tst-setcontext5.c index 9b29907a13..42e87e2185 100644 --- a/stdlib/tst-setcontext5.c +++ b/stdlib/tst-setcontext5.c @@ -27,7 +27,7 @@ static volatile int done; static void f2 (void); static void -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ f1 (void) { printf ("start f1\n"); @@ -35,7 +35,7 @@ f1 (void) } static void -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ f2 (void) { printf ("start f2\n"); diff --git a/stdlib/tst-setcontext8.c b/stdlib/tst-setcontext8.c index cdcf5eb871..d02cade70c 100644 --- a/stdlib/tst-setcontext8.c +++ b/stdlib/tst-setcontext8.c @@ -26,7 +26,7 @@ static ucontext_t ctx[3]; static atomic_int done; static void -__attribute__((noinline, noclone)) +__attribute__((noinline)) __attribute_noclone__ f2 (void) { printf ("start f2\n"); diff --git a/stdlib/tst-setcontext9.c b/stdlib/tst-setcontext9.c index 91b6255138..579d45419a 100644 --- a/stdlib/tst-setcontext9.c +++ b/stdlib/tst-setcontext9.c @@ -26,7 +26,7 @@ static ucontext_t ctx[5]; static atomic_int done; static void -__attribute__((noinline, noclone)) +__attribute__((noinline)) __attribute_noclone__ f2 (void) { done++; diff --git a/stdlib/tst-swapcontext1.c b/stdlib/tst-swapcontext1.c index c96b8a27a8..e10d76fe4f 100644 --- a/stdlib/tst-swapcontext1.c +++ b/stdlib/tst-swapcontext1.c @@ -29,7 +29,7 @@ const char *fmt2 = "\e[34m"; #define handle_error(msg) \ do { perror(msg); exit(EXIT_FAILURE); } while (0) -__attribute__((noinline, noclone)) +__attribute__((noinline)) __attribute_noclone__ static void func4(ucontext_t *uocp, ucontext_t *ucp, const char *str, const char *fmt) { @@ -39,7 +39,7 @@ func4(ucontext_t *uocp, ucontext_t *ucp, const char *str, const char *fmt) printf(" %sfunc4: returning\e[0m\n", fmt); } -__attribute__((noinline, noclone)) +__attribute__((noinline)) __attribute_noclone__ static void func3(ucontext_t *uocp, ucontext_t *ucp, const char *str, const char *fmt) { @@ -48,7 +48,7 @@ func3(ucontext_t *uocp, ucontext_t *ucp, const char *str, const char *fmt) printf(" %sfunc3: returning\e[0m\n", fmt); } -__attribute__((noinline, noclone)) +__attribute__((noinline)) __attribute_noclone__ static void func1(void) { @@ -59,7 +59,7 @@ func1(void) } } -__attribute__((noinline, noclone)) +__attribute__((noinline)) __attribute_noclone__ static void func2(void) { diff --git a/stdlib/tst-swapcontext2.c b/stdlib/tst-swapcontext2.c index a9c1dc827c..f9e5f2cdea 100644 --- a/stdlib/tst-swapcontext2.c +++ b/stdlib/tst-swapcontext2.c @@ -32,7 +32,7 @@ static jmp_buf jmpbuf; #define handle_error(msg) \ do { perror(msg); exit(EXIT_FAILURE); } while (0) -__attribute__((noinline, noclone)) +__attribute__((noinline)) __attribute_noclone__ static void func4(ucontext_t *uocp, ucontext_t *ucp, const char *str, const char *fmt) { @@ -42,7 +42,7 @@ func4(ucontext_t *uocp, ucontext_t *ucp, const char *str, const char *fmt) printf(" %sfunc4: returning\e[0m\n", fmt); } -__attribute__((noinline, noclone)) +__attribute__((noinline)) __attribute_noclone__ static void func3(ucontext_t *uocp, ucontext_t *ucp, const char *str, const char *fmt) { @@ -51,7 +51,7 @@ func3(ucontext_t *uocp, ucontext_t *ucp, const char *str, const char *fmt) printf(" %sfunc3: returning\e[0m\n", fmt); } -__attribute__((noinline, noclone)) +__attribute__((noinline)) __attribute_noclone__ static void func1(void) { @@ -67,7 +67,7 @@ func1(void) } } -__attribute__((noinline, noclone)) +__attribute__((noinline)) __attribute_noclone__ static void func2(void) { diff --git a/stdlib/tst-thread-quick_exit.cc b/stdlib/tst-thread-quick_exit.cc index dadccee334..a4dc03d661 100644 --- a/stdlib/tst-thread-quick_exit.cc +++ b/stdlib/tst-thread-quick_exit.cc @@ -30,7 +30,7 @@ thread_local A a1; thread_local A a2; void -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ optimization_barrier (A &) { } diff --git a/string/tst-xbzero-opt.c b/string/tst-xbzero-opt.c index 2392eaa2c1..954fc61f89 100644 --- a/string/tst-xbzero-opt.c +++ b/string/tst-xbzero-opt.c @@ -97,7 +97,8 @@ static const unsigned char test_pattern[16] = static ucontext_t uc_main, uc_co; -static __attribute__ ((noinline, noclone)) int +static __attribute__ ((noinline)) __attribute_noclone__ +int use_test_buffer (unsigned char *buf) { unsigned int sum = 0; diff --git a/sysdeps/generic/tst-stack-align.h b/sysdeps/generic/tst-stack-align.h index 12473e32b8..5b622f5a3f 100644 --- a/sysdeps/generic/tst-stack-align.h +++ b/sysdeps/generic/tst-stack-align.h @@ -20,7 +20,7 @@ #include int -__attribute__ ((weak, noclone, noinline)) +__attribute__ ((weak, noinline)) __attribute_noclone__ is_aligned (void *p, int align) { return (((uintptr_t) p) & (align - 1)) != 0; diff --git a/sysdeps/unix/sysv/linux/x86_64/tst-cet-property-2.c b/sysdeps/unix/sysv/linux/x86_64/tst-cet-property-2.c index 5274a09509..a72ace740a 100644 --- a/sysdeps/unix/sysv/linux/x86_64/tst-cet-property-2.c +++ b/sysdeps/unix/sysv/linux/x86_64/tst-cet-property-2.c @@ -25,7 +25,7 @@ extern void bar (void); void -__attribute__ ((noclone, noinline)) +__attribute__ ((noinline)) __attribute_noclone__ test (void (*func_p) (void)) { func_p (); diff --git a/sysdeps/unix/sysv/linux/x86_64/tst-cet-setcontext-1.c b/sysdeps/unix/sysv/linux/x86_64/tst-cet-setcontext-1.c index 388931f5f3..c0289dc701 100644 --- a/sysdeps/unix/sysv/linux/x86_64/tst-cet-setcontext-1.c +++ b/sysdeps/unix/sysv/linux/x86_64/tst-cet-setcontext-1.c @@ -30,7 +30,7 @@ static ucontext_t ctx[5]; static atomic_int done; static void -__attribute__((noinline, noclone)) +__attribute__((noinline)) __attribute_noclone__ f2 (void) { printf ("start f2\n"); diff --git a/sysdeps/unix/sysv/linux/x86_64/tst-cet-vfork-1.c b/sysdeps/unix/sysv/linux/x86_64/tst-cet-vfork-1.c index 56d77530ae..3e0061f605 100644 --- a/sysdeps/unix/sysv/linux/x86_64/tst-cet-vfork-1.c +++ b/sysdeps/unix/sysv/linux/x86_64/tst-cet-vfork-1.c @@ -25,7 +25,7 @@ #include #include -__attribute__ ((noclone, noinline)) +__attribute__ ((noinline)) __attribute_noclone__ static void do_test_1 (void) { diff --git a/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.c b/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.c index ae4dd82556..bf12ed2eb3 100644 --- a/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.c +++ b/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.c @@ -27,7 +27,7 @@ extern int arch_prctl (int, ...); #define X86_XSTATE_TILEDATA_ID 18 /* Initialize tile config. */ -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static void init_tile_config (__tilecfg *tileinfo) { diff --git a/sysdeps/x86/tst-ldbl-nonnormal-printf.c b/sysdeps/x86/tst-ldbl-nonnormal-printf.c index 3a60750de4..581c9c1fc4 100644 --- a/sysdeps/x86/tst-ldbl-nonnormal-printf.c +++ b/sysdeps/x86/tst-ldbl-nonnormal-printf.c @@ -23,7 +23,7 @@ /* Fill the stack with non-zero values. This makes a crash in snprintf more likely. */ -static void __attribute__ ((noinline, noclone)) +static void __attribute__ ((noinline)) __attribute_noclone__ fill_stack (void) { char buffer[65536]; diff --git a/sysdeps/x86/tst-memchr-rtm.c b/sysdeps/x86/tst-memchr-rtm.c index 7dc0718b7c..fb57bc115a 100644 --- a/sysdeps/x86/tst-memchr-rtm.c +++ b/sysdeps/x86/tst-memchr-rtm.c @@ -22,7 +22,7 @@ #define STRING_SIZE 1024 char string1[STRING_SIZE]; -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int prepare (void) { @@ -36,7 +36,7 @@ prepare (void) return EXIT_FAILURE; } -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int function (void) { diff --git a/sysdeps/x86/tst-memcmp-rtm.c b/sysdeps/x86/tst-memcmp-rtm.c index 124eb17aed..24df5ed79a 100644 --- a/sysdeps/x86/tst-memcmp-rtm.c +++ b/sysdeps/x86/tst-memcmp-rtm.c @@ -23,7 +23,7 @@ char string1[STRING_SIZE]; char string2[STRING_SIZE]; -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int prepare (void) { @@ -35,7 +35,7 @@ prepare (void) return EXIT_FAILURE; } -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int function (void) { diff --git a/sysdeps/x86/tst-memmove-rtm.c b/sysdeps/x86/tst-memmove-rtm.c index dfb5533784..8ff1940109 100644 --- a/sysdeps/x86/tst-memmove-rtm.c +++ b/sysdeps/x86/tst-memmove-rtm.c @@ -23,7 +23,7 @@ char string1[STRING_SIZE]; char string2[STRING_SIZE]; -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int prepare (void) { @@ -35,7 +35,7 @@ prepare (void) return EXIT_FAILURE; } -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int function (void) { diff --git a/sysdeps/x86/tst-memrchr-rtm.c b/sysdeps/x86/tst-memrchr-rtm.c index 48512de7f4..13ed0aed45 100644 --- a/sysdeps/x86/tst-memrchr-rtm.c +++ b/sysdeps/x86/tst-memrchr-rtm.c @@ -22,7 +22,7 @@ #define STRING_SIZE 1024 char string1[STRING_SIZE]; -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int prepare (void) { @@ -36,7 +36,7 @@ prepare (void) return EXIT_FAILURE; } -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int function (void) { diff --git a/sysdeps/x86/tst-memset-rtm.c b/sysdeps/x86/tst-memset-rtm.c index 60e714c757..3eb6388b74 100644 --- a/sysdeps/x86/tst-memset-rtm.c +++ b/sysdeps/x86/tst-memset-rtm.c @@ -22,7 +22,7 @@ #define STRING_SIZE 1024 char string1[STRING_SIZE]; -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int prepare (void) { @@ -30,7 +30,7 @@ prepare (void) return EXIT_SUCCESS; } -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int function (void) { diff --git a/sysdeps/x86/tst-strchr-rtm.c b/sysdeps/x86/tst-strchr-rtm.c index 8294cc5118..e9689f0f7c 100644 --- a/sysdeps/x86/tst-strchr-rtm.c +++ b/sysdeps/x86/tst-strchr-rtm.c @@ -22,7 +22,7 @@ #define STRING_SIZE 1024 char string1[STRING_SIZE]; -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int prepare (void) { @@ -36,7 +36,7 @@ prepare (void) return EXIT_FAILURE; } -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int function (void) { diff --git a/sysdeps/x86/tst-strcmp-rtm.c b/sysdeps/x86/tst-strcmp-rtm.c index c2274a5d3e..8d1453caa5 100644 --- a/sysdeps/x86/tst-strcmp-rtm.c +++ b/sysdeps/x86/tst-strcmp-rtm.c @@ -40,7 +40,7 @@ CHAR string1[STRING_SIZE]; CHAR string2[STRING_SIZE]; -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int prepare (void) { @@ -52,7 +52,7 @@ prepare (void) return EXIT_FAILURE; } -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int function (void) { diff --git a/sysdeps/x86/tst-strcpy-rtm.c b/sysdeps/x86/tst-strcpy-rtm.c index 139f52004e..cb5c340448 100644 --- a/sysdeps/x86/tst-strcpy-rtm.c +++ b/sysdeps/x86/tst-strcpy-rtm.c @@ -23,7 +23,7 @@ char string1[STRING_SIZE]; char string2[STRING_SIZE]; -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int prepare (void) { @@ -35,7 +35,7 @@ prepare (void) return EXIT_FAILURE; } -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int function (void) { diff --git a/sysdeps/x86/tst-strlen-rtm.c b/sysdeps/x86/tst-strlen-rtm.c index 5b083f29dc..278cf27c8c 100644 --- a/sysdeps/x86/tst-strlen-rtm.c +++ b/sysdeps/x86/tst-strlen-rtm.c @@ -22,7 +22,7 @@ #define STRING_SIZE 1024 char string1[STRING_SIZE]; -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int prepare (void) { @@ -35,7 +35,7 @@ prepare (void) return EXIT_FAILURE; } -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int function (void) { diff --git a/sysdeps/x86/tst-strncmp-rtm.c b/sysdeps/x86/tst-strncmp-rtm.c index ebc8837ad1..3529431527 100644 --- a/sysdeps/x86/tst-strncmp-rtm.c +++ b/sysdeps/x86/tst-strncmp-rtm.c @@ -40,7 +40,7 @@ CHAR string1[STRING_SIZE]; CHAR string2[STRING_SIZE]; -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int prepare (void) { @@ -52,7 +52,7 @@ prepare (void) return EXIT_FAILURE; } -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int function (void) { @@ -62,7 +62,7 @@ function (void) return 1; } -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int function_overflow (void) { @@ -72,7 +72,7 @@ function_overflow (void) return 1; } -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int function_overflow2 (void) { diff --git a/sysdeps/x86/tst-strrchr-rtm.c b/sysdeps/x86/tst-strrchr-rtm.c index 487d2071d4..35f328e294 100644 --- a/sysdeps/x86/tst-strrchr-rtm.c +++ b/sysdeps/x86/tst-strrchr-rtm.c @@ -22,7 +22,7 @@ #define STRING_SIZE 1024 char string1[STRING_SIZE]; -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int prepare (void) { @@ -35,7 +35,7 @@ prepare (void) return EXIT_FAILURE; } -__attribute__ ((noinline, noclone)) +__attribute__ ((noinline)) __attribute_noclone__ static int function (void) { diff --git a/sysdeps/x86_64/tst-rsi-strlen.c b/sysdeps/x86_64/tst-rsi-strlen.c index 2c424ffe94..b367e75177 100644 --- a/sysdeps/x86_64/tst-rsi-strlen.c +++ b/sysdeps/x86_64/tst-rsi-strlen.c @@ -44,7 +44,7 @@ typedef struct } parameter_t; size_t -__attribute__ ((weak, noinline, noclone)) +__attribute__ ((weak, noinline)) __attribute_noclone__ do_strlen (parameter_t *a, int zero, const CHAR *str) { return CALL (a, str);