]> git.eshelyaron.com Git - emacs.git/commitdiff
Port cleanup check to Oracle Studio 12.5
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 14 Jun 2017 18:01:02 +0000 (11:01 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 14 Jun 2017 18:01:41 +0000 (11:01 -0700)
* src/conf_post.h (__has_attribute_cleanup): Resurrect.
* src/emacs-module.c: Verify __has_attribute (cleanup), but in an
#if this time.

src/conf_post.h
src/emacs-module.c

index 18b096e2cf62d55b33dfa55a57e39eecd1ec3a3b..e1d6a9397d344058e82ca5f737a8106db64b4bf1 100644 (file)
@@ -57,10 +57,13 @@ typedef bool bool_bf;
 #endif
 
 /* Simulate __has_attribute on compilers that lack it.  It is used only
-   on arguments like alloc_size that are handled in this simulation.  */
+   on arguments like alloc_size that are handled in this simulation.
+   __has_attribute should be used only in #if expressions, as Oracle
+   Studio 12.5's __has_attribute does not work in plain code.  */
 #ifndef __has_attribute
 # define __has_attribute(a) __has_attribute_##a
 # define __has_attribute_alloc_size GNUC_PREREQ (4, 3, 0)
+# define __has_attribute_cleanup GNUC_PREREQ (3, 4, 0)
 # define __has_attribute_externally_visible GNUC_PREREQ (4, 1, 0)
 # define __has_attribute_no_address_safety_analysis false
 # define __has_attribute_no_sanitize_address GNUC_PREREQ (4, 8, 0)
index de62329b3b8b3795eb8523c47f632d4f2f481e19..5c413ee0556d1833902e80a43f19bccad21cb044 100644 (file)
@@ -170,6 +170,10 @@ static struct emacs_env_private global_env_private;
                   internal_handler_##handlertype,                             \
                   internal_cleanup_##handlertype)
 
+#if !__has_attribute (cleanup)
+ #error "__attribute__ ((cleanup)) not supported by this compiler; try GCC"
+#endif
+
 /* It is very important that pushing the handler doesn't itself raise
    a signal.  Install the cleanup only after the handler has been
    pushed.  Use __attribute__ ((cleanup)) to avoid