From eec358d70a9d3b135e73f3f9a16077cd809f66e9 Mon Sep 17 00:00:00 2001 From: Dirk Zimoch Date: Fri, 7 Nov 2025 16:43:02 +0100 Subject: [PATCH] added __attribute__((__malloc__)) for gcc and clang --- modules/libcom/src/misc/cantProceed.h | 5 +++-- modules/libcom/src/osi/compiler/clang/compilerSpecific.h | 5 +++++ modules/libcom/src/osi/compiler/gcc/compilerSpecific.h | 5 +++++ modules/libcom/src/osi/compilerDependencies.h | 4 ++++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/modules/libcom/src/misc/cantProceed.h b/modules/libcom/src/misc/cantProceed.h index 2150ead3f..5fe4e748f 100644 --- a/modules/libcom/src/misc/cantProceed.h +++ b/modules/libcom/src/misc/cantProceed.h @@ -67,7 +67,7 @@ void cantProceed( * Will never return NULL otherwise. */ LIBCOM_API void * callocMustSucceed(size_t count, size_t size, - const char *errorMessage); + const char *errorMessage) EPICS_MALLOC; /** \brief A malloc() which suspends on error. * \param size Size of block to allocate. * \param errorMessage Context added to logged error message @@ -76,7 +76,8 @@ LIBCOM_API void * callocMustSucceed(size_t count, size_t size, * Will always return NULL for a zero length allocation. * Will never return NULL otherwise. */ -LIBCOM_API void * mallocMustSucceed(size_t size, const char *errorMessage); +LIBCOM_API void * mallocMustSucceed(size_t size, const char *errorMessage) + EPICS_MALLOC; /** @} */ #ifdef __cplusplus diff --git a/modules/libcom/src/osi/compiler/clang/compilerSpecific.h b/modules/libcom/src/osi/compiler/clang/compilerSpecific.h index bf2474a55..1bdd07eec 100644 --- a/modules/libcom/src/osi/compiler/clang/compilerSpecific.h +++ b/modules/libcom/src/osi/compiler/clang/compilerSpecific.h @@ -63,4 +63,9 @@ */ #define EPICS_NORETURN __attribute__((noreturn)) +/* + * malloc marker + */ +#define EPICS_MALLOC __attribute__((__malloc__)) + #endif /* ifndef compilerSpecific_h */ diff --git a/modules/libcom/src/osi/compiler/gcc/compilerSpecific.h b/modules/libcom/src/osi/compiler/gcc/compilerSpecific.h index 80b72012f..37b2fe0a7 100644 --- a/modules/libcom/src/osi/compiler/gcc/compilerSpecific.h +++ b/modules/libcom/src/osi/compiler/gcc/compilerSpecific.h @@ -69,4 +69,9 @@ #define EPICS_NORETURN __attribute__((noreturn)) #endif +/* + * malloc marker + */ +#define EPICS_MALLOC __attribute__((__malloc__)) + #endif /* ifndef compilerSpecific_h */ diff --git a/modules/libcom/src/osi/compilerDependencies.h b/modules/libcom/src/osi/compilerDependencies.h index 55762ee20..cf172531e 100644 --- a/modules/libcom/src/osi/compilerDependencies.h +++ b/modules/libcom/src/osi/compilerDependencies.h @@ -56,6 +56,10 @@ # define EPICS_NORETURN #endif +#ifndef EPICS_MALLOC +# define EPICS_MALLOC +#endif + #ifndef EPICS_FUNCTION #if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)) || (defined(__cplusplus) && __cplusplus>=201103L) # define EPICS_FUNCTION __func__