This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/81490] x86: Handling of symbol ranges for __seg_fs/__seg_gs
- From: "hpa at zytor dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 20 Jul 2017 22:57:59 +0000
- Subject: [Bug target/81490] x86: Handling of symbol ranges for __seg_fs/__seg_gs
- Auto-submitted: auto-generated
- References: <bug-81490-4@http.gcc.gnu.org/bugzilla/>
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-bugzilla@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.