Monday, July 29, 2019

gnutls / i386: can't create dynamic relocation R_386_32 .. symbol .. in readonly segment

On 2019/07/27 03:55, Antoine Jacoutot wrote:
> CVSROOT: /cvs
> Module name: ports
> Changes by: ajacoutot@cvs.openbsd.org 2019/07/27 03:55:17
>
> Modified files:
> security/gnutls: Makefile distinfo
> security/gnutls/pkg: PLIST
>
> Log message:
> Update to gnutls-3.6.9.
>

Unfortunately the asm changes in this update break i386,

ld: error: can't create dynamic relocation R_386_32 against symbol: _gnutls_x86_cpuid_s in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow text relocations in the output
>>> defined in /usr/obj/ports/gnutls-3.6.9/gnutls-3.6.9/lib/accelerated/.libs/libaccelerated.a(x86-common.o)
>>> referenced by aesni-x86.s
>>> aesni-x86.o:(_aesni_set_encrypt_key) in archive /usr/obj/ports/gnutls-3.6.9/gnutls-3.6.9/lib/accelerated/.libs/libaccelerated.a

This unbreaks things but maybe somebody has a better idea..

Index: Makefile
===================================================================
RCS file: /cvs/ports/security/gnutls/Makefile,v
retrieving revision 1.158
diff -u -p -r1.158 Makefile
--- Makefile 27 Jul 2019 09:55:17 -0000 1.158
+++ Makefile 29 Jul 2019 19:40:58 -0000
@@ -57,8 +57,13 @@ CONFIGURE_ARGS += --without-tpm
CONFIGURE_ARGS += --enable-local-libopts
CONFIGURE_ARGS += ac_cv_prog_autogen=

+LDFLAGS= -L${LOCALBASE}/lib
+.if ${MACHINE_ARCH:Mi386}
+LDFLAGS+= -Wl,-z,notext
+.endif
+
CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
- LDFLAGS="-L${LOCALBASE}/lib"
+ LDFLAGS="${LDFLAGS}"

post-install:
${INSTALL_DATA_DIR} ${PREFIX}/share/doc/gnutls

No comments:

Post a Comment