Do not allow a dumped Emacs to be dumped
This commit is contained in:
commit
f58269c4b2
4 changed files with 20 additions and 7 deletions
|
@ -1,3 +1,12 @@
|
|||
2014-03-21 Daniel Colascione <dancol@dancol.org>
|
||||
|
||||
Always prohibit dumping a dumped Emacs.
|
||||
|
||||
* emacs.c (might_dump): New variable.
|
||||
(Fdump_emacs): Always prohibit dumping of dumped Emacs.
|
||||
* lisp.h (might_dump): Declare.
|
||||
* unexcw.c (unexec): Remove now-redundant multiple-dump detection code.
|
||||
|
||||
2014-03-20 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* doc.c (store_function_docstring): Fix pointer signedness mismatch.
|
||||
|
|
10
src/emacs.c
10
src/emacs.c
|
@ -121,6 +121,9 @@ Lisp_Object Vlibrary_cache;
|
|||
on subsequent starts. */
|
||||
bool initialized;
|
||||
|
||||
/* Set to true if this instance of Emacs might dump. */
|
||||
bool might_dump;
|
||||
|
||||
#ifdef DARWIN_OS
|
||||
extern void unexec_init_emacs_zone (void);
|
||||
#endif
|
||||
|
@ -1631,6 +1634,10 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef CANNOT_DUMP
|
||||
might_dump = !initialized;
|
||||
#endif
|
||||
|
||||
initialized = 1;
|
||||
|
||||
#ifdef LOCALTIME_CACHE
|
||||
|
@ -2082,6 +2089,9 @@ You must run Emacs in batch mode in order to dump it. */)
|
|||
if (! noninteractive)
|
||||
error ("Dumping Emacs works only in batch mode");
|
||||
|
||||
if (!might_dump)
|
||||
error ("Emacs can be dumped only once");
|
||||
|
||||
#ifdef GNU_LINUX
|
||||
|
||||
/* Warn if the gap between BSS end and heap start is larger than this. */
|
||||
|
|
|
@ -800,6 +800,7 @@ extern _Noreturn Lisp_Object wrong_type_argument (Lisp_Object, Lisp_Object);
|
|||
|
||||
/* Defined in emacs.c. */
|
||||
extern bool initialized;
|
||||
extern bool might_dump;
|
||||
|
||||
/* Defined in eval.c. */
|
||||
extern Lisp_Object Qautoload;
|
||||
|
|
|
@ -286,13 +286,6 @@ unexec (const char *outfile, const char *infile)
|
|||
int ret;
|
||||
int ret2;
|
||||
|
||||
if (bss_sbrk_did_unexec)
|
||||
{
|
||||
/* can only dump once */
|
||||
printf ("You can only dump Emacs once on this platform.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
report_sheap_usage (1);
|
||||
|
||||
infile = add_exe_suffix_if_necessary (infile, infile_buffer);
|
||||
|
|
Loading…
Add table
Reference in a new issue