On 08/21/17 07:28, Peter Zijlstra wrote: > > Ah, I see, this is large mode and that needs to use MOVABS to load 64bit > immediates. Still, small RIP relative should be able to live at any > point as long as everything lives inside the same 2G relative range, so > would still allow the goal of increasing the KASLR range. > > So I'm not seeing how we need large mode for that. That said, after > reading up on all this, RIP relative will not be too pretty either, > while CALL is naturally RIP relative, data still needs an explicit %rip > offset, still loads better than the large model. >
The large model makes no sense whatsoever. I think what we're actually looking for is the small-PIC model. Ingo asked: > I.e. is there no GCC code generation mode where code can be placed anywhere > in the > canonical address space, yet call and jump distance is within 31 bits so that > the > generated code is fast? That's the small-PIC model. I think if all symbols are forced to hidden then it won't even need a GOT/PLT. We do need to consider how we want modules to fit into whatever model we choose, though. They can be adjacent, or we could go with a more traditional dynamic link model where the modules can be separate, and chained together with the main kernel via the GOT. -hpa _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel