Module Name: src Committed By: kamil Date: Tue Dec 4 22:06:37 UTC 2018
Modified Files: src/sys/sys: cdefs.h Log Message: Stop mangling __func__ for C++11 and newer Drop local logic between GCC 2.4 and GCC 2.6 that used __PRETTY_FUNCTION__. This caused __func__ to be redefined for all C++ programs and use a different behavior than intended by the compiler (Clang and GCC). __PRETTY_FUNCTION__ prints all the prototype not just function name, contrary to __FUNCTION__ and __func__. __func__ is now an integral part of C99 and C++11, shipped by a compiler. This change aligns the behavior of C++ programs using __func__ to other Operating Systems. The difference caused unnecessary fallout in regression test suites in projects (LLVM, fish, ...). To generate a diff of this commit: cvs rdiff -u -r1.137 -r1.138 src/sys/sys/cdefs.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/sys/cdefs.h diff -u src/sys/sys/cdefs.h:1.137 src/sys/sys/cdefs.h:1.138 --- src/sys/sys/cdefs.h:1.137 Wed Aug 22 12:07:43 2018 +++ src/sys/sys/cdefs.h Tue Dec 4 22:06:36 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: cdefs.h,v 1.137 2018/08/22 12:07:43 maxv Exp $ */ +/* $NetBSD: cdefs.h,v 1.138 2018/12/04 22:06:36 kamil Exp $ */ /* * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. @@ -414,18 +414,16 @@ #endif /* - * C99 defines __func__ predefined identifier, which was made available - * in GCC 2.95. + * C99 and C++11 define __func__ predefined identifier, which was made + * available in GCC 2.95. */ -#if !(__STDC_VERSION__ >= 199901L) -#if __GNUC_PREREQ__(2, 6) -#define __func__ __PRETTY_FUNCTION__ -#elif __GNUC_PREREQ__(2, 4) +#if !(__STDC_VERSION__ >= 199901L) && !(__cplusplus - 0 >= 201103L) +#if __GNUC_PREREQ__(2, 4) #define __func__ __FUNCTION__ #else #define __func__ "" #endif -#endif /* !(__STDC_VERSION__ >= 199901L) */ +#endif /* !(__STDC_VERSION__ >= 199901L) && !(__cplusplus - 0 >= 201103L) */ #if defined(_KERNEL) #if defined(NO_KERNEL_RCSIDS)