VMS is a historically 32bit operating system in a 64bit world and with the need to retain binary compatibility with old applications. The stack remains forever 32bit but the heap can be either 32bit or 64bit. A logical name (aka environment variable) is currently used to switch between, but was considered too coarse, so a binder switch is introduced: -Hnn where nn is 32 or 64 to lock an image to a particular heap regardless of the logical name setting. Tested on x86_64-pc-linux-gnu, committed on trunk 2010-06-23 Doug Rupp * bindusg.adb (Display): Write -Hnn line. * bindgen.adb (Gen_Adainit_Ada): Write Heap_Size to binder file as necessary. * init.c (__gl_heap_size): Rename from __gl_no_malloc_64 and change valid values to 32 and 64. (GNAT$NO_MALLOC_64): Recognize TRUE, 1, FALSE, and 0 in addition to ENABLE, DISABLE as valid settings. * switch-b.adb (Scan_Binder_Switches): Process -Hnn switch. * memtrack-vms_64.adb (Gnat_Heap_Size): Rename from Gnat_No_Malloc64 and change valid values to 32 and 64. * s-memory-vms_64.adb (Gnat_Heap_Size): Likewise. * opt.ads (Heap_Size): New global variable. * gcc-interface/utils2.c (maybe_wrap_malloc): Remove mostly redundant TARGET_MALLOC64 check. Fix comment.