HCoop
/
bpt
/
emacs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
declare smobs in alloc.c
[bpt/emacs.git]
/
src
/
unexcoff.c
diff --git
a/src/unexcoff.c
b/src/unexcoff.c
index
5ac8ea8
..
0e47bdd
100644
(file)
--- a/
src/unexcoff.c
+++ b/
src/unexcoff.c
@@
-1,4
+1,4
@@
-/* Copyright (C) 1985-1988, 1992-1994, 2001-201
3
Free Software
+/* Copyright (C) 1985-1988, 1992-1994, 2001-201
4
Free Software
* Foundation, Inc.
This file is part of GNU Emacs.
* Foundation, Inc.
This file is part of GNU Emacs.
@@
-65,6
+65,8
@@
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <crt0.h> /* for _crt0_startup_flags and its bits */
#include <sys/exceptn.h>
static int save_djgpp_startup_flags;
#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
#define filehdr external_filehdr
#define scnhdr external_scnhdr
#define syment external_syment
@@
-82,7
+84,7
@@
struct aouthdr
unsigned long text_start;/* base of text used for this file */
unsigned long data_start;/* base of data used for this file */
};
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 */
#else /* not HAVE_COFF_H */
#include <a.out.h>
#endif /* not HAVE_COFF_H */
@@
-120,7
+122,7
@@
static int pagemask;
into an int which is the number of a byte.
This is a no-op on ordinary machines, but not on all. */
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"
#include "lisp.h"
@@
-368,6
+370,12
@@
copy_text_and_data (int new, int a_out)
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);
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);
#endif
lseek (new, (long) text_scnptr, 0);
@@
-386,6
+394,9
@@
copy_text_and_data (int new, int a_out)
/* Restore the startup flags. */
_crt0_startup_flags = save_djgpp_startup_flags;
/* Restore the startup flags. */
_crt0_startup_flags = save_djgpp_startup_flags;
+
+ /* Restore the atexit chain. */
+ __atexit_ptr = save_atexit_ptr;
#endif
#endif