Skip to content

Commit

Permalink
util/consideredharmful: Use overloadable func attribute with clang
Browse files Browse the repository at this point in the history
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 [#393]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
  • Loading branch information
kraj committed Nov 22, 2024
1 parent ed37f0c commit 9809599
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions src/util/consideredharmful.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#pragma once
#include "taisei.h"
#include "util/compat.h"

#include <stdio.h>

Expand All @@ -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")
Expand Down

0 comments on commit 9809599

Please sign in to comment.