This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH v2 13/13] Add hook for modifying debug info for address spaces
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Richard Henderson <rth at redhat dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, Richard Biener <richard dot guenther at gmail dot com>
- Date: Wed, 21 Oct 2015 10:23:50 -0700
- Subject: Re: [PATCH v2 13/13] Add hook for modifying debug info for address spaces
- Authentication-results: sourceware.org; auth=none
- References: <1445376433-14658-1-git-send-email-rth at redhat dot com> <1445376433-14658-14-git-send-email-rth at redhat dot com> <CAMe9rOq0URCa03gv9rLB=BajgkeTg9vjvb58Cri9t5Vz-mQM2A at mail dot gmail dot com> <5627C8B2 dot 6020901 at redhat dot com>
On Wed, Oct 21, 2015 at 10:17 AM, Richard Henderson <rth@redhat.com> wrote:
> On 10/21/2015 04:53 AM, H.J. Lu wrote:
>>
>> On Tue, Oct 20, 2015 at 2:27 PM, Richard Henderson <rth@redhat.com> wrote:
>>>
>>> ---
>>> gcc/config/i386/i386.c | 21 +++++++++++++++++++++
>>> gcc/doc/tm.texi | 7 +++++++
>>> gcc/doc/tm.texi.in | 2 ++
>>> gcc/dwarf2out.c | 48
>>> +++++++++++++++++++++++++++++-------------------
>>> gcc/target.def | 10 ++++++++++
>>> gcc/targhooks.c | 8 ++++++++
>>> gcc/targhooks.h | 1 +
>>> 7 files changed, 78 insertions(+), 19 deletions(-)
>>>
>>> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
>>> index 8f833d1..9fb0fac 100644
>>> --- a/gcc/config/i386/i386.c
>>> +++ b/gcc/config/i386/i386.c
>>> @@ -53707,6 +53707,27 @@ ix86_addr_space_convert (rtx op, tree from_type,
>>> tree to_type)
>>> #undef TARGET_ADDR_SPACE_CONVERT
>>> #define TARGET_ADDR_SPACE_CONVERT ix86_addr_space_convert
>>>
>>> +static int
>>> +ix86_addr_space_debug (addr_space_t as)
>>> +{
>>> + /* Represent debugging for address spaces with DW_AT_segment,
>>> + and the dwarf register for fsbase/gsbase. */
>>> + if (as == ADDR_SPACE_SEG_TLS)
>>> + as = DEFAULT_TLS_SEG_REG;
>>> +
>>> + /* ??? These register numbers are defined in the x86-64 abi,
>>> + but there is no corresponding definition for the i386 abi.
>>> + That said, {58,59} appear to be reserved, so perhaps best
>>> + to use the same numbers in the 32-bit abi. */
>>> + if (as == ADDR_SPACE_SEG_FS)
>>> + return ~58; /* dwarf fsbase */
>>> + else if (as == ADDR_SPACE_SEG_GS)
>>> + return ~59; /* dwarf gsbase */
>>> + gcc_unreachable ();
>>> +}
>>
>>
>> This is wrong for i386 psABI. Please use the DWARF register
>> numbers listed in Table 2.14: DWARF Register Number Mapping
>> in Intel386 psABI:
>>
>> https://github.com/hjl-tools/x86-psABI/wiki/X86-psABI
>>
>> Segment Register ES 40 %es
>> Segment Register CS 41 %cs
>> Segment Register SS 42 %ss
>> Segment Register DS 43 %ds
>> Segment Register FS 44 %fs
>> Segment Register GS 45 %gs
>
>
> I'm not looking for the segment register (aka descriptor), I'm looking for
> the segment base. Not the same thing.
>
> As I note in the comment, there is no such definition in the i386 psabi,
> while there is in the x86-64 psabi.
We can define them as 93 and 94. 50-92 were used for other registers
before and have been deprecated now. But some old tools may
still use them.
--
H.J.