From patchwork Wed Jun 12 15:54:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 33094 Received: (qmail 119489 invoked by alias); 12 Jun 2019 15:54:24 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 119453 invoked by uid 89); 12 Jun 2019 15:54:24 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-19.0 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_HELO_PASS autolearn=ham version=3.3.1 spammy=HX-Languages-Length:1457, H*i:sk:c35c19d, H*f:sk:c35c19d X-HELO: mx1.redhat.com From: Florian Weimer To: Szabolcs Nagy Cc: Zack Weinberg , nd , GNU C Library Subject: Re: [glibc] : Use Linux UAPI header for statx if available and useful References: <20190612110504.66041.qmail@sourceware.org> <87ftoe7utd.fsf@oldenburg2.str.redhat.com> <87y3266czw.fsf@oldenburg2.str.redhat.com> Date: Wed, 12 Jun 2019 17:54:20 +0200 In-Reply-To: (Szabolcs Nagy's message of "Wed, 12 Jun 2019 15:31:39 +0000") Message-ID: <87ef3y6bpv.fsf@oldenburg2.str.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) MIME-Version: 1.0 * Szabolcs Nagy: > ouch, use the "" > > (clang __has_include seems not to expand) Yes, that's what I saw as well in my testing. Below is a lightly tested patch. Thanks, Florian Linux: Fix __glibc_has_include use for and statx The identifier linux is used as a predefined macro, so the actually used path is 1/stat.h or 1/stat64.h. Using the quote-based version triggers a file lookup for /usr/include/bits/linux/stat.h (or whatever directory is used to store bits/statx.h), but since bits/ is pretty much reserved by glibc, this appears to be acceptable. This is related to GCC PR 80005: incorrect macro expansion of the argument of __has_include. Suggested by Zack Weinberg. 2019-06-12 Florian Weimer * sysdeps/unix/sysv/linux/bits/statx.h: Use string literal in argument to __glibc_has_include to inhibit macro expansion. diff --git a/sysdeps/unix/sysv/linux/bits/statx.h b/sysdeps/unix/sysv/linux/bits/statx.h index d36f44efc6..3599f85a47 100644 --- a/sysdeps/unix/sysv/linux/bits/statx.h +++ b/sysdeps/unix/sysv/linux/bits/statx.h @@ -23,8 +23,8 @@ #endif /* Use the Linux kernel header if available. */ -#if __glibc_has_include () -# include +#if __glibc_has_include ("linux/stat.h") +# include "linux/stat.h" # ifdef STATX_TYPE # define __statx_timestamp_defined 1 # define __statx_defined 1