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:
2026-07-17 13:52:09 -04:00
co-authored by Claude Opus 4.8
parent b1322c8f47
commit 1ff81c17bb
+6 -1
View File
@@ -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)"