emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 9be8b2b 06/14: Use ATTRIBUTE_MAY_ALIAS where alias


From: Philipp Stephani
Subject: [Emacs-diffs] master 9be8b2b 06/14: Use ATTRIBUTE_MAY_ALIAS where alias violations are likely
Date: Sun, 4 Jun 2017 13:54:06 -0400 (EDT)

branch: master
commit 9be8b2bf1d1679e7b60dd7d2dbfef2c68f046938
Author: Philipp Stephani <address@hidden>
Commit: Philipp Stephani <address@hidden>

    Use ATTRIBUTE_MAY_ALIAS where alias violations are likely
    
    In particular, alias violations are likely for the return values of
    dlsym(3), which get cast around arbitrarily.
    
    * src/emacs-module.c (Fmodule_load): Use ATTRIBUTE_MAY_ALIAS.
---
 src/dynlib.h       | 11 +++++++----
 src/emacs-module.c |  2 +-
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/dynlib.h b/src/dynlib.h
index 6246c6a..1d53b8e 100644
--- a/src/dynlib.h
+++ b/src/dynlib.h
@@ -24,11 +24,14 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.  */
 
 typedef void *dynlib_handle_ptr;
 dynlib_handle_ptr dynlib_open (const char *path);
-void *dynlib_sym (dynlib_handle_ptr h, const char *sym);
-typedef struct dynlib_function_ptr_nonce *(*dynlib_function_ptr) (void);
-dynlib_function_ptr dynlib_func (dynlib_handle_ptr h, const char *sym);
-const char *dynlib_error (void);
 int dynlib_close (dynlib_handle_ptr h);
+const char *dynlib_error (void);
+
+ATTRIBUTE_MAY_ALIAS void *dynlib_sym (dynlib_handle_ptr h, const char *sym);
+
+typedef struct dynlib_function_ptr_nonce *(ATTRIBUTE_MAY_ALIAS 
*dynlib_function_ptr) (void);
+dynlib_function_ptr dynlib_func (dynlib_handle_ptr h, const char *sym);
+
 /* Sets *FILE to the file name from which PTR was loaded, and *SYM to
    its symbol name.  If the file or symbol name could not be
    determined, set the corresponding argument to NULL.  */
diff --git a/src/emacs-module.c b/src/emacs-module.c
index 0fb126e..c276eda 100644
--- a/src/emacs-module.c
+++ b/src/emacs-module.c
@@ -658,7 +658,7 @@ funcall_module (Lisp_Object function, ptrdiff_t nargs, 
Lisp_Object *arglist)
   initialize_environment (&pub, &priv);
 
   USE_SAFE_ALLOCA;
-  emacs_value *args;
+  ATTRIBUTE_MAY_ALIAS emacs_value *args;
   if (plain_values)
     args = (emacs_value *) arglist;
   else



reply via email to

[Prev in Thread] Current Thread [Next in Thread]