Date: Tue, 27 Jun 2017 07:02:07 +0200 From: Jan Beich <jbeich@FreeBSD.org> To: Ed Schouten <ed@FreeBSD.org> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r320240 - head/include Message-ID: <d19q-ja5s-wny@FreeBSD.org> References: <201706221839.v5MIdqK3065947@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Ed Schouten <ed@FreeBSD.org> writes: > Author: ed > Date: Thu Jun 22 18:39:52 2017 > New Revision: 320240 > URL: https://svnweb.freebsd.org/changeset/base/320240 > > Log: > Use __ISO_C_VISIBLE, as opposed to testing __STDC_VERSION__. > > FreeBSD's C library uses __STDC_VERSION__ to determine whether the > compiler provides language features specific to a certain version of the > C standard. __ISO_C_VISIBLE is used to specify which library features > need to be exposed. > > max_align_t currently uses __STDC_VERSION__, even though it should be > using __ISO_C_VISIBLE to remain consistent with the rest of the headers > in include/. > > Reviewed by: dim > MFC after: 1 month > Differential Revision: https://reviews.freebsd.org/D11303 > > Modified: > head/include/stddef.h > > Modified: head/include/stddef.h > ============================================================================== > --- head/include/stddef.h Thu Jun 22 17:10:34 2017 (r320239) > +++ head/include/stddef.h Thu Jun 22 18:39:52 2017 (r320240) > @@ -62,7 +62,7 @@ typedef ___wchar_t wchar_t; > #endif > #endif > > -#if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L > +#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L > #ifndef __CLANG_MAX_ALIGN_T_DEFINED > typedef __max_align_t max_align_t; > #define __CLANG_MAX_ALIGN_T_DEFINED max_align_t is now exposed even without -std=c11. #+begin_src c $ cat a.c #include <stddef.h> /* * a type with the most strict alignment requirements */ union max_align { char c; short s; long l; int i; float f; double d; void * v; void (*q)(void); }; typedef union max_align max_align_t; int main(int argc, char *argv[]) { return 0; } $ cc -std=gnu89 a.c a.c:18:14: error: typedef redefinition with different types ('void' vs '__max_align_t') typedef void max_align_t; ^ /usr/include/stddef.h:67:23: note: previous definition is here typedef __max_align_t max_align_t; ^ 1 error generated. #+end_src c thus regressing some ports e.g., #+begin_src c cc -o Unified_c_media_libnestegg_src0.o -c ... -std=gnu99 ... Unified_c_media_libnestegg_src0.c In file included from obj-i386-unknown-freebsd12.0/media/libnestegg/src/Unified_c_media_libnestegg_src0.c:2: In file included from media/libnestegg/src/halloc.c:19: media/libnestegg/src/align.h:42:25: error: typedef redefinition with different types ('union max_align' vs '__max_align_t') typedef union max_align max_align_t; ^ /usr/include/stddef.h:67:23: note: previous definition is here typedef __max_align_t max_align_t; ^ 1 error generated. #+end_src c https://lists.freebsd.org/pipermail/freebsd-pkg-fallout/Week-of-Mon-20170626/493679.html
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?d19q-ja5s-wny>