That's one way to do it, dealing with linkers was really not my thing so I just get the mapped memory list [1] and set it as the start pivot then stack pages on top of it [2]. Thankfully the brk heap isn't intrusive enough to climb up into the pages I allocated :) (this is actually why Linux' MAP_32BIT mmap starts from 0x40000000 [3], but I didn't like how high it was and made it dynamic)
[1]: https://github.com/1fishe2fishe/EXODUS/blob/90f70386b8ac6bd0...
[2]: https://github.com/1fishe2fishe/EXODUS/blob/90f70386b8ac6bd0...
[3]: https://github.com/torvalds/linux/blob/8f2c057754b25075aa3da...