X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/acb46fd42a2ebbe48944d0c80bfc21cf5e7bbcd1..03da5d089a8ed035cec443a27259e7d21487a22e:/src/unexsol.c diff --git a/src/unexsol.c b/src/unexsol.c index ff8a812f27..426a7f7cb9 100644 --- a/src/unexsol.c +++ b/src/unexsol.c @@ -5,13 +5,28 @@ #include #include "lisp.h" +#include "buffer.h" +#include "charset.h" +#include "coding.h" int unexec (char *new_name, char *old_name, unsigned int data_start, unsigned int bss_start, unsigned int entry_address) { - if (dldump (0, new_name, RTLD_MEMORY)) - report_file_error ("Cannot unexec", Fcons (build_string (new_name), Qnil)); + Lisp_Object data; + Lisp_Object errstring; - return 0; + if (! dldump (0, new_name, RTLD_MEMORY)) + return 0; + + data = Fcons (build_string (new_name), Qnil); + synchronize_system_messages_locale (); + errstring = code_convert_string_norecord (build_string (dlerror ()), + Vlocale_coding_system, 0); + + Fsignal (Qfile_error, + Fcons (build_string ("Cannot unexec"), Fcons (errstring, data))); } + +/* arch-tag: d8ff72b3-8198-4011-8ef5-011b12027f59 + (do not change this comment) */