diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2016-01-29 13:41:38 -0800 |
---|---|---|
committer | Jani Heikkinen <jani.heikkinen@theqtcompany.com> | 2016-02-02 19:23:36 +0000 |
commit | 3726c46735edb23ad37af818ff7d52d661ec87e7 (patch) | |
tree | 18915d79a6549e30e72565660396a50b2bb0b49a /dist/changes-4.1.5 | |
parent | 46c73be4710a6aa1be84a19151f73d87413a52b4 (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 'dist/changes-4.1.5')
0 files changed, 0 insertions, 0 deletions