split DR vm reserve into vmheap vs vmcode
From bruen...@google.com on March 25, 2013 12:00:00
split from issue #774 (closed) vmheap = DR heap, non-client-privlib heap, client specified-unreachable heap, special heap for non-code (e.g., signal records)
vmcode = cache, sep stubs, coarse prefixes, gencode, client heap allocated directly by API
Prior work in issue #774 (closed) documented that the only heap that's guaranteed to be reachable from vmcode is heap allocated directly by client API routines. It also added dr_custom_alloc(), allowing a client to specify that its heap does not need to be reachable.
We want to separate out as much heap as possible from the limited-space 2GB reachable region, so we can handle very large apps, or a ton of heap usage from priv libs.
Helps static client too: need vmcode near app, and for large app, much easier w/o vmheap there too.
If vmheap is not in low 4GB, put Linux TLS alloc there (see "where put vm_base" notes)?
Need to implement the -reachable_heap option added earlier.
Original issue: http://code.google.com/p/dynamorio/issues/detail?id=1132