summaryrefslogtreecommitdiffstats
path: root/mkspecs/unsupported
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2016-01-29 13:41:38 -0800
committerJani Heikkinen <jani.heikkinen@theqtcompany.com>2016-02-02 19:23:36 +0000
commit3726c46735edb23ad37af818ff7d52d661ec87e7 (patch)
tree18915d79a6549e30e72565660396a50b2bb0b49a /mkspecs/unsupported
parent46c73be4710a6aa1be84a19151f73d87413a52b4 (diff)
Work around Clang < 3.7 integrated assembler bug PC-relative relocs
The qversiontagging.h inline assembly expands to: .long qt_version_tag@GOTPCREL Which, with GCC, Clang >= 3.7 and with the option -no-integrated-as in previous versions, produces the proper relocation (a R_X86_64_GOTPCREL). With Clang < 3.7, it instead produces a R_X86_64_32, which is unsuitable for use in shared libraries: 32-bit displacement is insufficiently wide and would produce linker errors like obj/qftp.o: requires dynamic R_X86_64_32 reloc against 'qt_version_tag' which may overflow at runtime; recompile with -fPIC Instead, force a 64-bit relocation (an R_X86_64_GOT64), which like the 32-bit version is simply an offset into the GOT of where the address of the symbol is stored. Task-number: QTBUG-50749 Change-Id: I7a9e11d7b64a4cc78e24ffff142e039c172b802c Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'mkspecs/unsupported')
0 files changed, 0 insertions, 0 deletions