https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81490

--- Comment #13 from H. Peter Anvin <hpa at zytor dot com> ---
On July 20, 2017 10:47:54 AM PDT, ubizjak at gmail dot com
<gcc-bugzi...@gcc.gnu.org> wrote:
>https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81490
>
>--- Comment #12 from Uroš Bizjak <ubizjak at gmail dot com> ---
>(In reply to Andy Lutomirski from comment #8)
>
>> I would like to see something along these lines but even stronger: a
>way to
>> instruct GCC to use a particular type of access and relocation.  For
>> example, I think I should be able to ask GCC to reference symbol
>"foo" using
>> a PC-relative relocation or using an absolute relocation at my
>option.
>
>Please note that the reason to use RIP relative address is one byte
>shorter
>insn sequence:
>
>        addl    $1, %gs:a(%rip)
>        addl    $2, %gs:a
>
>assembles to:
>
>   0:   65 83 05 00 00 00 00    addl   $0x1,%gs:0x0(%rip)        # 0x8
>   7:   01 
>                        3: R_X86_64_PC32        a-0x5
>   8:   65 83 04 25 00 00 00    addl   $0x2,%gs:0x0
>   f:   00 02 
>                        c: R_X86_64_32S a
>
>I'm not familiar with kernel code model assumptions, the doc says that 
>
>'-mcmodel=kernel'
>     Generate code for the kernel code model.  The kernel runs in the
>     negative 2 GB of the address space.  This model has to be used for
>     Linux kernel code.
>
>so assuming that code and data fits in 2 GB of address space, all
>symbols
>should be reachable with either relocation.
>
>OTOH, we can avoid RIP relative addresses for non-default address
>spaces, when
>-mcmodel=kernel compile flag is in effect.

It's not just about the kernel model.  The example I have is for the small-pic
model.  We are considering moving away from the kernel model.

Reply via email to