svn commit: r328973 - in stable/11: include sys/sys

Pedro Giffuni pfg at FreeBSD.org
Sun Feb 11 16:54:47 UTC 2018


...

On 11/02/2018 05:24, Hans Petter Selasky wrote:
> On 02/11/18 11:09, Antoine Brodin wrote:
>> On Sun, Feb 11, 2018 at 8:01 AM, Antoine Brodin <antoine at freebsd.org> 
>> wrote:
>>> On Wed, Feb 7, 2018 at 4:06 PM, Hans Petter Selasky
>>> <hselasky at freebsd.org> wrote:
>>>> Author: hselasky
>>>> Date: Wed Feb  7 15:06:54 2018
>>>> New Revision: 328973
>>>> URL: https://svnweb.freebsd.org/changeset/base/328973
>>>>
>>>> Log:
>>>>    MFC r328237:
>>>>    Use the __alloc_size2 attribute where relevant.
>>>>
>>>>    This follows the documented use in GCC. It is basically only 
>>>> relevant for
>>>>    calloc(3), reallocarray(3) and  mallocarray(9).
>>>>
>>>>    NOTE: Without this change clang 5.0.1 can produce incorrect 
>>>> optimisation
>>>>    code for static processing of data using the allocated object. 
>>>> For example
>>>>    this has been seen compiling the mlx4 core module, which 
>>>> allocates a
>>>>    fixed size array which is then sorted by a fixed order loop. The
>>>>    optimised result, -O2, is incorrect unless this patch is in place.
>>>>
>>>>    Suggested by: Mark Millard
>>>>    Reference: 
>>>> https://docs.freebsd.org/cgi/mid.cgi?9DE674C6-EAA3-4E8A-906F-446E74D82FC4
>>>>
>>>> Modified:
>>>>    stable/11/include/stdlib.h
>>>>    stable/11/sys/sys/malloc.h
>>>> Directory Properties:
>>>>    stable/11/   (props changed)
>>>
>>> Hi,
>>>
>>> Please revert this change.  Lots of ports that used to build fine on
>>> stable/11 are now failing.
>>> /usr/include/stdlib.h:93:7: error: expected function body after
>>> function declarator
>>>               __alloc_size2(1, 2);
>>
>
> Hi Antoine,
>
> I'm sorry for the inconvenience. Probably I should have sent this 
> patch for portmgr first, to avoid such breakage. This patch is 
> required also for ports, and it is good you are now rebuilding ports 
> which use this define, because they might be broken due to the fact 
> the __alloc_size2() was incorrectly implemented!
>
> I hope this will be the end of the breakage:
>
> https://svnweb.freebsd.org/changeset/base/329122
>
> Else I will revert both patches and have you test them first.
>
> --HPS
>
While the lint mode definition was missing, I didn't merge the attribute 
uses (r328237) on purpose as I knew they could bring issues. Some rather 
broken ports like to take the standard headers and "fix" them. In 
essence, any port that requires an attribute defined in sys/cdefs.h is 
doing something wrong.

The most notable offender was GCC but I think that was fixed: in any 
case, the last time I merged an attribute change I had to wait for the 
next release to start using it.

Cheers,

Pedro.



More information about the svn-src-stable-11 mailing list