On Wed, Aug 12 2020, Christian Weisgerber <[email protected]> wrote:
> On 2020-08-10, Stuart Henderson <[email protected]> wrote:
>
>> x11/qt4
>>
>> ld: error: relocation R_386_PC32 cannot be used against symbol cti_vm_throw;
>> recompile with -fPIC
>>>>> defined in ../../JavaScriptCore/release/libjscore.a(JITStubs.o)
>>>>> referenced by JITStubs.cpp
>>>>> JITStubs.o:(.text+0x21) in archive
>>>>> ../../JavaScriptCore/release/libjscore.a
>
> We've seen that error before. That was in textproc/wkhtmltopdf,
> which builds its own included copy of Qt4 WebKit. Back then, removing
> -ffunction-sections from the compiler flags fixed it.
>
> Now the problem is back, in both wkhtmltopdf and qt4, without
> -ffunction-sections. I thought maybe LLVM 10 had enabled this
> option by default, but it doesn't look like it. -fno-function-sections
> also has no effect.
>
> I don't understand what's going on. There is a short assembly stub,
> ctiVMThrowTrampoline(), which CALLs cti_vm_throw(). Somehow that
> generates an R_386_PC32 relocation, and somehow that is incompatible
> with PIC. (How can PC-relative addressing be incompatible with
> position-independent code?)
>
> With LLVM 8, there is no callable ctiVMThrowTrampoline() function
> in the object file, and ctiVMThrowTrampoline's code is inlined...
> somewhere.
I suspect the problem is similar to what happened with binutils-2.17 on
amd64 (fixed by kettenis@ in 2015). Mark, sounds fair? Note that qt4
is unsupported upstream, so no need for a "clean" patch.
I don't have an i386 ports test rig. naddy, do you still run i386 test
builds? Else I can just push it in the tree for sthen to pick up in
the next bulk, it won't make things worse...
Index: Makefile
===================================================================
RCS file: /cvs/ports/x11/qt4/Makefile,v
retrieving revision 1.163
diff -u -p -r1.163 Makefile
--- Makefile 18 Mar 2020 05:14:03 -0000 1.163
+++ Makefile 13 Aug 2020 09:42:18 -0000
@@ -26,7 +26,7 @@ PKGNAME-main = qt4-${PKGVERSION}
PKGNAME-debug = qt4-debug-${PKGVERSION}
FULLPKGNAME-html = qt4-html-${PKGVERSION}
FULLPKGPATH-html = ${BASE_PKGPATH},-html
-REVISION-main = 22
+REVISION-main = 23
REVISION-mysql = 8
REVISION-postgresql = 7
REVISION-sqlite2 = 7
Index: patches/patch-src_3rdparty_webkit_Source_JavaScriptCore_jit_JITStubs_cpp
===================================================================
RCS file:
/cvs/ports/x11/qt4/patches/patch-src_3rdparty_webkit_Source_JavaScriptCore_jit_JITStubs_cpp,v
retrieving revision 1.1
diff -u -p -r1.1
patch-src_3rdparty_webkit_Source_JavaScriptCore_jit_JITStubs_cpp
--- patches/patch-src_3rdparty_webkit_Source_JavaScriptCore_jit_JITStubs_cpp
13 May 2015 14:03:07 -0000 1.1
+++ patches/patch-src_3rdparty_webkit_Source_JavaScriptCore_jit_JITStubs_cpp
13 Aug 2020 09:42:18 -0000
@@ -1,12 +1,17 @@
$OpenBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_jit_JITStubs_cpp,v
1.1 2015/05/13 14:03:07 kettenis Exp $
---- src/3rdparty/webkit/Source/JavaScriptCore/jit/JITStubs.cpp.orig Thu Apr
10 20:37:11 2014
-+++ src/3rdparty/webkit/Source/JavaScriptCore/jit/JITStubs.cpp Wed May 13
11:03:44 2015
+
+- ld: error: relocation R_386_PC32 cannot be used against symbol cti_vm_throw;
recompile with -fPIC
+ ^ on i386
+
+Index: src/3rdparty/webkit/Source/JavaScriptCore/jit/JITStubs.cpp
+--- src/3rdparty/webkit/Source/JavaScriptCore/jit/JITStubs.cpp.orig
++++ src/3rdparty/webkit/Source/JavaScriptCore/jit/JITStubs.cpp
@@ -79,7 +79,7 @@ namespace JSC {
#define THUMB_FUNC_PARAM(name)
#endif
-#if (OS(LINUX) || OS(FREEBSD)) && CPU(X86_64)
-+#if (OS(LINUX) || OS(FREEBSD) || OS(OPENBSD)) && CPU(X86_64)
++#if (OS(LINUX) || OS(FREEBSD) || OS(OPENBSD)) && (CPU(X86) || CPU(X86_64))
#define SYMBOL_STRING_RELOCATION(name) #name "@plt"
#elif OS(DARWIN) || (CPU(X86_64) && COMPILER(MINGW) &&
!GCC_VERSION_AT_LEAST(4, 5, 0))
#define SYMBOL_STRING_RELOCATION(name) "_" #name
--
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE