Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752261AbdCDBYZ (ORCPT ); Fri, 3 Mar 2017 20:24:25 -0500 Received: from mail-qk0-f196.google.com ([209.85.220.196]:35559 "EHLO mail-qk0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751719AbdCDBYL (ORCPT ); Fri, 3 Mar 2017 20:24:11 -0500 MIME-Version: 1.0 X-Originating-IP: [184.145.137.27] In-Reply-To: <20170302154845.GB3503@altlinux.org> References: <20170226010156.GA28831@altlinux.org> <20170302154845.GB3503@altlinux.org> From: "Carlos O'Donell" Date: Fri, 3 Mar 2017 20:23:20 -0500 Message-ID: Subject: Re: [PATCH] uapi: fix asm/signal.h userspace compilation errors To: "Dmitry V. Levin" Cc: Arnd Bergmann , Russell King , Haavard Skinnemoen , Hans-Christian Egtvedt , Mikael Starvik , Jesper Nilsson , Yoshinori Sato , Tony Luck , Fenghua Yu , Geert Uytterhoeven , Ralf Baechle , David Howells , "James E.J. Bottomley" , Helge Deller , Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , Martin Schwidefsky , Heiko Carstens , "David S. Miller" , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , x86@kernel.org, Chris Zankel , Max Filippov , linux-arch , "linux-alpha@vger.kernel.org" , Linux ARM , linux-cris-kernel@axis.com, uclinux-h8-devel@lists.sourceforge.jp, linux-ia64@vger.kernel.org, linux-m68k@vger.kernel.org, "linux-mips@linux-mips.org" , linux-am33-list@redhat.com, linux-parisc , linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, "linux-xtensa@linux-xtensa.org" , Linux Kernel Mailing List Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2317 Lines: 52 On Thu, Mar 2, 2017 at 10:48 AM, Dmitry V. Levin wrote: > On Thu, Mar 02, 2017 at 10:22:18AM -0500, Carlos O'Donell wrote: >> On Wed, Mar 1, 2017 at 11:20 AM, Arnd Bergmann wrote: >> > On Sun, Feb 26, 2017 at 2:01 AM, Dmitry V. Levin wrote: >> >> Include (guarded by #ifndef __KERNEL__) to fix asm/signal.h >> >> userspace compilation errors like this: >> >> >> >> /usr/include/asm/signal.h:126:2: error: unknown type name 'size_t' >> >> size_t ss_size; >> >> >> >> As no uapi header provides a definition of size_t, inclusion >> >> of seems to be the most conservative fix available. > [...] >> > I'm not sure if this is the best fix. We generally should not include one >> > standard header from another standard header. Would it be possible >> > to use __kernel_size_t instead of size_t? >> >> In glibc we handle this with special use of __need_size_t with GCC's >> provided stddef.h. >> >> For example glibc's signal.h does this: >> >> # define __need_size_t >> # include > > Just to make it clear, do you suggest this approach for asm/signal.h as well? The kernel is duplicating userspace headers in the UAPI implementation and running into exactly the same problems we have already solved in userspace. We currently have no better solution than the "__need_*" interface for avoiding the duplication of the type definitions and the problems that come with that. I am taking this up with senior glibc developers on libc-alpha to see if we have a better suggestion. If you give me 72 hours I'll either have a better suggestion or the acknowledgement that my suggestion is the best practical solution we have. Note that in a GNU userspace stddef.h here comes from gcc, which completes the implementation of the C development environment that provides the types you need. The use of "__need_size_t" is a collusion between the components of the implementation and use by the Linux kernel would mean expecting something specific to a GNU implementation. I might suggest you use include/uapi/linux/libc-compat.h in an attempt to abstract away the GNU-specific magic for getting just size_t from stddef.h. That way you have documented the places that other runtime authors need to fill out for things to work. Cheers, Carlos.