On Mon, 2019-06-10 at 11:02 -0700, Dave Hansen wrote: > On 6/10/19 8:22 AM, Yu-cheng Yu wrote: > > > How does glibc know the linear address space size? We don’t want LA64 to > > > break old binaries because the address calculation changed. > > > > When an application starts, its highest stack address is determined. > > It uses that as the maximum the bitmap needs to cover. > > Huh, I didn't think we ran code from the stack. ;) > > Especially given the way that we implemented the new 5-level-paging > address space, I don't think that expecting code to be below the stack > is a good universal expectation. Yes, you make a good point. However, allowing the application manage the bitmap is the most efficient and flexible. If the loader finds a legacy lib is beyond the bitmap can cover, it can deal with the problem by moving the lib to a lower address; or re-allocate the bitmap. If the loader cannot allocate a big bitmap to cover all 5-level address space (the bitmap will be large), it can put all legacy lib's at lower address. We cannot do these easily in the kernel. Yu-cheng