svn commit: r354672 - head/lib/libc/secure
Pedro Giffuni
pfg at FreeBSD.org
Wed Nov 13 04:04:16 UTC 2019
On 12/11/2019 22:00, Kyle Evans wrote:
> Author: kevans
> Date: Wed Nov 13 03:00:32 2019
> New Revision: 354672
> URL: https://svnweb.freebsd.org/changeset/base/354672
>
> Log:
> ssp: rework the logic to use priority=200 on clang builds
>
> The preproc logic was added at the last minute to appease GCC 4.2, and
> kevans@ did clearly not go back and double-check that the logic worked out
> for clang builds to use the new variant.
>
> It turns out that clang defines __GNUC__ == 4. Flip it around and check
> __clang__ as well, leaving a note to remove it later.
>
clang reports itself as GCC 4.2, the priority argument was introduced in
GCC 4.3.
> Reported by: cem
>
> Modified:
> head/lib/libc/secure/stack_protector.c
>
> Modified: head/lib/libc/secure/stack_protector.c
> ==============================================================================
> --- head/lib/libc/secure/stack_protector.c Wed Nov 13 02:22:00 2019 (r354671)
> +++ head/lib/libc/secure/stack_protector.c Wed Nov 13 03:00:32 2019 (r354672)
> @@ -47,13 +47,15 @@ __FBSDID("$FreeBSD$");
> * they're either not usually statically linked or they simply don't do things
> * in constructors that would be adversely affected by their positioning with
> * respect to this initialization.
> + *
> + * This conditional should be removed when GCC 4.2 is removed.
> */
> -#if defined(__GNUC__) && __GNUC__ <= 4
> -#define _GUARD_SETUP_CTOR_ATTR \
> - __attribute__((__constructor__, __used__));
> -#else
> +#if defined(__clang__) || (defined(__GNUC__) && __GNUC__ > 4)
> #define _GUARD_SETUP_CTOR_ATTR \
> __attribute__((__constructor__ (200), __used__));
> +#else
> +#define _GUARD_SETUP_CTOR_ATTR \
> + __attribute__((__constructor__, __used__));
> #endif
>
> extern int __sysctl(const int *name, u_int namelen, void *oldp,
Please fix properly. Assuming clang always supported it, something like:
#if __GNUC_PREREQ__(4, 3) || __has_attribute(__constructor__)
should work
Cheers,
Pedro.
More information about the svn-src-all
mailing list