diff options
| author | Paul Eggert | 2019-04-25 13:21:39 -0700 |
|---|---|---|
| committer | Paul Eggert | 2019-04-25 13:23:07 -0700 |
| commit | 69947311d84a2572e8382e401ab97fdab25cb433 (patch) | |
| tree | 7c14a5e0a0566c9a053a1e99d37a6a076d9996b7 /src | |
| parent | ca99c00f7574d72cd6d07dbfe0c3011f033ba5e8 (diff) | |
| download | emacs-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')
| -rw-r--r-- | src/dynlib.c | 5 | ||||
| -rw-r--r-- | src/dynlib.h | 2 | ||||
| -rw-r--r-- | src/emacs-module.c | 4 | ||||
| -rw-r--r-- | src/lisp.h | 15 | ||||
| -rw-r--r-- | src/lread.c | 2 | ||||
| -rw-r--r-- | src/pdumper.c | 67 | ||||
| -rw-r--r-- | src/print.c | 2 | ||||
| -rw-r--r-- | src/xdisp.c | 12 |
8 files changed, 61 insertions, 48 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 | ||
| 125 | void | 125 | void |
| 126 | dynlib_addr (void *addr, const char **fname, const char **symname) | 126 | dynlib_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 | ||
| 281 | void | 281 | void |
| 282 | dynlib_addr (void *ptr, const char **path, const char **sym) | 282 | dynlib_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 | { |
diff --git a/src/dynlib.h b/src/dynlib.h index 168ddbc32c6..2688712a13e 100644 --- a/src/dynlib.h +++ b/src/dynlib.h | |||
| @@ -35,6 +35,6 @@ dynlib_function_ptr dynlib_func (dynlib_handle_ptr h, const char *sym); | |||
| 35 | /* Sets *FILE to the file name from which PTR was loaded, and *SYM to | 35 | /* Sets *FILE to the file name from which PTR was loaded, and *SYM to |
| 36 | its symbol name. If the file or symbol name could not be | 36 | its symbol name. If the file or symbol name could not be |
| 37 | determined, set the corresponding argument to NULL. */ | 37 | determined, set the corresponding argument to NULL. */ |
| 38 | void dynlib_addr (void *ptr, const char **file, const char **sym); | 38 | void dynlib_addr (void (*ptr) (void), const char **file, const char **sym); |
| 39 | 39 | ||
| 40 | #endif /* DYNLIB_H */ | 40 | #endif /* DYNLIB_H */ |
diff --git a/src/emacs-module.c b/src/emacs-module.c index 0b7b3d6ffbe..80a04bafc2d 100644 --- a/src/emacs-module.c +++ b/src/emacs-module.c | |||
| @@ -934,10 +934,10 @@ module_function_documentation (const struct Lisp_Module_Function *function) | |||
| 934 | return function->documentation; | 934 | return function->documentation; |
| 935 | } | 935 | } |
| 936 | 936 | ||
| 937 | void * | 937 | module_funcptr |
| 938 | module_function_address (const struct Lisp_Module_Function *function) | 938 | module_function_address (const struct Lisp_Module_Function *function) |
| 939 | { | 939 | { |
| 940 | return function->subr; | 940 | return (module_funcptr) function->subr; |
| 941 | } | 941 | } |
| 942 | 942 | ||
| 943 | 943 | ||
diff --git a/src/lisp.h b/src/lisp.h index 8dc44291a8f..f613ce20b0b 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -3069,7 +3069,9 @@ enum maxargs | |||
| 3069 | /* Call a function F that accepts many args, passing it the remaining args, | 3069 | /* Call a function F that accepts many args, passing it the remaining args, |
| 3070 | E.g., 'return CALLN (Fformat, fmt, text);' is less error-prone than | 3070 | E.g., 'return CALLN (Fformat, fmt, text);' is less error-prone than |
| 3071 | '{ Lisp_Object a[2]; a[0] = fmt; a[1] = text; return Fformat (2, a); }'. | 3071 | '{ Lisp_Object a[2]; a[0] = fmt; a[1] = text; return Fformat (2, a); }'. |
| 3072 | CALLN is overkill for simple usages like 'Finsert (1, &text);'. */ | 3072 | CALLN requires at least one function argument (as C99 prohibits |
| 3073 | empty initializers), and is overkill for simple usages like | ||
| 3074 | 'Finsert (1, &text);'. */ | ||
| 3073 | #define CALLN(f, ...) CALLMANY (f, ((Lisp_Object []) {__VA_ARGS__})) | 3075 | #define CALLN(f, ...) CALLMANY (f, ((Lisp_Object []) {__VA_ARGS__})) |
| 3074 | 3076 | ||
| 3075 | extern void defvar_lisp (struct Lisp_Objfwd const *, char const *); | 3077 | extern void defvar_lisp (struct Lisp_Objfwd const *, char const *); |
| @@ -4168,14 +4170,21 @@ XMODULE_FUNCTION (Lisp_Object o) | |||
| 4168 | } | 4170 | } |
| 4169 | 4171 | ||
| 4170 | #ifdef HAVE_MODULES | 4172 | #ifdef HAVE_MODULES |
| 4173 | /* A function pointer type good enough for lisp.h. Actual module | ||
| 4174 | function pointers are of a different type that relies on details | ||
| 4175 | internal to emacs-module.c. */ | ||
| 4176 | typedef void (*module_funcptr) (void); | ||
| 4177 | |||
| 4171 | /* Defined in alloc.c. */ | 4178 | /* Defined in alloc.c. */ |
| 4172 | extern Lisp_Object make_user_ptr (void (*finalizer) (void *), void *p); | 4179 | extern Lisp_Object make_user_ptr (void (*finalizer) (void *), void *p); |
| 4173 | 4180 | ||
| 4174 | /* Defined in emacs-module.c. */ | 4181 | /* Defined in emacs-module.c. */ |
| 4175 | extern Lisp_Object funcall_module (Lisp_Object, ptrdiff_t, Lisp_Object *); | 4182 | extern Lisp_Object funcall_module (Lisp_Object, ptrdiff_t, Lisp_Object *); |
| 4176 | extern Lisp_Object module_function_arity (const struct Lisp_Module_Function *); | 4183 | extern Lisp_Object module_function_arity (const struct Lisp_Module_Function *); |
| 4177 | extern Lisp_Object module_function_documentation (const struct Lisp_Module_Function *); | 4184 | extern Lisp_Object module_function_documentation |
| 4178 | extern void *module_function_address (const struct Lisp_Module_Function *); | 4185 | (struct Lisp_Module_Function const *); |
| 4186 | extern module_funcptr module_function_address | ||
| 4187 | (struct Lisp_Module_Function const *); | ||
| 4179 | extern void mark_modules (void); | 4188 | extern void mark_modules (void); |
| 4180 | extern void init_module_assertions (bool); | 4189 | extern void init_module_assertions (bool); |
| 4181 | extern void syms_of_module (void); | 4190 | extern void syms_of_module (void); |
diff --git a/src/lread.c b/src/lread.c index 6cd1029cd9f..1c97805ca7a 100644 --- a/src/lread.c +++ b/src/lread.c | |||
| @@ -3782,7 +3782,7 @@ string_to_number (char const *string, int base, ptrdiff_t *plen) | |||
| 3782 | state |= E_EXP; | 3782 | state |= E_EXP; |
| 3783 | cp += 3; | 3783 | cp += 3; |
| 3784 | union ieee754_double u | 3784 | union ieee754_double u |
| 3785 | = { .ieee_nan = { .exponent = -1, .quiet_nan = 1, | 3785 | = { .ieee_nan = { .exponent = 0x7ff, .quiet_nan = 1, |
| 3786 | .mantissa0 = n >> 31 >> 1, .mantissa1 = n }}; | 3786 | .mantissa0 = n >> 31 >> 1, .mantissa1 = n }}; |
| 3787 | value = u.d; | 3787 | value = u.d; |
| 3788 | } | 3788 | } |
diff --git a/src/pdumper.c b/src/pdumper.c index 39931c6807f..28045d1959e 100644 --- a/src/pdumper.c +++ b/src/pdumper.c | |||
| @@ -70,18 +70,18 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ | |||
| 70 | 70 | ||
| 71 | #ifdef HAVE_PDUMPER | 71 | #ifdef HAVE_PDUMPER |
| 72 | 72 | ||
| 73 | #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7) | 73 | #if GNUC_PREREQ (4, 7, 0) |
| 74 | # pragma GCC diagnostic error "-Wconversion" | 74 | # pragma GCC diagnostic error "-Wconversion" |
| 75 | # pragma GCC diagnostic ignored "-Wsign-conversion" | ||
| 75 | # pragma GCC diagnostic error "-Wshadow" | 76 | # pragma GCC diagnostic error "-Wshadow" |
| 76 | # define ALLOW_IMPLICIT_CONVERSION \ | 77 | # define ALLOW_IMPLICIT_CONVERSION \ |
| 77 | _Pragma ("GCC diagnostic push") \ | 78 | _Pragma ("GCC diagnostic push") \ |
| 78 | _Pragma ("GCC diagnostic ignored \"-Wconversion\"") | 79 | _Pragma ("GCC diagnostic ignored \"-Wconversion\"") |
| 79 | _Pragma ("GCC diagnostic ignored \"-Wsign-conversion\"") | ||
| 80 | # define DISALLOW_IMPLICIT_CONVERSION \ | 80 | # define DISALLOW_IMPLICIT_CONVERSION \ |
| 81 | _Pragma ("GCC diagnostic pop") | 81 | _Pragma ("GCC diagnostic pop") |
| 82 | #else | 82 | #else |
| 83 | # define ALLOW_IMPLICIT_CONVERSION ((void)0) | 83 | # define ALLOW_IMPLICIT_CONVERSION ((void) 0) |
| 84 | # define DISALLOW_IMPLICIT_CONVERSION ((void)0) | 84 | # define DISALLOW_IMPLICIT_CONVERSION ((void) 0) |
| 85 | #endif | 85 | #endif |
| 86 | 86 | ||
| 87 | #define VM_POSIX 1 | 87 | #define VM_POSIX 1 |
| @@ -124,7 +124,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ | |||
| 124 | general-purpose computer made after 1990. */ | 124 | general-purpose computer made after 1990. */ |
| 125 | verify (sizeof (ptrdiff_t) == sizeof (void *)); | 125 | verify (sizeof (ptrdiff_t) == sizeof (void *)); |
| 126 | verify (sizeof (intptr_t) == sizeof (ptrdiff_t)); | 126 | verify (sizeof (intptr_t) == sizeof (ptrdiff_t)); |
| 127 | verify (sizeof (void (*)(void)) == sizeof (void *)); | 127 | verify (sizeof (void (*) (void)) == sizeof (void *)); |
| 128 | verify (sizeof (ptrdiff_t) <= sizeof (Lisp_Object)); | 128 | verify (sizeof (ptrdiff_t) <= sizeof (Lisp_Object)); |
| 129 | verify (sizeof (ptrdiff_t) <= sizeof (EMACS_INT)); | 129 | verify (sizeof (ptrdiff_t) <= sizeof (EMACS_INT)); |
| 130 | verify (CHAR_BIT == 8); | 130 | verify (CHAR_BIT == 8); |
| @@ -151,8 +151,7 @@ typedef int_least32_t dump_off; | |||
| 151 | #define DUMP_OFF_MIN INT_LEAST32_MIN | 151 | #define DUMP_OFF_MIN INT_LEAST32_MIN |
| 152 | #define DUMP_OFF_MAX INT_LEAST32_MAX | 152 | #define DUMP_OFF_MAX INT_LEAST32_MAX |
| 153 | 153 | ||
| 154 | __attribute__((format (printf,1,2))) | 154 | static void ATTRIBUTE_FORMAT ((printf, 1, 2)) |
| 155 | static void | ||
| 156 | dump_trace (const char *fmt, ...) | 155 | dump_trace (const char *fmt, ...) |
| 157 | { | 156 | { |
| 158 | if (0) | 157 | if (0) |
| @@ -734,11 +733,7 @@ dump_builtin_symbol_p (Lisp_Object object) | |||
| 734 | static bool | 733 | static bool |
| 735 | dump_object_self_representing_p (Lisp_Object object) | 734 | dump_object_self_representing_p (Lisp_Object object) |
| 736 | { | 735 | { |
| 737 | bool result; | 736 | return FIXNUMP (object) || dump_builtin_symbol_p (object); |
| 738 | ALLOW_IMPLICIT_CONVERSION; | ||
| 739 | result = FIXNUMP (object) || dump_builtin_symbol_p (object); | ||
| 740 | DISALLOW_IMPLICIT_CONVERSION; | ||
| 741 | return result; | ||
| 742 | } | 737 | } |
| 743 | 738 | ||
| 744 | #define DEFINE_FROMLISP_FUNC(fn, type) \ | 739 | #define DEFINE_FROMLISP_FUNC(fn, type) \ |
| @@ -749,10 +744,13 @@ dump_object_self_representing_p (Lisp_Object object) | |||
| 749 | if (FIXNUMP (value)) \ | 744 | if (FIXNUMP (value)) \ |
| 750 | return XFIXNUM (value); \ | 745 | return XFIXNUM (value); \ |
| 751 | eassert (BIGNUMP (value)); \ | 746 | eassert (BIGNUMP (value)); \ |
| 752 | return TYPE_SIGNED (type) \ | 747 | type result; \ |
| 753 | ? bignum_to_intmax (value) \ | 748 | if (TYPE_SIGNED (type)) \ |
| 754 | : bignum_to_uintmax (value); \ | 749 | result = bignum_to_intmax (value); \ |
| 750 | else \ | ||
| 751 | result = bignum_to_uintmax (value); \ | ||
| 755 | DISALLOW_IMPLICIT_CONVERSION; \ | 752 | DISALLOW_IMPLICIT_CONVERSION; \ |
| 753 | return result; \ | ||
| 756 | } | 754 | } |
| 757 | 755 | ||
| 758 | #define DEFINE_TOLISP_FUNC(fn, type) \ | 756 | #define DEFINE_TOLISP_FUNC(fn, type) \ |
| @@ -762,10 +760,10 @@ dump_object_self_representing_p (Lisp_Object object) | |||
| 762 | return INT_TO_INTEGER (value); \ | 760 | return INT_TO_INTEGER (value); \ |
| 763 | } | 761 | } |
| 764 | 762 | ||
| 765 | DEFINE_FROMLISP_FUNC (intmax_t_from_lisp, intmax_t); | 763 | DEFINE_FROMLISP_FUNC (intmax_t_from_lisp, intmax_t) |
| 766 | DEFINE_TOLISP_FUNC (intmax_t_to_lisp, intmax_t); | 764 | DEFINE_TOLISP_FUNC (intmax_t_to_lisp, intmax_t) |
| 767 | DEFINE_FROMLISP_FUNC (dump_off_from_lisp, dump_off); | 765 | DEFINE_FROMLISP_FUNC (dump_off_from_lisp, dump_off) |
| 768 | DEFINE_TOLISP_FUNC (dump_off_to_lisp, dump_off); | 766 | DEFINE_TOLISP_FUNC (dump_off_to_lisp, dump_off) |
| 769 | 767 | ||
| 770 | static void | 768 | static void |
| 771 | dump_write (struct dump_context *ctx, const void *buf, dump_off nbyte) | 769 | dump_write (struct dump_context *ctx, const void *buf, dump_off nbyte) |
| @@ -797,8 +795,7 @@ dump_tailq_length (const struct dump_tailq *tailq) | |||
| 797 | return tailq->length; | 795 | return tailq->length; |
| 798 | } | 796 | } |
| 799 | 797 | ||
| 800 | __attribute__((unused)) | 798 | static void ATTRIBUTE_UNUSED |
| 801 | static void | ||
| 802 | dump_tailq_prepend (struct dump_tailq *tailq, Lisp_Object value) | 799 | dump_tailq_prepend (struct dump_tailq *tailq, Lisp_Object value) |
| 803 | { | 800 | { |
| 804 | Lisp_Object link = Fcons (value, tailq->head); | 801 | Lisp_Object link = Fcons (value, tailq->head); |
| @@ -808,8 +805,7 @@ dump_tailq_prepend (struct dump_tailq *tailq, Lisp_Object value) | |||
| 808 | tailq->length += 1; | 805 | tailq->length += 1; |
| 809 | } | 806 | } |
| 810 | 807 | ||
| 811 | __attribute__((unused)) | 808 | static void ATTRIBUTE_UNUSED |
| 812 | static void | ||
| 813 | dump_tailq_append (struct dump_tailq *tailq, Lisp_Object value) | 809 | dump_tailq_append (struct dump_tailq *tailq, Lisp_Object value) |
| 814 | { | 810 | { |
| 815 | Lisp_Object link = Fcons (value, Qnil); | 811 | Lisp_Object link = Fcons (value, Qnil); |
| @@ -1593,11 +1589,11 @@ dump_emacs_reloc_immediate (struct dump_context *ctx, | |||
| 1593 | ctx, emacs_ptr, &value, sizeof (value)); \ | 1589 | ctx, emacs_ptr, &value, sizeof (value)); \ |
| 1594 | } | 1590 | } |
| 1595 | 1591 | ||
| 1596 | DEFINE_EMACS_IMMEDIATE_FN (dump_emacs_reloc_immediate_lv, Lisp_Object); | 1592 | DEFINE_EMACS_IMMEDIATE_FN (dump_emacs_reloc_immediate_lv, Lisp_Object) |
| 1597 | DEFINE_EMACS_IMMEDIATE_FN (dump_emacs_reloc_immediate_ptrdiff_t, ptrdiff_t); | 1593 | DEFINE_EMACS_IMMEDIATE_FN (dump_emacs_reloc_immediate_ptrdiff_t, ptrdiff_t) |
| 1598 | DEFINE_EMACS_IMMEDIATE_FN (dump_emacs_reloc_immediate_intmax_t, intmax_t); | 1594 | DEFINE_EMACS_IMMEDIATE_FN (dump_emacs_reloc_immediate_intmax_t, intmax_t) |
| 1599 | DEFINE_EMACS_IMMEDIATE_FN (dump_emacs_reloc_immediate_int, int); | 1595 | DEFINE_EMACS_IMMEDIATE_FN (dump_emacs_reloc_immediate_int, int) |
| 1600 | DEFINE_EMACS_IMMEDIATE_FN (dump_emacs_reloc_immediate_bool, bool); | 1596 | DEFINE_EMACS_IMMEDIATE_FN (dump_emacs_reloc_immediate_bool, bool) |
| 1601 | 1597 | ||
| 1602 | /* Add an emacs relocation that makes a raw pointer in Emacs point | 1598 | /* Add an emacs relocation that makes a raw pointer in Emacs point |
| 1603 | into the dump. */ | 1599 | into the dump. */ |
| @@ -2011,8 +2007,10 @@ finish_dump_pvec (struct dump_context *ctx, | |||
| 2011 | union vectorlike_header *out_hdr) | 2007 | union vectorlike_header *out_hdr) |
| 2012 | { | 2008 | { |
| 2013 | ALLOW_IMPLICIT_CONVERSION; | 2009 | ALLOW_IMPLICIT_CONVERSION; |
| 2014 | return dump_object_finish (ctx, out_hdr, vectorlike_nbytes (out_hdr)); | 2010 | dump_off result = dump_object_finish (ctx, out_hdr, |
| 2011 | vectorlike_nbytes (out_hdr)); | ||
| 2015 | DISALLOW_IMPLICIT_CONVERSION; | 2012 | DISALLOW_IMPLICIT_CONVERSION; |
| 2013 | return result; | ||
| 2016 | } | 2014 | } |
| 2017 | 2015 | ||
| 2018 | static void | 2016 | static void |
| @@ -3237,7 +3235,8 @@ static void | |||
| 3237 | dump_metadata_for_pdumper (struct dump_context *ctx) | 3235 | dump_metadata_for_pdumper (struct dump_context *ctx) |
| 3238 | { | 3236 | { |
| 3239 | for (int i = 0; i < nr_dump_hooks; ++i) | 3237 | for (int i = 0; i < nr_dump_hooks; ++i) |
| 3240 | dump_emacs_reloc_to_emacs_ptr_raw (ctx, &dump_hooks[i], dump_hooks[i]); | 3238 | dump_emacs_reloc_to_emacs_ptr_raw (ctx, &dump_hooks[i], |
| 3239 | (void const *) dump_hooks[i]); | ||
| 3241 | dump_emacs_reloc_immediate_int (ctx, &nr_dump_hooks, nr_dump_hooks); | 3240 | dump_emacs_reloc_immediate_int (ctx, &nr_dump_hooks, nr_dump_hooks); |
| 3242 | 3241 | ||
| 3243 | for (int i = 0; i < nr_remembered_data; ++i) | 3242 | for (int i = 0; i < nr_remembered_data; ++i) |
| @@ -3801,8 +3800,8 @@ dump_merge_emacs_relocs (Lisp_Object lreloc_a, Lisp_Object lreloc_b) | |||
| 3801 | dump_off_to_lisp (reloc_a.length)); | 3800 | dump_off_to_lisp (reloc_a.length)); |
| 3802 | } | 3801 | } |
| 3803 | 3802 | ||
| 3804 | typedef void (*drain_reloc_handler)(struct dump_context *, Lisp_Object); | 3803 | typedef void (*drain_reloc_handler) (struct dump_context *, Lisp_Object); |
| 3805 | typedef Lisp_Object (*drain_reloc_merger)(Lisp_Object a, Lisp_Object b); | 3804 | typedef Lisp_Object (*drain_reloc_merger) (Lisp_Object a, Lisp_Object b); |
| 3806 | 3805 | ||
| 3807 | static void | 3806 | static void |
| 3808 | drain_reloc_list (struct dump_context *ctx, | 3807 | drain_reloc_list (struct dump_context *ctx, |
| @@ -4040,7 +4039,7 @@ types. */) | |||
| 4040 | ctx->deferred_symbols = Qnil; | 4039 | ctx->deferred_symbols = Qnil; |
| 4041 | 4040 | ||
| 4042 | ctx->fixups = Qnil; | 4041 | ctx->fixups = Qnil; |
| 4043 | ctx->staticpro_table = CALLN (Fmake_hash_table); | 4042 | ctx->staticpro_table = Fmake_hash_table (0, NULL); |
| 4044 | ctx->symbol_aux = Qnil; | 4043 | ctx->symbol_aux = Qnil; |
| 4045 | ctx->copied_queue = Qnil; | 4044 | ctx->copied_queue = Qnil; |
| 4046 | ctx->cold_queue = Qnil; | 4045 | ctx->cold_queue = Qnil; |
| @@ -4587,7 +4586,7 @@ struct dump_memory_map | |||
| 4587 | { | 4586 | { |
| 4588 | struct dump_memory_map_spec spec; | 4587 | struct dump_memory_map_spec spec; |
| 4589 | void *mapping; /* Actual mapped memory. */ | 4588 | void *mapping; /* Actual mapped memory. */ |
| 4590 | void (*release)(struct dump_memory_map *); | 4589 | void (*release) (struct dump_memory_map *); |
| 4591 | void *private; | 4590 | void *private; |
| 4592 | }; | 4591 | }; |
| 4593 | 4592 | ||
diff --git a/src/print.c b/src/print.c index 8b163e3ee39..68ed6781c81 100644 --- a/src/print.c +++ b/src/print.c | |||
| @@ -1787,7 +1787,7 @@ print_vectorlike (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag, | |||
| 1787 | case PVEC_MODULE_FUNCTION: | 1787 | case PVEC_MODULE_FUNCTION: |
| 1788 | { | 1788 | { |
| 1789 | print_c_string ("#<module function ", printcharfun); | 1789 | print_c_string ("#<module function ", printcharfun); |
| 1790 | void *ptr = module_function_address (XMODULE_FUNCTION (obj)); | 1790 | module_funcptr ptr = module_function_address (XMODULE_FUNCTION (obj)); |
| 1791 | const char *file = NULL; | 1791 | const char *file = NULL; |
| 1792 | const char *symbol = NULL; | 1792 | const char *symbol = NULL; |
| 1793 | dynlib_addr (ptr, &file, &symbol); | 1793 | dynlib_addr (ptr, &file, &symbol); |
diff --git a/src/xdisp.c b/src/xdisp.c index 825b74d5392..c77a98023da 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -32910,14 +32910,18 @@ which no explicit name has been set (see `modify-frame-parameters'). */); | |||
| 32910 | This variable has the same structure as `mode-line-format' (which see), | 32910 | This variable has the same structure as `mode-line-format' (which see), |
| 32911 | and is used only on frames for which no explicit name has been set | 32911 | and is used only on frames for which no explicit name has been set |
| 32912 | \(see `modify-frame-parameters'). */); | 32912 | \(see `modify-frame-parameters'). */); |
| 32913 | /* Do not nest calls to pure_list. This works around a bug in | ||
| 32914 | Oracle Developer Studio 12.6. */ | ||
| 32915 | Lisp_Object icon_title_name_format | ||
| 32916 | = pure_list (empty_unibyte_string, | ||
| 32917 | intern_c_string ("invocation-name"), | ||
| 32918 | build_pure_c_string ("@"), | ||
| 32919 | intern_c_string ("system-name")); | ||
| 32913 | Vicon_title_format | 32920 | Vicon_title_format |
| 32914 | = Vframe_title_format | 32921 | = Vframe_title_format |
| 32915 | = pure_list (intern_c_string ("multiple-frames"), | 32922 | = pure_list (intern_c_string ("multiple-frames"), |
| 32916 | build_pure_c_string ("%b"), | 32923 | build_pure_c_string ("%b"), |
| 32917 | pure_list (empty_unibyte_string, | 32924 | icon_title_name_format); |
| 32918 | intern_c_string ("invocation-name"), | ||
| 32919 | build_pure_c_string ("@"), | ||
| 32920 | intern_c_string ("system-name"))); | ||
| 32921 | 32925 | ||
| 32922 | DEFVAR_LISP ("message-log-max", Vmessage_log_max, | 32926 | DEFVAR_LISP ("message-log-max", Vmessage_log_max, |
| 32923 | doc: /* Maximum number of lines to keep in the message log buffer. | 32927 | doc: /* Maximum number of lines to keep in the message log buffer. |