[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [RFC 21/22] x86/module: Add support for mcmodel large and PLTs

On Wed, Jul 19, 2017 at 11:58 AM, Thomas Garnier <thgarnie@xxxxxxxxxx> wrote:
> On Tue, Jul 18, 2017 at 8:59 PM, Brian Gerst <brgerst@xxxxxxxxx> wrote:
>> On Tue, Jul 18, 2017 at 9:35 PM, H. Peter Anvin <hpa@xxxxxxxxx> wrote:
>>> On 07/18/17 15:33, Thomas Garnier wrote:
>>>> With PIE support and KASLR extended range, the modules may be further
>>>> away from the kernel than before breaking mcmodel=kernel expectations.
>>>> Add an option to build modules with mcmodel=large. The modules generated
>>>> code will make no assumptions on placement in memory.
>>>> Despite this option, modules still expect kernel functions to be within
>>>> 2G and generate relative calls. To solve this issue, the PLT arm64 code
>>>> was adapted for x86_64. When a relative relocation go outside its range,
>>>> a dynamic PLT entry is used to correctly jump to the destination.
>>> Why large as opposed to medium or medium-PIC?
>> Or for that matter, why not small-PIC?  We aren't changing the size of
>> the kernel to be larger than 2G text or data.  Small-PIC would still
>> allow it to be placed anywhere in the address space, and would
>> generate far better code.
> My understanding was that small=PIC and medium=PIC assume that the
> module code is in the lower 2G of memory. I will do additional testing
> on the modules to confirm that.

That is only for small/medium absolute (non-PIC) code.  Think about
userspace shared libraries.  They are not limited to being mapped in
the lower 2G of the address space.

Brian Gerst

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.