mirror of git://gcc.gnu.org/git/gcc.git
Backport Windows 9x/ME VirtualQuery() fix from GC 6.7.
* os_dep.c (GC_wnt): Define. (GC_init_win32): Set GC_wnt. * dyn_load.c (GC_register_dynamic_libraries): Consider MEM_PRIVATE sections also on Windows 9x/ME. From-SVN: r114818
This commit is contained in:
parent
5a6ccafd7d
commit
971774e438
|
|
@ -1,3 +1,11 @@
|
||||||
|
2006-06-20 Ranjit Mathew <rmathew@gcc.gnu.org>
|
||||||
|
|
||||||
|
Backport Windows 9x/ME VirtualQuery() fix from GC 6.7.
|
||||||
|
* os_dep.c (GC_wnt): Define.
|
||||||
|
(GC_init_win32): Set GC_wnt.
|
||||||
|
* dyn_load.c (GC_register_dynamic_libraries): Consider MEM_PRIVATE
|
||||||
|
sections also on Windows 9x/ME.
|
||||||
|
|
||||||
2006-06-02 Geoffrey Keating <geoffk@apple.com>
|
2006-06-02 Geoffrey Keating <geoffk@apple.com>
|
||||||
|
|
||||||
* configure.ac: Define HAS_PPC_THREAD_STATE_R0,
|
* configure.ac: Define HAS_PPC_THREAD_STATE_R0,
|
||||||
|
|
|
||||||
|
|
@ -860,6 +860,9 @@ void GC_register_dynamic_libraries()
|
||||||
}
|
}
|
||||||
# endif /* DEBUG_VIRTUALQUERY */
|
# endif /* DEBUG_VIRTUALQUERY */
|
||||||
|
|
||||||
|
extern GC_bool GC_wnt; /* Is Windows NT derivative. */
|
||||||
|
/* Defined and set in os_dep.c. */
|
||||||
|
|
||||||
void GC_register_dynamic_libraries()
|
void GC_register_dynamic_libraries()
|
||||||
{
|
{
|
||||||
MEMORY_BASIC_INFORMATION buf;
|
MEMORY_BASIC_INFORMATION buf;
|
||||||
|
|
@ -901,7 +904,12 @@ void GC_register_dynamic_libraries()
|
||||||
* !is_frame_buffer(p, buf.RegionSize, buf.Type)
|
* !is_frame_buffer(p, buf.RegionSize, buf.Type)
|
||||||
* instead of just checking for MEM_IMAGE.
|
* instead of just checking for MEM_IMAGE.
|
||||||
* If something breaks, change it back. */
|
* If something breaks, change it back. */
|
||||||
&& buf.Type == MEM_IMAGE) {
|
/* There is some evidence that we cannot always
|
||||||
|
* ignore MEM_PRIVATE sections under Windows ME
|
||||||
|
* and predecessors. Hence we now also check for
|
||||||
|
* that case. */
|
||||||
|
&& (buf.Type == MEM_IMAGE ||
|
||||||
|
!GC_wnt && buf.Type == MEM_PRIVATE)) {
|
||||||
# ifdef DEBUG_VIRTUALQUERY
|
# ifdef DEBUG_VIRTUALQUERY
|
||||||
GC_dump_meminfo(&buf);
|
GC_dump_meminfo(&buf);
|
||||||
# endif
|
# endif
|
||||||
|
|
|
||||||
|
|
@ -1181,12 +1181,15 @@ void GC_register_data_segments()
|
||||||
/* This used to be set for gcc, to avoid dealing with */
|
/* This used to be set for gcc, to avoid dealing with */
|
||||||
/* the structured exception handling issues. But we now have */
|
/* the structured exception handling issues. But we now have */
|
||||||
/* assembly code to do that right. */
|
/* assembly code to do that right. */
|
||||||
|
GC_bool GC_wnt = FALSE;
|
||||||
|
/* This is a Windows NT derivative, i.e. NT, W2K, XP or later. */
|
||||||
|
|
||||||
void GC_init_win32()
|
void GC_init_win32()
|
||||||
{
|
{
|
||||||
/* if we're running under win32s, assume that no DLLs will be loaded */
|
/* if we're running under win32s, assume that no DLLs will be loaded */
|
||||||
DWORD v = GetVersion();
|
DWORD v = GetVersion();
|
||||||
GC_no_win32_dlls |= ((v & 0x80000000) && (v & 0xff) <= 3);
|
GC_wnt = !(v & 0x80000000);
|
||||||
|
GC_no_win32_dlls |= ((!GC_wnt) && (v & 0xff) <= 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return the smallest address a such that VirtualQuery */
|
/* Return the smallest address a such that VirtualQuery */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue