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