aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/unexsol.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/unexsol.c b/src/unexsol.c
index ff8a812f279..41ad95ef51c 100644
--- a/src/unexsol.c
+++ b/src/unexsol.c
@@ -10,8 +10,22 @@ int
10unexec (char *new_name, char *old_name, unsigned int data_start, 10unexec (char *new_name, char *old_name, unsigned int data_start,
11 unsigned int bss_start, unsigned int entry_address) 11 unsigned int bss_start, unsigned int entry_address)
12{ 12{
13 if (dldump (0, new_name, RTLD_MEMORY)) 13 Lisp_Object data;
14 report_file_error ("Cannot unexec", Fcons (build_string (new_name), Qnil)); 14 Lisp_Object errstring;
15 15
16 return 0; 16 if (! dldump (0, new_name, RTLD_MEMORY))
17 return 0;
18
19 data = Fcons (build_string (new_name), Qnil);
20 synchronize_system_messages_locale ();
21 errstring = code_convert_string_norecord (build_string (dlerror ()),
22 Vlocale_coding_system, 0);
23
24 /* System error messages are capitalized. Downcase the initial
25 unless it is followed by a slash. */
26 if (SREF (errstring, 1) != '/')
27 SSET (errstring, 0, DOWNCASE (SREF (errstring, 0)));
28
29 Fsignal (Qfile_error,
30 Fcons (build_string ("Cannot unexec"), Fcons (errstring, data)));
17} 31}