executable starts at 0x1:00400000L, the Cygwin DLL starts at
0x1:80040000L, other rebased DLLs are located in the region from
0x2:00000000L up to 0x4:00000000L, -auto-image-based DLLs are located
- in the region from 0x4:00000000L up to 0x6:00000000L.
- So we let the heap start at 0x6:00000000L. */
- uintptr_t start_address = 0x600000000L;
+ in the region from 0x4:00000000L up to 0x6:00000000L. Leave another
+ 8 Gigs slack space, so lets start the heap at 0x8:00000000L. */
+ uintptr_t start_address = 0x800000000L;
#else
/* Windows performs heap ASLR. This spoils the entire region below
0x20000000 for us, because that region is used by Windows to randomize
#ifdef __x86_64__
/* The memory region used for memory maps */
-#define MMAP_STORAGE_LOW 0x00800000000L /* Leave 8 Gigs for heap. */
-#define MMAP_STORAGE_HIGH 0x70000000000L /* Leave enough room for OS. */
+#define MMAP_STORAGE_LOW 0x001000000000L /* Leave 32 Gigs for heap. */
+/* Up to Win 8 only supporting 44 bit address space, starting with Win 8.1
+ 48 bit address space. */
+#define MMAP_STORAGE_HIGH wincap.mmap_storage_high ()
/* FIXME? Unfortunately the OS doesn't support a top down allocation with
a ceiling value. The ZeroBits mechanism only works for
wincaps wincap_vista __attribute__((section (".cygwin_dll_common"), shared)) = {
def_guard_pages:1,
+ mmap_storage_high:0x070000000000LL,
{
is_server:false,
needs_count_in_si_lpres2:true,
wincaps wincap_7 __attribute__((section (".cygwin_dll_common"), shared)) = {
def_guard_pages:1,
+ mmap_storage_high:0x070000000000LL,
{
is_server:false,
needs_count_in_si_lpres2:false,
wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = {
def_guard_pages:2,
+ mmap_storage_high:0x070000000000LL,
{
is_server:false,
needs_count_in_si_lpres2:false,
wincaps wincap_8_1 __attribute__((section (".cygwin_dll_common"), shared)) = {
def_guard_pages:2,
+ mmap_storage_high:0x700000000000LL,
{
is_server:false,
needs_count_in_si_lpres2:false,
wincaps wincap_10_1507 __attribute__((section (".cygwin_dll_common"), shared)) = {
def_guard_pages:2,
+ mmap_storage_high:0x700000000000LL,
{
is_server:false,
needs_count_in_si_lpres2:false,
wincaps wincap_10_1703 __attribute__((section (".cygwin_dll_common"), shared)) = {
def_guard_pages:2,
+ mmap_storage_high:0x700000000000LL,
{
is_server:false,
needs_count_in_si_lpres2:false,
wincaps wincap_10_1709 __attribute__((section (".cygwin_dll_common"), shared)) = {
def_guard_pages:2,
+ mmap_storage_high:0x700000000000LL,
{
is_server:false,
needs_count_in_si_lpres2:false,
wincaps wincap_10_1803 __attribute__((section (".cygwin_dll_common"), shared)) = {
def_guard_pages:2,
+ mmap_storage_high:0x700000000000LL,
{
is_server:false,
needs_count_in_si_lpres2:false,
wincaps wincap_10_1809 __attribute__((section (".cygwin_dll_common"), shared)) = {
def_guard_pages:2,
+ mmap_storage_high:0x700000000000LL,
{
is_server:false,
needs_count_in_si_lpres2:false,
struct wincaps
{
DWORD def_guard_pages;
+ int64_t mmap_storage_high;
/* The bitfields must be 8 byte aligned on x86_64, otherwise the bitfield
ops generated by gcc are off by 4 bytes. */
struct __attribute__ ((aligned (8))) {
{
return ((wincaps *) this->caps)->def_guard_pages * page_size ();
}
+#ifdef __x86_64__
+ intptr_t IMPLEMENT (mmap_storage_high)
+#endif
bool IMPLEMENT (is_server)
bool IMPLEMENT (needs_count_in_si_lpres2)
bool IMPLEMENT (needs_query_information)