From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 62089 invoked by alias); 25 Aug 2017 14:25:13 -0000 Mailing-List: contact newlib-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: newlib-owner@sourceware.org Received: (qmail 49403 invoked by uid 89); 25 Aug 2017 14:24:49 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=investigations, roll, 34319, held X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 25 Aug 2017 14:24:48 +0000 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9D2FD769E2 for ; Fri, 25 Aug 2017 14:24:39 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 9D2FD769E2 Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=eblake@redhat.com Received: from red.redhat.com (ovpn-122-253.rdu2.redhat.com [10.10.122.253]) by smtp.corp.redhat.com (Postfix) with ESMTP id 414E080E0D for ; Fri, 25 Aug 2017 14:24:39 +0000 (UTC) From: Eric Blake To: newlib@sourceware.org Subject: [PATCH] Revert "headers: avoid bareword attributes" for clang Date: Fri, 25 Aug 2017 16:02:00 -0000 Message-Id: <20170825142438.24525-1-eblake@redhat.com> X-IsSubscribed: yes X-SW-Source: 2017/txt/msg00886.txt.bz2 This reverts most of commit 979d467ff6e39ee5c52cf1aac7a6c9c63058141c. We cannot avoid some bareword attributes until clang is fixed to properly support __-decorated attributes; see this bug: https://bugs.llvm.org/show_bug.cgi?id=34319 The macros in question expand to the empty string under gcc, so only compilation under clang is affected, and since clang has the bug, the obvious solution is to roll back the changes, and document the issue. Signed-off-by: Eric Blake --- I'm pushing this as a result of Sebastian's investigations. newlib/libc/include/sys/cdefs.h | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/newlib/libc/include/sys/cdefs.h b/newlib/libc/include/sys/cdefs.h index 9e58ee980..8ce14b68e 100644 --- a/newlib/libc/include/sys/cdefs.h +++ b/newlib/libc/include/sys/cdefs.h @@ -681,42 +681,44 @@ #endif /* Structure implements a lock. */ -#define __lockable __lock_annotate(__lockable__) +/* FIXME: Use __lockable__, etc. to avoid colliding with user namespace macros, + * once clang is fixed: https://bugs.llvm.org/show_bug.cgi?id=34319 */ +#define __lockable __lock_annotate(lockable) /* Function acquires an exclusive or shared lock. */ #define __locks_exclusive(...) \ - __lock_annotate(__exclusive_lock_function__(__VA_ARGS__)) + __lock_annotate(exclusive_lock_function(__VA_ARGS__)) #define __locks_shared(...) \ - __lock_annotate(__shared_lock_function__(__VA_ARGS__)) + __lock_annotate(shared_lock_function(__VA_ARGS__)) /* Function attempts to acquire an exclusive or shared lock. */ #define __trylocks_exclusive(...) \ - __lock_annotate(__exclusive_trylock_function__(__VA_ARGS__)) + __lock_annotate(exclusive_trylock_function(__VA_ARGS__)) #define __trylocks_shared(...) \ - __lock_annotate(__shared_trylock_function__(__VA_ARGS__)) + __lock_annotate(shared_trylock_function(__VA_ARGS__)) /* Function releases a lock. */ -#define __unlocks(...) __lock_annotate(__unlock_function__(__VA_ARGS__)) +#define __unlocks(...) __lock_annotate(unlock_function(__VA_ARGS__)) /* Function asserts that an exclusive or shared lock is held. */ #define __asserts_exclusive(...) \ - __lock_annotate(__assert_exclusive_lock__(__VA_ARGS__)) + __lock_annotate(assert_exclusive_lock(__VA_ARGS__)) #define __asserts_shared(...) \ - __lock_annotate(__assert_shared_lock__(__VA_ARGS__)) + __lock_annotate(assert_shared_lock(__VA_ARGS__)) /* Function requires that an exclusive or shared lock is or is not held. */ #define __requires_exclusive(...) \ - __lock_annotate(__exclusive_locks_required__(__VA_ARGS__)) + __lock_annotate(exclusive_locks_required(__VA_ARGS__)) #define __requires_shared(...) \ - __lock_annotate(__shared_locks_required__(__VA_ARGS__)) + __lock_annotate(shared_locks_required(__VA_ARGS__)) #define __requires_unlocked(...) \ - __lock_annotate(__locks_excluded__(__VA_ARGS__)) + __lock_annotate(locks_excluded(__VA_ARGS__)) /* Function should not be analyzed. */ -#define __no_lock_analysis __lock_annotate(__no_thread_safety_analysis__) +#define __no_lock_analysis __lock_annotate(no_thread_safety_analysis) /* Guard variables and structure members by lock. */ -#define __guarded_by(x) __lock_annotate(__guarded_by__(x)) -#define __pt_guarded_by(x) __lock_annotate(__pt_guarded_by__(x)) +#define __guarded_by(x) __lock_annotate(guarded_by(x)) +#define __pt_guarded_by(x) __lock_annotate(pt_guarded_by(x)) #endif /* !_SYS_CDEFS_H_ */ -- 2.13.5