From da3078c63a3b658573f6e2f986f69ed4d7993b3a Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Thu, 31 Jul 2003 11:17:39 +0000 Subject: [PATCH] Check if the compiler knows about the __malloc__ attribute. --- configure.in | 5 ++++- lib/list.h | 4 ++-- m4/attribute.m4 | 25 +++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 m4/attribute.m4 diff --git a/configure.in b/configure.in index d7754f90..5fe9f4d4 100644 --- a/configure.in +++ b/configure.in @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Id: configure.in,v 1.13.2.76 2003/07/30 11:50:44 guus Exp $ +dnl $Id: configure.in,v 1.13.2.77 2003/07/31 11:17:39 guus Exp $ AC_PREREQ(2.57) AC_INIT(src/tincd.c) @@ -109,11 +109,14 @@ AC_CHECK_HEADERS([net/ethernet.h net/if.h net/if_arp.h netinet/if_ether.h netine dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST +AC_C_VOLATILE AC_TYPE_PID_T AC_TYPE_SIZE_T AC_HEADER_TIME AC_STRUCT_TM +tinc_ATTRIBUTE(__malloc__) + AC_CHECK_TYPES([socklen_t, struct arphdr, struct ether_arp, struct in_addr, struct addrinfo, struct ip, struct icmp, struct in6_addr, struct sockaddr_in6, struct ip6_hdr, struct icmp6_hdr, struct nd_neighbor_solicit, struct nd_opt_hdr], , , [#ifdef HAVE_SYS_TYPES_H #include diff --git a/lib/list.h b/lib/list.h index ff540928..c53e8013 100644 --- a/lib/list.h +++ b/lib/list.h @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: list.h,v 1.1.2.10 2003/07/12 17:48:38 guus Exp $ + $Id: list.h,v 1.1.2.11 2003/07/31 11:17:39 guus Exp $ */ #ifndef __TINC_LIST_H__ @@ -47,7 +47,7 @@ typedef struct list_t { /* (De)constructors */ -extern list_t *list_alloc(list_action_t) __attribute__ ((malloc)); +extern list_t *list_alloc(list_action_t) __attribute__ ((__malloc__)); extern void list_free(list_t *); extern list_node_t *list_alloc_node(void); extern void list_free_node(list_t *, list_node_t *); diff --git a/m4/attribute.m4 b/m4/attribute.m4 new file mode 100644 index 00000000..58b83467 --- /dev/null +++ b/m4/attribute.m4 @@ -0,0 +1,25 @@ +dnl Check to find out whether function attributes are supported. +dnl If they are not, #define them to be nothing. + +AC_DEFUN(tinc_ATTRIBUTE, +[ + AC_CACHE_CHECK([for working $1 attribute], tinc_cv_attribute_$1, + [ + tempcflags="$CFLAGS" + CFLAGS="$CFLAGS -Wall -Werror" + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [void test(void) __attribute__ (($1)); + void test(void) { return; } + ], + )], + [tinc_cv_attribute_$1=yes], + [tinc_cv_attribute_$1=no] + ) + CFLAGS="$tempcflags" + ]) + + if test ${tinc_cv_attribute_$1} = no; then + AC_DEFINE([$1], [], [Defined if the $1 attribute is not supported.]) + fi +]) -- 2.39.5