Fix crashes on MS-Windows during dumping
* src/unexw32.c (get_section_info): Make extra_bss_size be the maximum of extra_bss_size and extra_bss_size_static. This avoids computing the size of the output file smaller than it actually needs to be, which then causes copy_executable_and_dump_data to write beyond the requested size of the file mapping, thus relying on the OS roundup to page boundary to save us from ourselves. See http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00642.html for the details. * lib/stdio-impl.h: Revert the workaround fix of not including errno.h for MinGW.
This commit is contained in:
parent
6bf8321831
commit
0757b4f2f7
2 changed files with 1 additions and 2 deletions
|
@ -26,9 +26,7 @@
|
|||
# include <sys/param.h>
|
||||
#endif
|
||||
|
||||
#ifndef __MINGW32__
|
||||
#include <errno.h> /* For detecting Plan9. */
|
||||
#endif
|
||||
|
||||
#if defined __sferror || defined __DragonFly__ || defined __ANDROID__
|
||||
/* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */
|
||||
|
|
|
@ -465,6 +465,7 @@ get_section_info (file_data *p_infile)
|
|||
bss_start = min (bss_start, bss_start_static);
|
||||
bss_size = max (my_endbss, my_endbss_static) - bss_start;
|
||||
bss_section_static = 0;
|
||||
extra_bss_size = max (extra_bss_size, extra_bss_size_static);
|
||||
extra_bss_size_static = 0;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue