Module Name:    src
Committed By:   martin
Date:           Sun Mar  3 11:10:16 UTC 2019

Modified Files:
        src/sys/sys [netbsd-8]: cdefs.h

Log Message:
Pull up following revision(s) (requested by kamil in ticket #1202):

        sys/sys/cdefs.h: revision 1.138

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.132.6.1 -r1.132.6.2 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.132.6.1 src/sys/sys/cdefs.h:1.132.6.2
--- src/sys/sys/cdefs.h:1.132.6.1	Sat Jan 13 21:33:14 2018
+++ src/sys/sys/cdefs.h	Sun Mar  3 11:10:16 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: cdefs.h,v 1.132.6.1 2018/01/13 21:33:14 snj Exp $	*/
+/*	$NetBSD: cdefs.h,v 1.132.6.2 2019/03/03 11:10:16 martin Exp $	*/
 
 /* * Copyright (c) 1991, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -405,18 +405,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)

Reply via email to