Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

util/consideredharmful: Use overloadable func attribute with clang #393

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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),
|       |        ^
kraj committed Nov 22, 2024

Verified

This commit was signed with the committer’s verified signature.
kraj Khem Raj
commit a50b136477d3b4b15b8acfb41a4dedd853228843
11 changes: 9 additions & 2 deletions src/util/consideredharmful.h
Original file line number Diff line number Diff line change
@@ -8,6 +8,7 @@

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

#include <stdio.h>

@@ -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")