annotate src/unexsol.c @ 47432:16b9af83e7d3

Don't use report_file_error; do it by hand using dlerror.
author Richard M. Stallman <rms@gnu.org>
date Thu, 12 Sep 2002 03:28:59 +0000
parents 85923ab92112
children d671a35d55f3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
47190
85923ab92112 Initial version.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 /* Trivial unexec for Solaris. */
85923ab92112 Initial version.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2
85923ab92112 Initial version.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3 #include <config.h>
85923ab92112 Initial version.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4 #include <stdlib.h>
85923ab92112 Initial version.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 #include <dlfcn.h>
85923ab92112 Initial version.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6
85923ab92112 Initial version.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 #include "lisp.h"
85923ab92112 Initial version.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8
85923ab92112 Initial version.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 int
85923ab92112 Initial version.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 unexec (char *new_name, char *old_name, unsigned int data_start,
85923ab92112 Initial version.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 unsigned int bss_start, unsigned int entry_address)
85923ab92112 Initial version.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 {
47432
16b9af83e7d3 Don't use report_file_error; do it by hand using dlerror.
Richard M. Stallman <rms@gnu.org>
parents: 47190
diff changeset
13 Lisp_Object data;
16b9af83e7d3 Don't use report_file_error; do it by hand using dlerror.
Richard M. Stallman <rms@gnu.org>
parents: 47190
diff changeset
14 Lisp_Object errstring;
16b9af83e7d3 Don't use report_file_error; do it by hand using dlerror.
Richard M. Stallman <rms@gnu.org>
parents: 47190
diff changeset
15
16b9af83e7d3 Don't use report_file_error; do it by hand using dlerror.
Richard M. Stallman <rms@gnu.org>
parents: 47190
diff changeset
16 if (! dldump (0, new_name, RTLD_MEMORY))
16b9af83e7d3 Don't use report_file_error; do it by hand using dlerror.
Richard M. Stallman <rms@gnu.org>
parents: 47190
diff changeset
17 return 0;
47190
85923ab92112 Initial version.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18
47432
16b9af83e7d3 Don't use report_file_error; do it by hand using dlerror.
Richard M. Stallman <rms@gnu.org>
parents: 47190
diff changeset
19 data = Fcons (build_string (new_name), Qnil);
16b9af83e7d3 Don't use report_file_error; do it by hand using dlerror.
Richard M. Stallman <rms@gnu.org>
parents: 47190
diff changeset
20 synchronize_system_messages_locale ();
16b9af83e7d3 Don't use report_file_error; do it by hand using dlerror.
Richard M. Stallman <rms@gnu.org>
parents: 47190
diff changeset
21 errstring = code_convert_string_norecord (build_string (dlerror ()),
16b9af83e7d3 Don't use report_file_error; do it by hand using dlerror.
Richard M. Stallman <rms@gnu.org>
parents: 47190
diff changeset
22 Vlocale_coding_system, 0);
16b9af83e7d3 Don't use report_file_error; do it by hand using dlerror.
Richard M. Stallman <rms@gnu.org>
parents: 47190
diff changeset
23
16b9af83e7d3 Don't use report_file_error; do it by hand using dlerror.
Richard M. Stallman <rms@gnu.org>
parents: 47190
diff changeset
24 /* System error messages are capitalized. Downcase the initial
16b9af83e7d3 Don't use report_file_error; do it by hand using dlerror.
Richard M. Stallman <rms@gnu.org>
parents: 47190
diff changeset
25 unless it is followed by a slash. */
16b9af83e7d3 Don't use report_file_error; do it by hand using dlerror.
Richard M. Stallman <rms@gnu.org>
parents: 47190
diff changeset
26 if (SREF (errstring, 1) != '/')
16b9af83e7d3 Don't use report_file_error; do it by hand using dlerror.
Richard M. Stallman <rms@gnu.org>
parents: 47190
diff changeset
27 SSET (errstring, 0, DOWNCASE (SREF (errstring, 0)));
16b9af83e7d3 Don't use report_file_error; do it by hand using dlerror.
Richard M. Stallman <rms@gnu.org>
parents: 47190
diff changeset
28
16b9af83e7d3 Don't use report_file_error; do it by hand using dlerror.
Richard M. Stallman <rms@gnu.org>
parents: 47190
diff changeset
29 Fsignal (Qfile_error,
16b9af83e7d3 Don't use report_file_error; do it by hand using dlerror.
Richard M. Stallman <rms@gnu.org>
parents: 47190
diff changeset
30 Fcons (build_string ("Cannot unexec"), Fcons (errstring, data)));
47190
85923ab92112 Initial version.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 }