aboutsummaryrefslogtreecommitdiffstats
path: root/src/comp.c
diff options
context:
space:
mode:
authorAndrea Corallo2019-11-17 16:38:07 +0100
committerAndrea Corallo2020-01-01 11:38:06 +0100
commit065dd0b5c6a7e11e79fe5ec02b153bb53bde0e77 (patch)
tree1b3def4419512b6cd7944f68a707724e3db8a87f /src/comp.c
parent207b15147366be47d58c40a6f03888243602b11e (diff)
downloademacs-065dd0b5c6a7e11e79fe5ec02b153bb53bde0e77.tar.gz
emacs-065dd0b5c6a7e11e79fe5ec02b153bb53bde0e77.zip
better error signaling while loading
Diffstat (limited to 'src/comp.c')
-rw-r--r--src/comp.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/comp.c b/src/comp.c
index 1de24eaaf98..33c39b53467 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -70,6 +70,8 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
70#endif 70#endif
71#define SETJMP_NAME STR (SETJMP) 71#define SETJMP_NAME STR (SETJMP)
72 72
73/* Raise an internal compiler error if test.
74 msg is evaluated only in that case. */
73#define ICE_IF(test, msg) \ 75#define ICE_IF(test, msg) \
74 do { \ 76 do { \
75 if (test) \ 77 if (test) \
@@ -3271,7 +3273,9 @@ load_comp_unit (dynlib_handle_ptr handle, char *file_name)
3271 3273
3272 return; 3274 return;
3273exit_error: 3275exit_error:
3274 error ("Native code load error while loading %s, %s", file_name, err_msg); 3276 xsignal1 (Qcomp_unit_load_failed,
3277 build_string (format_string ("while loading %s, %s",
3278 file_name, err_msg)));
3275} 3279}
3276 3280
3277DEFUN ("comp--register-subr", Fcomp__register_subr, 3281DEFUN ("comp--register-subr", Fcomp__register_subr,
@@ -3284,7 +3288,9 @@ DEFUN ("comp--register-subr", Fcomp__register_subr,
3284{ 3288{
3285 dynlib_handle_ptr handle = xmint_pointer (XCAR (load_handle_stack)); 3289 dynlib_handle_ptr handle = xmint_pointer (XCAR (load_handle_stack));
3286 if (!handle) 3290 if (!handle)
3287 error ("comp--register-subr can only be called during native code load phase."); 3291 xsignal1 (Qcomp_unit_load_failed,
3292 build_string ("comp--register-subr can only be called during "
3293 "native code load phase."));
3288 3294
3289 void *func = dynlib_sym (handle, SSDATA (c_name)); 3295 void *func = dynlib_sym (handle, SSDATA (c_name));
3290 eassert (func); 3296 eassert (func);
@@ -3315,7 +3321,7 @@ DEFUN ("native-elisp-load", Fnative_elisp_load, Snative_elisp_load, 1, 1, 0,
3315 dynlib_handle_ptr handle = dynlib_open (SSDATA (file)); 3321 dynlib_handle_ptr handle = dynlib_open (SSDATA (file));
3316 load_handle_stack = Fcons (make_mint_ptr (handle), load_handle_stack); 3322 load_handle_stack = Fcons (make_mint_ptr (handle), load_handle_stack);
3317 if (!handle) 3323 if (!handle)
3318 xsignal2 (Qcomp_unit_open_failed, file, build_string (dynlib_error ())); 3324 xsignal2 (Qcomp_unit_load_failed, file, build_string (dynlib_error ()));
3319 3325
3320 load_comp_unit (handle, SSDATA (file)); 3326 load_comp_unit (handle, SSDATA (file));
3321 3327
@@ -3374,8 +3380,8 @@ syms_of_comp (void)
3374 DEFSYM (Qnegate, "negate"); 3380 DEFSYM (Qnegate, "negate");
3375 DEFSYM (Qnumberp, "numberp"); 3381 DEFSYM (Qnumberp, "numberp");
3376 DEFSYM (Qintegerp, "integerp"); 3382 DEFSYM (Qintegerp, "integerp");
3377 /* Returned values. */ 3383 /* To be signaled. */
3378 DEFSYM (Qcomp_unit_open_failed, "comp-unit-open-failed"); 3384 DEFSYM (Qcomp_unit_load_failed, "comp-unit-load-failed");
3379 /* Others. */ 3385 /* Others. */
3380 DEFSYM (Qfixnum, "fixnum"); 3386 DEFSYM (Qfixnum, "fixnum");
3381 3387