This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, i386]: Additional fix for PR62599 with -mcmodel=medium -fpic
- From: Uros Bizjak <ubizjak at gmail dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>, Jakub Jelinek <jakub at redhat dot com>
- Date: Fri, 13 May 2016 09:07:38 +0200
- Subject: Re: [PATCH, i386]: Additional fix for PR62599 with -mcmodel=medium -fpic
- Authentication-results: sourceware.org; auth=none
- References: <CAFULd4aNJVQ4geKP+9FwZfpNe5GnBj79+2424bFVFQRuN9585A at mail dot gmail dot com> <CAMe9rOorn=vSjQ_hb4J6=va47aEG5A7nGOEPbUu66GuakJ-mag at mail dot gmail dot com> <CAMe9rOqONScz4+aWB-HDW0hguqxhpg6rCqdXUX4LBOFzk=kB=Q at mail dot gmail dot com>
On Fri, May 13, 2016 at 1:20 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
>>> testsuite/gcc.target/i386/pr61599-{1,2}.c testcases expose a failure
>>> with -mcmodel -fpic, where:
>>>
>>> /tmp/ccfpoxHY.o: In function `bar':
>>> pr61599-2.c:(.text+0xe): relocation truncated to fit: R_X86_64_PC32
>>> against symbol `a' defined in LARGE_COMMON section in /tmp/ccKTKST2.o
>>> collect2: error: ld returned 1 exit status
>>> compiler exited with status 1
>>>
>>> CM_MEDIUM_PIC code model assumes that code+got/plt fits in a 31 bit
>>> region, data is unlimited. Based on these assumptions, code should be
>>> accessed via R_X86_64_GOT64.
>>>
>>> Attached patch uses UNSPEC_GOT instead of UNSPEC_GOTPCREL also for
>>> CM_MEDIUM_PIC.
>>>
>>> 2016-05-12 Uros Bizjak <ubizjak@gmail.com>
>>>
>>> PR target/61599
>>> * config/i386/i386.c (legitimize_pic_address): Do not use
>>> UNSPEC_GOTPCREL for CM_MEDIUM_PIC code model.
>>>
>>> Patch was bootstrapped on x86_64-linux-gnu and regression tested with
>>> -mcmodel=medium -fpic.
>>>
>>> Jakub, H.J., do you have any comments on the patch?
>>
>>
>> I prefer this patch.
>>
>
> Oops wrong one. Here is the right one.
Yes, your patch is more precise.
Thanks,
Uros.