From 50b5c1f0e659018e482db46ea6dbd5d413c2e087 Mon Sep 17 00:00:00 2001 From: Ed Maste Date: Thu, 5 May 2016 21:25:41 +0000 Subject: [PATCH] Make libcrypto position independent on i386 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prior to this change libcrypto ended up with a .text relocation. Submitted by: Rafael EspĂ­ndola (earlier version) Reviewed by: kib Approved by: so (glebius) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D6164 --- secure/lib/libcrypto/Makefile | 2 +- secure/lib/libcrypto/i386/{crypt586.s => crypt586.S} | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) rename secure/lib/libcrypto/i386/{crypt586.s => crypt586.S} (99%) diff --git a/secure/lib/libcrypto/Makefile b/secure/lib/libcrypto/Makefile index fbb38e950c72..b41f533d16e8 100644 --- a/secure/lib/libcrypto/Makefile +++ b/secure/lib/libcrypto/Makefile @@ -137,7 +137,7 @@ SRCS+= cbc_cksm.c cbc_enc.c cfb64ede.c cfb64enc.c cfb_enc.c des_old.c \ fcrypt.c ofb64ede.c ofb64enc.c ofb_enc.c pcbc_enc.c qud_cksm.c \ rand_key.c read2pwd.c rpc_enc.c set_key.c str2key.c xcbc_enc.c .if ${MACHINE_CPUARCH} == "i386" -SRCS+= crypt586.s des-586.s +SRCS+= crypt586.S des-586.s .else SRCS+= des_enc.c fcrypt_b.c .endif diff --git a/secure/lib/libcrypto/i386/crypt586.s b/secure/lib/libcrypto/i386/crypt586.S similarity index 99% rename from secure/lib/libcrypto/i386/crypt586.s rename to secure/lib/libcrypto/i386/crypt586.S index 43f903a02d3c..a02a3fc0bd8b 100644 --- a/secure/lib/libcrypto/i386/crypt586.s +++ b/secure/lib/libcrypto/i386/crypt586.S @@ -14,7 +14,15 @@ fcrypt_body: xorl %edi,%edi xorl %esi,%esi +#ifdef PIC + calll .L1 +.L1: + popl %edx + addl $_GLOBAL_OFFSET_TABLE_+(.-.L1), %edx + movl DES_SPtrans@GOT(%edx), %edx +#else leal DES_SPtrans,%edx +#endif pushl %edx movl 28(%esp),%ebp pushl $25