From 69f113bb1545b82cc58e96f34b7f7b55d870ca55 Mon Sep 17 00:00:00 2001 From: joerg Date: Wed, 23 Sep 2015 11:58:56 +0000 Subject: __builtin_object_size may be delayed until codegen time by GCC, so certain asserts based on ICE never trigger. Clang makes the choice earlier to declare the size as unknown, so it would fail the assert. The check in question is clearly bogus as an array parameter is really just a fancy way to write a pointer -- no size information is preserved. --- mail/dovecot2/distinfo | 3 ++- mail/dovecot2/patches/patch-src_lib_buffer.h | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 mail/dovecot2/patches/patch-src_lib_buffer.h (limited to 'mail/dovecot2') diff --git a/mail/dovecot2/distinfo b/mail/dovecot2/distinfo index 75f6bfea436..46de8f7d344 100644 --- a/mail/dovecot2/distinfo +++ b/mail/dovecot2/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.56 2015/09/04 18:49:36 wiedi Exp $ +$NetBSD: distinfo,v 1.57 2015/09/23 11:58:56 joerg Exp $ SHA1 (dovecot-2.2.18.tar.gz) = 8309b5ef8d33d464eb7a6e1d3cba0b4e87c55eff RMD160 (dovecot-2.2.18.tar.gz) = 847ca54f76210d0f06b1471bee62d6fcdc7b02c7 @@ -7,5 +7,6 @@ SHA1 (patch-aa) = ea185011f0c1ee3aa1ff528e61f6f356fe385666 SHA1 (patch-ab) = d637a64feec8e4eafacda149cf0193aa1b70a054 SHA1 (patch-ae) = 51d8cb998cc2ded8bfc767710e465b752c50e656 SHA1 (patch-af) = c066e94dd6593d16eec3e66f5f4d26f021918498 +SHA1 (patch-src_lib_buffer.h) = e8b5cf89f7183f05403ef49512b23ac7f20b6b73 SHA1 (patch-src_lib_sendfile-util.c) = 6ed7c42aa84afce2d5eee9e405f9d15ec6fdbce9 SHA1 (patch-src_stats_mail-stats.h) = 90645c2aab956a0119630da4b71905db704bffda diff --git a/mail/dovecot2/patches/patch-src_lib_buffer.h b/mail/dovecot2/patches/patch-src_lib_buffer.h new file mode 100644 index 00000000000..620af77336c --- /dev/null +++ b/mail/dovecot2/patches/patch-src_lib_buffer.h @@ -0,0 +1,13 @@ +$NetBSD: patch-src_lib_buffer.h,v 1.1 2015/09/23 11:58:56 joerg Exp $ + +--- src/lib/buffer.h.orig 2015-09-22 21:27:02.000000000 +0000 ++++ src/lib/buffer.h +@@ -20,7 +20,7 @@ void buffer_create_from_const_data(buffe + const void *data, size_t size); + #if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) > 401 + #define buffer_create_from_data(b,d,s) ({ \ +- (void)COMPILE_ERROR_IF_TRUE(__builtin_object_size((d),3) < ((s)?(s):1)); \ ++ (void)COMPILE_ERROR_IF_TRUE(__builtin_object_size((d),3) != 0 && __builtin_object_size((d),3) < ((s)?(s):1)); \ + buffer_create_from_data((b), (d), (s)); }) + #define buffer_create_from_const_data(b,d,s) ({ \ + (void)COMPILE_ERROR_IF_TRUE(__builtin_object_size((d),3) < ((s)?(s):1)); \ -- cgit v1.2.3