On Fri, May 13, 2016 at 1:20 AM, H.J. Lu <hjl.to...@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  <ubiz...@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.

Reply via email to