From 9809599ac7827f22b7e0e4ab0e34bb9a2dd1677c Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Fri, 22 Nov 2024 01:16:25 -0800 Subject: [PATCH] util/consideredharmful: Use overloadable func attribute with clang When building with glibc HEAD, it has fortified headers with clang as well and clang reports errors e.g. | ../git/src/util/consideredharmful.h:33:7: error: redeclaration of 'strncat' must have the 'overloadable' attribute | 33 | char* strncat(); | | ^ | /mnt/b/yoe/master/build/tmp/work/core2-64-yoe-linux/taisei/1.4.2/recipe-sysroot/usr/include/bits/string_fortified.h:145:8: note: previous overload of function is here | 145 | __NTH (strncat (__fortify_clang_overload_arg (char *, __restrict, __dest), | | ^ Upstream-Status: Submitted [https://github.com/taisei-project/taisei/pull/393] Signed-off-by: Khem Raj --- src/util/consideredharmful.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/util/consideredharmful.h b/src/util/consideredharmful.h index 3fe1f0473..2b5c11280 100644 --- a/src/util/consideredharmful.h +++ b/src/util/consideredharmful.h @@ -8,6 +8,7 @@ #pragma once #include "taisei.h" +#include "util/compat.h" #include @@ -24,17 +25,23 @@ PRAGMA(GCC diagnostic ignored "-Wstrict-prototypes") // clang generates lots of these warnings with _FORTIFY_SOURCE PRAGMA(GCC diagnostic ignored "-Wignored-attributes") +#ifdef __GLIBC__ +#define OVERLOADABLE __attribute__((overloadable)) +#else +#define OVERLOADABLE +#endif + #undef fopen attr_deprecated("Use vfs_open or SDL_RWFromFile instead") FILE* fopen(); #undef strncat attr_deprecated("This function likely doesn't do what you expect, use strlcat") -char* strncat(); +char* OVERLOADABLE strncat(); #undef strncpy attr_deprecated("This function likely doesn't do what you expect, use strlcpy") -char* strncpy(); +char* OVERLOADABLE strncpy(); #undef errx attr_deprecated("Use log_fatal instead")