pcre2: --disable-jit — el JIT rompía el enlace static-PIE de qtbase (landmine del modelo)
qtbase falló al linkear: ld.lld 'relocation R_X86_64_64 cannot be used against local symbol' en libpcre2-16.a(pcre2_jit_compile.o). El JIT de PCRE2 emite relocaciones absolutas en .rodata (sus tablas de código generado) que son incompatibles con PIE — y TODO binario static musl de hammer se enlaza PIE. No es un problema de Qt: es un landmine para el modelo entero; cualquier binario PIE que linkee pcre2 con JIT lo pisa. Fix raíz: --disable-jit. El regex queda un pelo más lento y la API NO cambia (pcre2_jit_compile devuelve error si no hay JIT, los consumidores lo manejan). Rehashea pcre2 y sus dependientes, pero ya estaban en deuda (lo re-sellé este ciclo con el arreglo static). Destraba qtbase → la raíz del árbol KDE (↑117). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+6
-1
@@ -32,7 +32,12 @@ compile = '''
|
||||
--prefix=/usr \
|
||||
--disable-shared --enable-static \
|
||||
--enable-pcre2-16 --enable-pcre2-32 \
|
||||
--enable-jit \
|
||||
--disable-jit \
|
||||
`# JIT DESACTIVADO (2026-07-17): pcre2_jit_compile.o emite R_X86_64_64 contra símbolos locales en` \
|
||||
`# .rodata (tablas del JIT). Al enlazar libpcre2-16.a en qtbase —PIE, como TODO binario static` \
|
||||
`# musl de hammer— ld.lld lo rechaza ("relocation cannot be used against local symbol"). El JIT es` \
|
||||
`# un landmine para el modelo static-PIE entero, no sólo Qt. Sin JIT el regex es un pelo más lento` \
|
||||
`# y la API no cambia (pcre2_jit_compile devuelve error si no hay JIT). Destraba qtbase → el árbol KDE.` \
|
||||
--enable-pcre2grep-libz \
|
||||
--disable-symvers
|
||||
make LDFLAGS="-all-static -no-pie" -j"$(nproc)"
|
||||
|
||||
Reference in New Issue
Block a user