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.

_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to