freebsd: Fix obscure c++98 interaction used by gbenchmark (#335454)

This commit is contained in:
Jörg Thalheim 2024-09-19 14:00:59 +02:00 committed by GitHub
commit 4f91815a07
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 42 additions and 1 deletions

View File

@ -40,7 +40,7 @@ stdenv.mkDerivation rec {
description = "Microbenchmark support library";
homepage = "https://github.com/google/benchmark";
license = licenses.asl20;
platforms = platforms.linux ++ platforms.darwin;
platforms = platforms.linux ++ platforms.darwin ++ platforms.freebsd;
maintainers = with maintainers; [ abbradar ];
};
}

View File

@ -0,0 +1,41 @@
From 22cdafe197ac960c5ce839ef6ec699b59f4b0080 Mon Sep 17 00:00:00 2001
From: Warner Losh <imp@FreeBSD.org>
Date: Sat, 20 Jul 2024 09:57:53 -0600
Subject: cdefs.h: Don't define fallback for _Static_assert
Remove pre 4.6 code to define _Static_assert in terms of _COUNTER. We
no longer need to support compilers this old (in fact support for all
pre gcc 10 compilers has been removed in -current). This is a partial
MFC of that work because removing this fixes a bug that's oft reported
with -pedantic-errors and C++98 compilations.
PR: 280382, 276738
Sponsored by: Netflix
This is a direct commit to stable/14.
---
sys/sys/cdefs.h | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h
index 19b7d8fe427d..a52864c5db9d 100644
--- a/sys/sys/cdefs.h
+++ b/sys/sys/cdefs.h
@@ -277,15 +277,6 @@
#if (defined(__cplusplus) && __cplusplus >= 201103L) || \
__has_extension(cxx_static_assert)
#define _Static_assert(x, y) static_assert(x, y)
-#elif __GNUC_PREREQ__(4,6) && !defined(__cplusplus)
-/* Nothing, gcc 4.6 and higher has _Static_assert built-in */
-#elif defined(__COUNTER__)
-#define _Static_assert(x, y) __Static_assert(x, __COUNTER__)
-#define __Static_assert(x, y) ___Static_assert(x, y)
-#define ___Static_assert(x, y) typedef char __assert_ ## y[(x) ? 1 : -1] \
- __unused
-#else
-#define _Static_assert(x, y) struct __hack
#endif
#endif
--
cgit v1.2.3