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.