-/* Copyright (C) 1985-1988, 1992-1994, 2001-2013 Free Software
+/* Copyright (C) 1985-1988, 1992-1994, 2001-2014 Free Software
* Foundation, Inc.
This file is part of GNU Emacs.
#include <crt0.h> /* for _crt0_startup_flags and its bits */
#include <sys/exceptn.h>
static int save_djgpp_startup_flags;
+#include <libc/atexit.h>
+static struct __atexit *save_atexit_ptr;
#define filehdr external_filehdr
#define scnhdr external_scnhdr
#define syment external_syment
unsigned long text_start;/* base of text used for this file */
unsigned long data_start;/* base of data used for this file */
};
-#endif /* not MSDOS */
+#endif /* MSDOS */
#else /* not HAVE_COFF_H */
#include <a.out.h>
#endif /* not HAVE_COFF_H */
into an int which is the number of a byte.
This is a no-op on ordinary machines, but not on all. */
-#define ADDR_CORRECT(x) ((char *)(x) - (char*)0)
+#define ADDR_CORRECT(x) ((char *) (x) - (char *) 0)
#include "lisp.h"
and which might change the way that dumped Emacs works. */
save_djgpp_startup_flags = _crt0_startup_flags;
_crt0_startup_flags &= ~(_CRT0_FLAG_NO_LFN | _CRT0_FLAG_NEARPTR);
+
+ /* Zero out the 'atexit' chain in the dumped executable, to avoid
+ calling the atexit functions twice. (emacs.c:main installs an
+ atexit function.) */
+ save_atexit_ptr = __atexit_ptr;
+ __atexit_ptr = NULL;
#endif
lseek (new, (long) text_scnptr, 0);
/* Restore the startup flags. */
_crt0_startup_flags = save_djgpp_startup_flags;
+
+ /* Restore the atexit chain. */
+ __atexit_ptr = save_atexit_ptr;
#endif