diff -ru a/src/DES_bs.c b/src/DES_bs.c --- a/src/DES_bs.c 2012-07-14 09:36:44.000000000 -0400 +++ b/src/DES_bs.c 2016-08-07 15:08:48.011369100 -0400 @@ -52,7 +52,7 @@ }; #if DES_BS_ASM -extern void DES_bs_init_asm(void); +extern void DES_INTERNAL DES_bs_init_asm(void); #endif void DES_bs_init(int LM, int cpt) --- a/src/DES_bs.h 2013-05-06 02:19:49.000000000 -0400 +++ b/src/DES_bs.h 2019-02-23 12:06:05.913582953 -0500 @@ -35,6 +35,16 @@ #define DES_bs_vector ARCH_WORD #endif +#ifndef HAVE_INTERNAL_ATTR +#define HAVE_INTERNAL_ATTR 0 +#endif + +#if HAVE_INTERNAL_ATTR +#define DES_INTERNAL __attribute__((visibility("internal"))) +#else +#define DES_INTERNAL +#endif + /* * All bitslice DES parameters combined into one struct for more efficient * cache usage. Don't re-order unless you know what you're doing, as there @@ -112,7 +122,7 @@ #else #define DES_bs_mt 0 #define DES_bs_cpt 1 -extern DES_bs_combined DES_bs_all; +extern DES_INTERNAL DES_bs_combined DES_bs_all; #define for_each_t(n) #define init_t() #endif @@ -120,7 +130,7 @@ /* * Initializes the internal structures. */ -extern void DES_bs_init(int LM, int cpt); +extern void DES_INTERNAL DES_bs_init(int LM, int cpt); /* * Sets a salt for DES_bs_crypt(). @@ -139,17 +149,17 @@ /* * Almost generic implementation: 24-bit salts, variable iteration count. */ -extern void DES_bs_crypt(int count, int keys_count); +extern void DES_INTERNAL DES_bs_crypt(int count, int keys_count); /* * A simplified special-case implementation: 12-bit salts, 25 iterations. */ -extern void DES_bs_crypt_25(int keys_count); +extern void DES_INTERNAL DES_bs_crypt_25(int keys_count); /* * Another special-case version: a non-zero IV, no salts, no iterations. */ -extern int DES_bs_crypt_LM(int *keys_count, struct db_salt *salt); +extern int DES_INTERNAL DES_bs_crypt_LM(int *keys_count, struct db_salt *salt); /* * Converts an ASCII ciphertext to binary to be used with one of the --- john-1.8.0/src/Makefile.orig 2013-05-29 23:21:25.000000000 +0000 +++ john-1.8.0/src/Makefile 2016-09-11 21:19:18.930129331 +0000 @@ -32,7 +32,7 @@ # CFLAGS for use on the main john.c file only CFLAGS_MAIN = $(CFLAGS) ASFLAGS = -c $(OMPFLAGS) -LDFLAGS = -s $(OMPFLAGS) +LDFLAGS = $(LDFLAGS_DEBUG) $(OMPFLAGS) OPT_NORMAL = -funroll-loops # Remove the "-Os" if you're using an ancient version of gcc OPT_INLINE = -Os -funroll-loops -finline-functions @@ -104,6 +104,13 @@ # @echo "linux-ppc64-altivec Linux, PowerPC 64-bit w/AltiVec" @echo "linux-ppc64 Linux, PowerPC 64-bit" @echo "linux-ia64 Linux, IA-64" + @echo "midipix-x86-64-avx Midipix, x86-64 with AVX (2011+ Intel CPUs)" + @echo "midipix-x86-64 Midipix, x86-64 with SSE2 (most common)" + @echo "midipix-x86-avx Midipix, x86 32-bit with AVX (2011+ Intel CPUs)" + @echo "midipix-x86-xop Midipix, x86 32-bit with AVX and XOP (2011+ AMD CPUs)" + @echo "midipix-x86-sse2 Midipix, x86 32-bit with SSE2 (most common, if 32-bit)" + @echo "midipix-x86-mmx Midipix, x86 32-bit with MMX (for old computers)" + @echo "midipix-x86-any Midipix, x86 32-bit (for truly ancient computers)" @echo "freebsd-x86-64 FreeBSD, x86-64 with SSE2 (best)" @echo "freebsd-x86-sse2 FreeBSD, x86 with SSE2 (best if 32-bit)" @echo "freebsd-x86-mmx FreeBSD, x86 with MMX" @@ -306,6 +313,64 @@ CFLAGS="$(CFLAGS) -DHAVE_CRYPT" \ LDFLAGS="$(LDFLAGS) -lcrypt" +midipix-x86-64-avx: + $(LN) x86-64.h arch.h + $(MAKE) $(PROJ) \ + JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o x86-64.o" \ + CFLAGS_MAIN="$(CFLAGS) -DJOHN_AVX -DHAVE_CRYPT -fvisibility=hidden -DHAVE_INTERNAL_ATTR" \ + CFLAGS="$(CFLAGS) -mavx -DHAVE_CRYPT -fvisibility=hidden -DHAVE_INTERNAL_ATTR" \ + ASFLAGS="$(ASFLAGS) -mavx" \ + LDFLAGS="$(LDFLAGS) -lcrypt" + +midipix-x86-64: + $(LN) x86-64.h arch.h + $(MAKE) $(PROJ) \ + JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o x86-64.o" \ + CFLAGS="$(CFLAGS) -DHAVE_CRYPT -fvisibility=hidden -DHAVE_INTERNAL_ATTR" \ + LDFLAGS="$(LDFLAGS) -lcrypt" + +midipix-x86-avx: + $(LN) x86-sse.h arch.h + $(MAKE) $(PROJ) \ + JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o x86.o" \ + CFLAGS_MAIN="$(CFLAGS) -m32 -DJOHN_AVX -DHAVE_CRYPT -fvisibility=hidden -DUNDERSCORES" \ + CFLAGS="$(CFLAGS) -m32 -mavx -DHAVE_CRYPT -fvisibility=hidden -DHAVE_INTERNAL_ATTR -DUNDERSCORES" \ + ASFLAGS="$(ASFLAGS) -m32 -mavx -DUNDERSCORES" \ + LDFLAGS="$(LDFLAGS) -m32 -lcrypt" + +midipix-x86-xop: + $(LN) x86-sse.h arch.h + $(MAKE) $(PROJ) \ + JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o x86.o" \ + CFLAGS_MAIN="$(CFLAGS) -m32 -DJOHN_XOP -DHAVE_CRYPT -fvisibility=hidden -DUNDERSCORES" \ + CFLAGS="$(CFLAGS) -m32 -mxop -DHAVE_CRYPT -fvisibility=hidden -DHAVE_INTERNAL_ATTR -DUNDERSCORES" \ + ASFLAGS="$(ASFLAGS) -m32 -mxop -DUNDERSCORES" \ + LDFLAGS="$(LDFLAGS) -m32 -lcrypt" + +midipix-x86-sse2: + $(LN) x86-sse.h arch.h + $(MAKE) $(PROJ) \ + JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o x86.o x86-sse.o" \ + CFLAGS="$(CFLAGS) -DHAVE_CRYPT -fvisibility=hidden -DHAVE_INTERNAL_ATTR -DUNDERSCORES" \ + ASFLAGS="$(ASFLAGS) -m32 -DUNDERSCORES" \ + LDFLAGS="$(LDFLAGS) -lcrypt" + +midipix-x86-mmx: + $(LN) x86-mmx.h arch.h + $(MAKE) $(PROJ) \ + JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o x86.o x86-mmx.o" \ + CFLAGS="$(CFLAGS) -DHAVE_CRYPT -fvisibility=hidden -DHAVE_INTERNAL_ATTR -DUNDERSCORES" \ + ASFLAGS="$(ASFLAGS) -m32 -DUNDERSCORES" \ + LDFLAGS="$(LDFLAGS) -lcrypt" + +midipix-x86-any: + $(LN) x86-any.h arch.h + $(MAKE) $(PROJ) \ + JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o x86.o" \ + CFLAGS="$(CFLAGS) -DHAVE_CRYPT -fvisibility=hidden -DHAVE_INTERNAL_ATTR -DUNDERSCORES" \ + ASFLAGS="$(ASFLAGS) -m32 -DUNDERSCORES" \ + LDFLAGS="$(LDFLAGS) -lcrypt" + freebsd-x86-64: $(LN) x86-64.h arch.h $(MAKE) $(PROJ) \