aboutsummaryrefslogtreecommitdiffstats
path: root/src/dynlib.c
diff options
context:
space:
mode:
authorPaul Eggert2019-04-25 13:21:39 -0700
committerPaul Eggert2019-04-25 13:23:07 -0700
commit69947311d84a2572e8382e401ab97fdab25cb433 (patch)
tree7c14a5e0a0566c9a053a1e99d37a6a076d9996b7 /src/dynlib.c
parentca99c00f7574d72cd6d07dbfe0c3011f033ba5e8 (diff)
downloademacs-69947311d84a2572e8382e401ab97fdab25cb433.tar.gz
emacs-69947311d84a2572e8382e401ab97fdab25cb433.zip
Port to Oracle Developer Studio 12.6
This compiler is a bit pickier about checking conformance to the C standard, ranging from syntax trivia (no extra ";" at the top level) to portability trivia (warnings re conversion between function and data pointers) to more-important stuff like lack of support for some __attribute__ usages. * src/dynlib.c (dynlib_addr): First argument is a function pointer, not a data pointer. All callers changed. * src/emacs-module.c (module_function_address): Return module_funcptr, not void *. All uses changed. * src/lisp.h (module_funcptr) [HAVE_MODULES]: New type. * src/lread.c (union ieee754_double): Don’t assume the usual semantics for converting signed to unsigned int when initializing a bitfield, as the Oracle compiler complains and the C standard is unclear. * src/pdumper.c (ALLOW_IMPLICIT_CONVERSION): Make it clearer that -Wsign-conversion is disabled everywhere in this file. (dump_trace, dump_tailq_prepend, dump_tailq_append): Don’t assume __attribute__. (dump_object_self_representing_p): Don’t disable conversion warnings; it’s not needed here. (DEFINE_FROMLISP_FUNC): Avoid possible signal in integer conversion from unsigned to signed. (DEFINE_FROMLISP_FUNC, finish_dump_pvec): Avoid warning about unreachable statements on platforms not supporting the __attribute__. (intmax_t_from_lisp, intmax_t_to_lisp, dump_off_from_lisp) (dump_off_to_lisp, dump_emacs_reloc_immediate_lv) (dump_emacs_reloc_immediate_ptrdiff_t) (dump_emacs_reloc_immediate_intmax_t) (dump_emacs_reloc_immediate_int, dump_emacs_reloc_immediate_bool): Omit stray semicolon that violates C standard. (dump_metadata_for_pdumper): Add cast to pacify compiler complaining about conversion from function pointer to data pointer. (Fdump_emacs_portable): Do not use CALLN to call a function with zero arguments, as C99 prohibits empty initializers. * src/xdisp.c (syms_of_xdisp): Do not nest calls to pure_list, to work around a bug in Oracle Developer Studio 12.6.
Diffstat (limited to 'src/dynlib.c')
-rw-r--r--src/dynlib.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/dynlib.c b/src/dynlib.c
index 878044558a6..9c1bf4a82af 100644
--- a/src/dynlib.c
+++ b/src/dynlib.c
@@ -123,7 +123,7 @@ dynlib_sym (dynlib_handle_ptr h, const char *sym)
123} 123}
124 124
125void 125void
126dynlib_addr (void *addr, const char **fname, const char **symname) 126dynlib_addr (void (*addr) (void), const char **fname, const char **symname)
127{ 127{
128 static char dll_filename[MAX_UTF8_PATH]; 128 static char dll_filename[MAX_UTF8_PATH];
129 static GetModuleHandleExA_Proc s_pfn_Get_Module_HandleExA = NULL; 129 static GetModuleHandleExA_Proc s_pfn_Get_Module_HandleExA = NULL;
@@ -279,11 +279,12 @@ dynlib_sym (dynlib_handle_ptr h, const char *sym)
279} 279}
280 280
281void 281void
282dynlib_addr (void *ptr, const char **path, const char **sym) 282dynlib_addr (void (*funcptr) (void), const char **path, const char **sym)
283{ 283{
284 *path = NULL; 284 *path = NULL;
285 *sym = NULL; 285 *sym = NULL;
286#ifdef HAVE_DLADDR 286#ifdef HAVE_DLADDR
287 void *ptr = (void *) funcptr;
287 Dl_info info; 288 Dl_info info;
288 if (dladdr (ptr, &info) && info.dli_fname && info.dli_sname) 289 if (dladdr (ptr, &info) && info.dli_fname && info.dli_sname)
289 { 290 {