Make adjustments to how MAP_STACK works to prevent improper mmap()s.
Record that a vm_map_entry is a stack mapping. When locating free space
do not allow non-MAP_STACK mappings to use space reserved by MAP_STACK
mappings, unless MAP_FIXED is used of course.
Previously MAP_STACK mappings implied MAP_FIXED, which is not how they are
supposed to work. Implement proper hinting without MAP_FIXED.
Do not allow a normal mmap() call to use space reserved by a MAP_STACK
mapping (unless MAP_FIXED is used of course).
The proper method of making a MAP_STACK mapping inside another MAP_STACK
mapping is to use MAP_STACK | MAP_TRYFIXED. For now, though, we silently
imply MAP_TRYFIXED when MAP_STACK is specified and it will work without it.
Document MAP_TRYFIXED and make it also relax additional requirements imposed
by MAP_STACK mappings inside of MAP_STACK mappings.
Adjust libthread_xu to use MAP_STACK | MAP_TRYFIXED.