Date: Mon, 27 Nov 2023 11:13:27 -0700 From: Warner Losh <imp@bsdimp.com> To: John Baldwin <jhb@freebsd.org> Cc: Warner Losh <imp@freebsd.org>, src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 17a238a15fbe - main - cdefs: Remove __func__ define Message-ID: <CANCZdfrt7nJROjjD0RfNKTwY4=g=tiTBdLu=2UkFN%2BhznrCENA@mail.gmail.com> In-Reply-To: <136388c6-424f-427f-8584-fededcf1cede@FreeBSD.org> References: <202311270525.3AR5PK1V067372@gitrepo.freebsd.org> <136388c6-424f-427f-8584-fededcf1cede@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --] On Mon, Nov 27, 2023 at 10:50 AM John Baldwin <jhb@freebsd.org> wrote: > On 11/26/23 9:25 PM, Warner Losh wrote: > > The branch main has been updated by imp: > > > > URL: > https://cgit.FreeBSD.org/src/commit/?id=17a238a15fbed01477fbc54744d35cbccdb65871 > > > > commit 17a238a15fbed01477fbc54744d35cbccdb65871 > > Author: Warner Losh <imp@FreeBSD.org> > > AuthorDate: 2023-11-20 23:34:22 +0000 > > Commit: Warner Losh <imp@FreeBSD.org> > > CommitDate: 2023-11-27 05:24:02 +0000 > > > > cdefs: Remove __func__ define > > > > We require an ANSI-C compiler to build the base system. It's > required > > that __func__ work. Remove this define since the only known problem > > compilers are ancient history (gcc 2.6 from 1994, almost pre-dating > the > > project). 3rd party code that used this define will now need to > provide > > it via some other means when using non-ansi-c compilers. > > > > PR: 275221 (exp-run) > > Sponsored by: Netflix > > --- > > sys/sys/cdefs.h | 40 > ++------------------------------------ > > tests/sys/opencrypto/cryptodevh.py | 4 ---- > > 2 files changed, 2 insertions(+), 42 deletions(-) > > > > diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h > > index c5b6190077b3..bcbf418f9323 100644 > > --- a/sys/sys/cdefs.h > > +++ b/sys/sys/cdefs.h > > @@ -96,14 +96,9 @@ > > /* > > * The __CONCAT macro is used to concatenate parts of symbol names, > e.g. > > * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo. > > - * The __CONCAT macro is a bit tricky to use if it must work in non-ANSI > > - * mode -- there must be no spaces between its arguments, and for nested > > - * __CONCAT's, all the __CONCAT's must be at the left. __CONCAT can > also > > - * concatenate double-quoted strings produced by the __STRING macro, but > > - * this only works with ANSI C. > > * > > * __XSTRING is like __STRING, but it expands any macros in its > argument > > - * first. It is only available with ANSI C. > > + * first. > > */ > > #if defined(__STDC__) || defined(__cplusplus) > > #define __P(protos) protos /* full-blown ANSI C */ > > @@ -122,33 +117,7 @@ > > #define __inline /* delete GCC keyword */ > > #endif /* ! __CC_SUPPORTS___INLINE */ > > #endif /* !__cplusplus */ > > - > > -#else /* !(__STDC__ || __cplusplus) */ > > -#define __P(protos) () /* traditional C > preprocessor */ > > -#define __CONCAT(x,y) x/**/y > > -#define __STRING(x) "x" > > - > > -#if !defined(__CC_SUPPORTS___INLINE) > > -#define __const /* delete pseudo-ANSI C > keywords */ > > -#define __inline > > -#define __signed > > -#define __volatile > > -/* > > - * In non-ANSI C environments, new programs will want ANSI-only C > keywords > > - * deleted from the program and old programs will want them left alone. > > - * When using a compiler other than gcc, programs using the ANSI C > keywords > > - * const, inline etc. as normal identifiers should define > -DNO_ANSI_KEYWORDS. > > - * When using "gcc -traditional", we assume that this is the intent; if > > - * __GNUC__ is defined but __STDC__ is not, we leave the new keywords > alone. > > - */ > > -#ifndef NO_ANSI_KEYWORDS > > -#define const /* delete ANSI C keywords > */ > > -#define inline > > -#define signed > > -#define volatile > > -#endif /* !NO_ANSI_KEYWORDS */ > > -#endif /* !__CC_SUPPORTS___INLINE */ > > -#endif /* !(__STDC__ || __cplusplus) */ > > +#endif /* __STDC__ || __cplusplus */ > > > > /* > > * Compiler-dependent macros to help declare dead (non-returning) and > > @@ -343,11 +312,6 @@ > > #define __unreachable() ((void)0) > > #endif > > > > -/* XXX: should use `#if __STDC_VERSION__ < 199901'. */ > > -#if !__GNUC_PREREQ__(2, 7) > > -#define __func__ NULL > > -#endif > > - > > #if (defined(__GNUC__) && __GNUC__ >= 2) && !defined(__STRICT_ANSI__) > || __STDC_VERSION__ >= 199901 > > #define __LONG_LONG_SUPPORTED > > #endif > > This removed a lot more than just __func__? > Damn. It looks like future work got folded in here by accident... This is the 'remove support for pure K&R compilers' stuff I've talked about elsewhere. I'll revert and fix. Warner [-- Attachment #2 --] <div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Nov 27, 2023 at 10:50 AM John Baldwin <<a href="mailto:jhb@freebsd.org">jhb@freebsd.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 11/26/23 9:25 PM, Warner Losh wrote:<br> > The branch main has been updated by imp:<br> > <br> > URL: <a href="https://cgit.FreeBSD.org/src/commit/?id=17a238a15fbed01477fbc54744d35cbccdb65871" rel="noreferrer" target="_blank">https://cgit.FreeBSD.org/src/commit/?id=17a238a15fbed01477fbc54744d35cbccdb65871</a><br> > <br> > commit 17a238a15fbed01477fbc54744d35cbccdb65871<br> > Author: Warner Losh <imp@FreeBSD.org><br> > AuthorDate: 2023-11-20 23:34:22 +0000<br> > Commit: Warner Losh <imp@FreeBSD.org><br> > CommitDate: 2023-11-27 05:24:02 +0000<br> > <br> > cdefs: Remove __func__ define<br> > <br> > We require an ANSI-C compiler to build the base system. It's required<br> > that __func__ work. Remove this define since the only known problem<br> > compilers are ancient history (gcc 2.6 from 1994, almost pre-dating the<br> > project). 3rd party code that used this define will now need to provide<br> > it via some other means when using non-ansi-c compilers.<br> > <br> > PR: 275221 (exp-run)<br> > Sponsored by: Netflix<br> > ---<br> > sys/sys/cdefs.h | 40 ++------------------------------------<br> > tests/sys/opencrypto/cryptodevh.py | 4 ----<br> > 2 files changed, 2 insertions(+), 42 deletions(-)<br> > <br> > diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h<br> > index c5b6190077b3..bcbf418f9323 100644<br> > --- a/sys/sys/cdefs.h<br> > +++ b/sys/sys/cdefs.h<br> > @@ -96,14 +96,9 @@<br> > /*<br> > * The __CONCAT macro is used to concatenate parts of symbol names, e.g.<br> > * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.<br> > - * The __CONCAT macro is a bit tricky to use if it must work in non-ANSI<br> > - * mode -- there must be no spaces between its arguments, and for nested<br> > - * __CONCAT's, all the __CONCAT's must be at the left. __CONCAT can also<br> > - * concatenate double-quoted strings produced by the __STRING macro, but<br> > - * this only works with ANSI C.<br> > *<br> > * __XSTRING is like __STRING, but it expands any macros in its argument<br> > - * first. It is only available with ANSI C.<br> > + * first.<br> > */<br> > #if defined(__STDC__) || defined(__cplusplus)<br> > #define __P(protos) protos /* full-blown ANSI C */<br> > @@ -122,33 +117,7 @@<br> > #define __inline /* delete GCC keyword */<br> > #endif /* ! __CC_SUPPORTS___INLINE */<br> > #endif /* !__cplusplus */<br> > -<br> > -#else /* !(__STDC__ || __cplusplus) */<br> > -#define __P(protos) () /* traditional C preprocessor */<br> > -#define __CONCAT(x,y) x/**/y<br> > -#define __STRING(x) "x"<br> > -<br> > -#if !defined(__CC_SUPPORTS___INLINE)<br> > -#define __const /* delete pseudo-ANSI C keywords */<br> > -#define __inline<br> > -#define __signed<br> > -#define __volatile<br> > -/*<br> > - * In non-ANSI C environments, new programs will want ANSI-only C keywords<br> > - * deleted from the program and old programs will want them left alone.<br> > - * When using a compiler other than gcc, programs using the ANSI C keywords<br> > - * const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS.<br> > - * When using "gcc -traditional", we assume that this is the intent; if<br> > - * __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone.<br> > - */<br> > -#ifndef NO_ANSI_KEYWORDS<br> > -#define const /* delete ANSI C keywords */<br> > -#define inline<br> > -#define signed<br> > -#define volatile<br> > -#endif /* !NO_ANSI_KEYWORDS */<br> > -#endif /* !__CC_SUPPORTS___INLINE */<br> > -#endif /* !(__STDC__ || __cplusplus) */<br> > +#endif /* __STDC__ || __cplusplus */<br> > <br> > /*<br> > * Compiler-dependent macros to help declare dead (non-returning) and<br> > @@ -343,11 +312,6 @@<br> > #define __unreachable() ((void)0)<br> > #endif<br> > <br> > -/* XXX: should use `#if __STDC_VERSION__ < 199901'. */<br> > -#if !__GNUC_PREREQ__(2, 7)<br> > -#define __func__ NULL<br> > -#endif<br> > -<br> > #if (defined(__GNUC__) && __GNUC__ >= 2) && !defined(__STRICT_ANSI__) || __STDC_VERSION__ >= 199901<br> > #define __LONG_LONG_SUPPORTED<br> > #endif<br> <br> This removed a lot more than just __func__?<br></blockquote><div><br></div><div>Damn. It looks like future work got folded in here by accident... This is the 'remove support for</div><div>pure K&R compilers' stuff I've talked about elsewhere. I'll revert and fix.</div><div><br></div><div>Warner </div></div></div>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfrt7nJROjjD0RfNKTwY4=g=tiTBdLu=2UkFN%2BhznrCENA>
