Add an autoconf feature test for format_arg and a jemalloc-specific
macro for it.
This commit is contained in:
parent
14e4176758
commit
7f7935cf78
12
configure.ac
12
configure.ac
@ -851,6 +851,18 @@ if test "x${je_cv_format_printf}" = "xyes" ; then
|
|||||||
AC_DEFINE([JEMALLOC_HAVE_ATTR_FORMAT_PRINTF], [ ])
|
AC_DEFINE([JEMALLOC_HAVE_ATTR_FORMAT_PRINTF], [ ])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
dnl Check for format_arg(...) attribute support.
|
||||||
|
JE_CFLAGS_SAVE()
|
||||||
|
JE_CFLAGS_ADD([-Werror])
|
||||||
|
JE_CFLAGS_ADD([-herror_on_warning])
|
||||||
|
JE_COMPILABLE([format(printf, ...) attribute], [#include <stdlib.h>],
|
||||||
|
[const char * __attribute__((__format_arg__(1))) foo(const char *format);],
|
||||||
|
[je_cv_format_arg])
|
||||||
|
JE_CFLAGS_RESTORE()
|
||||||
|
if test "x${je_cv_format_arg}" = "xyes" ; then
|
||||||
|
AC_DEFINE([JEMALLOC_HAVE_ATTR_FORMAT_ARG], [ ])
|
||||||
|
fi
|
||||||
|
|
||||||
dnl Support optional additions to rpath.
|
dnl Support optional additions to rpath.
|
||||||
AC_ARG_WITH([rpath],
|
AC_ARG_WITH([rpath],
|
||||||
[AS_HELP_STRING([--with-rpath=<rpath>], [Colon-separated rpath (ELF systems only)])],
|
[AS_HELP_STRING([--with-rpath=<rpath>], [Colon-separated rpath (ELF systems only)])],
|
||||||
|
@ -86,7 +86,7 @@ emitter_printf(emitter_t *emitter, const char *format, ...) {
|
|||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline const char * __attribute__((__format_arg__(3)))
|
static inline const char * JEMALLOC_FORMAT_ARG(3)
|
||||||
emitter_gen_fmt(char *out_fmt, size_t out_size, const char *fmt_specifier,
|
emitter_gen_fmt(char *out_fmt, size_t out_size, const char *fmt_specifier,
|
||||||
emitter_justify_t justify, int width) {
|
emitter_justify_t justify, int width) {
|
||||||
size_t written;
|
size_t written;
|
||||||
|
@ -4,6 +4,9 @@
|
|||||||
/* Defined if alloc_size attribute is supported. */
|
/* Defined if alloc_size attribute is supported. */
|
||||||
#undef JEMALLOC_HAVE_ATTR_ALLOC_SIZE
|
#undef JEMALLOC_HAVE_ATTR_ALLOC_SIZE
|
||||||
|
|
||||||
|
/* Defined if format_arg(...) attribute is supported. */
|
||||||
|
#undef JEMALLOC_HAVE_ATTR_FORMAT_ARG
|
||||||
|
|
||||||
/* Defined if format(gnu_printf, ...) attribute is supported. */
|
/* Defined if format(gnu_printf, ...) attribute is supported. */
|
||||||
#undef JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF
|
#undef JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF
|
||||||
|
|
||||||
|
@ -69,6 +69,7 @@
|
|||||||
# define JEMALLOC_EXPORT __declspec(dllimport)
|
# define JEMALLOC_EXPORT __declspec(dllimport)
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
|
# define JEMALLOC_FORMAT_ARG(i)
|
||||||
# define JEMALLOC_FORMAT_PRINTF(s, i)
|
# define JEMALLOC_FORMAT_PRINTF(s, i)
|
||||||
# define JEMALLOC_NOINLINE __declspec(noinline)
|
# define JEMALLOC_NOINLINE __declspec(noinline)
|
||||||
# ifdef __cplusplus
|
# ifdef __cplusplus
|
||||||
@ -96,6 +97,11 @@
|
|||||||
# ifndef JEMALLOC_EXPORT
|
# ifndef JEMALLOC_EXPORT
|
||||||
# define JEMALLOC_EXPORT JEMALLOC_ATTR(visibility("default"))
|
# define JEMALLOC_EXPORT JEMALLOC_ATTR(visibility("default"))
|
||||||
# endif
|
# endif
|
||||||
|
# ifdef JEMALLOC_HAVE_ATTR_FORMAT_ARG
|
||||||
|
# define JEMALLOC_FORMAT_ARG(i) JEMALLOC_ATTR(__format_arg__(3))
|
||||||
|
# else
|
||||||
|
# define JEMALLOC_FORMAT_ARG(i)
|
||||||
|
# endif
|
||||||
# ifdef JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF
|
# ifdef JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF
|
||||||
# define JEMALLOC_FORMAT_PRINTF(s, i) JEMALLOC_ATTR(format(gnu_printf, s, i))
|
# define JEMALLOC_FORMAT_PRINTF(s, i) JEMALLOC_ATTR(format(gnu_printf, s, i))
|
||||||
# elif defined(JEMALLOC_HAVE_ATTR_FORMAT_PRINTF)
|
# elif defined(JEMALLOC_HAVE_ATTR_FORMAT_PRINTF)
|
||||||
|
Loading…
Reference in New Issue
Block a user