From: Philipp Stephani Date: Sun, 4 Jun 2017 17:12:23 +0000 (+0200) Subject: Use ATTRIBUTE_MAY_ALIAS where alias violations are likely X-Git-Tag: emacs-26.0.90~521^2~170^2~15 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9be8b2bf1d1679e7b60dd7d2dbfef2c68f046938;p=emacs.git 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. --- diff --git a/src/dynlib.h b/src/dynlib.h index 6246c6a6642..1d53b8e5b2f 100644 --- a/src/dynlib.h +++ b/src/dynlib.h @@ -24,11 +24,14 @@ along with GNU Emacs. If not, see . */ 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 0fb126e61f5..c276edab37b 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