The branch, master has been updated via 73faaab2 Pass --noexecstack to assembler. via 9467c1f9 Fix conditional directives in the asm file via 04653dab Exclude the asm code when it's not being used. via 19617f7b Fix compiling in a separate dir. via b218de27 lib/md5-asm-x86_64.s: fix build with Apple Clang via d4764934 A slightly modified g++/clang++ check. from c225330a Preparing for release of 3.2.0
https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 73faaab26d7db19ae6e04396a6e9d6372ed8e4ad Author: Wayne Davison <wa...@opencoder.net> Date: Sat Jun 20 09:23:56 2020 -0700 Pass --noexecstack to assembler. commit 9467c1f9b9b581e3abe78e00cc71de06fc175887 Author: Wayne Davison <wa...@opencoder.net> Date: Sat Jun 20 08:44:04 2020 -0700 Fix conditional directives in the asm file - Switch .s -> .S to enable the preprocessor. - Move some defines from mdigest.h to md-defines.h. - Tweak the asm file to use md-defines.h. - Add a couple missing .h dependencies in the Makefile. commit 04653dabc8dff8c85d75ccab57749e0af91a03cb Author: Wayne Davison <wa...@opencoder.net> Date: Sat Jun 20 07:59:26 2020 -0700 Exclude the asm code when it's not being used. commit 19617f7b4a423b8262e24111d1edc7a1c422525f Author: Wayne Davison <wa...@opencoder.net> Date: Sat Jun 20 07:58:50 2020 -0700 Fix compiling in a separate dir. commit b218de27027673d6bb7842388412f73cde93d210 Author: Caleb Xu <calebcen...@live.com> Date: Sat Jun 20 00:12:15 2020 -0400 lib/md5-asm-x86_64.s: fix build with Apple Clang The Mach-O x86-64 model doesn't seem to support ".type" and ".size" directives in assembly. Add ifdefs that should allow for the file to build without issues in Apple Clang. commit d4764934c35bdff297a03551c583be611cb8c64c Author: Wayne Davison <wa...@opencoder.net> Date: Fri Jun 19 23:23:52 2020 -0700 A slightly modified g++/clang++ check. ----------------------------------------------------------------------- Summary of changes: Makefile.in | 8 +++--- configure.ac | 42 ++++++++++++++---------------- lib/md-defines.h | 15 +++++++++++ lib/{md5-asm-x86_64.s => md5-asm-x86_64.S} | 16 ++++++++++++ lib/mdigest.h | 15 +---------- md2man | 11 ++++---- 6 files changed, 62 insertions(+), 45 deletions(-) create mode 100644 lib/md-defines.h rename lib/{md5-asm-x86_64.s => md5-asm-x86_64.S} (98%) Changeset truncated at 500 lines: diff --git a/Makefile.in b/Makefile.in index 31ddc43b..235b01dc 100644 --- a/Makefile.in +++ b/Makefile.in @@ -37,7 +37,7 @@ SIMD_x86_64=simd-checksum-x86_64.o lib/md5-asm-x86_64.o GENFILES=configure.sh aclocal.m4 config.h.in proto.h proto.h-tstamp rsync.1 rsync.1.html \ rsync-ssl.1 rsync-ssl.1.html rsyncd.conf.5 rsyncd.conf.5.html HEADERS=byteorder.h config.h errcode.h proto.h rsync.h ifuncs.h itypes.h inums.h \ - lib/pool_alloc.h + lib/pool_alloc.h lib/mdigest.h lib/md-defines.h LIBOBJ=lib/wildmatch.o lib/compat.o lib/snprintf.o lib/mdfour.o lib/md5.o \ lib/permstring.o lib/pool_alloc.o lib/sysacls.o lib/sysxattrs.o @LIBOBJS@ zlib_OBJS=zlib/deflate.o zlib/inffast.o zlib/inflate.o zlib/inftrees.o \ @@ -132,10 +132,10 @@ rounding.h: rounding.c rsync.h proto.h @rm -f rounding.out simd-checksum-x86_64.o: simd-checksum-x86_64.cpp - $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $(srcdir)/simd-checksum-x86_64.cpp + $(CXX) -I. $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $(srcdir)/simd-checksum-x86_64.cpp -lib/md5-asm-x86_64.o: lib/md5-asm-x86_64.s - $(CC) -c -o $@ $(srcdir)/lib/md5-asm-x86_64.s +lib/md5-asm-x86_64.o: lib/md5-asm-x86_64.S config.h lib/md-defines.h + $(CC) -I. -Wa,--noexecstack -c -o $@ $(srcdir)/lib/md5-asm-x86_64.S tls$(EXEEXT): $(TLS_OBJ) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(TLS_OBJ) $(LIBS) diff --git a/configure.ac b/configure.ac index d665498d..f6ca5e66 100644 --- a/configure.ac +++ b/configure.ac @@ -204,30 +204,28 @@ if test x"$enable_simd" != x"no"; then # For x86-64 SIMD, g++ >=5 or clang++ >=7 is required if test x"$build_cpu" = x"x86_64"; then CXX_OK= - if test x"$CXX" != x""; then - CXX_VERSION=`$CXX --version 2>/dev/null | head -n 1` - case "$CXX_VERSION" in - g++*) - CXX_VERSION=`$CXX -dumpversion | sed 's/\..*//g'` - if test "$CXX_VERSION" -ge "5"; then - CXX_OK=yes - fi - ;; - *clang*) - # $CXX -dumpversion would have been ideal, but is broken on older clang - CXX_VERSION=`echo "$CXX_VERSION" | sed 's/.*version //g' | sed 's/\..*//g'` - if test "$CXX_VERSION" -ge "7"; then - CXX_OK=yes - fi - ;; - *) - CXX_VERSION='Unknown' - ;; - esac - else + case "$CXX" in + g++|*-g++) + CXX_VERSION=`$CXX -dumpversion | sed 's/\..*//'` + if test "$CXX_VERSION" -ge "5"; then + CXX_OK=yes + fi + ;; + *clang*) + # -dumpversion is broken on older clang versions, so we need a fallback. + CXX_VERSION=`$CXX -dumpversion 2>/dev/null | sed 's/\..*//'` + if test x"$CXX_VERSION" = x; then + CXX_VERSION=`$CXX --version | head -n 1 | sed 's/.*version //' | sed 's/\..*//'` + fi + if test "$CXX_VERSION" -ge "7"; then + CXX_OK=yes + fi + ;; + *) CXX='No c++' CXX_VERSION='Unknown' - fi + ;; + esac if test x"$CXX_OK" = x"yes"; then # AC_MSG_RESULT() is called below. SIMD="$SIMD x86_64" diff --git a/lib/md-defines.h b/lib/md-defines.h new file mode 100644 index 00000000..b92e8c07 --- /dev/null +++ b/lib/md-defines.h @@ -0,0 +1,15 @@ +/* Keep this simple so both C and ASM can use it */ + +#define MD4_DIGEST_LEN 16 +#define MD5_DIGEST_LEN 16 +#define MAX_DIGEST_LEN MD5_DIGEST_LEN + +#define CSUM_CHUNK 64 + +#define CSUM_NONE 0 +#define CSUM_MD4_ARCHAIC 1 +#define CSUM_MD4_BUSTED 2 +#define CSUM_MD4_OLD 3 +#define CSUM_MD4 4 +#define CSUM_MD5 5 +#define CSUM_XXH64 6 diff --git a/lib/md5-asm-x86_64.s b/lib/md5-asm-x86_64.S similarity index 98% rename from lib/md5-asm-x86_64.s rename to lib/md5-asm-x86_64.S index a3126151..4eb884ed 100644 --- a/lib/md5-asm-x86_64.s +++ b/lib/md5-asm-x86_64.S @@ -24,12 +24,22 @@ * show any significant difference in performance, though. */ +#include "config.h" +#include "md-defines.h" + +#if !defined USE_OPENSSL && CSUM_CHUNK == 64 + .text .align 16 +#ifndef __apple_build_version__ .globl md5_process_asm .type md5_process_asm,@function md5_process_asm: +#else +.globl _md5_process_asm +_md5_process_asm: +#endif push %rbp push %rbx push %r12 @@ -689,5 +699,11 @@ md5_process_asm: pop %rbx pop %rbp ret +#ifndef __apple_build_version__ .L_md5_process_asm_end: .size md5_process_asm,.L_md5_process_asm_end-md5_process_asm +#else +L_md5_process_asm_end: +#endif + +#endif /* !USE_OPENSSL ... */ diff --git a/lib/mdigest.h b/lib/mdigest.h index c3d22baa..db174017 100644 --- a/lib/mdigest.h +++ b/lib/mdigest.h @@ -4,20 +4,7 @@ #include "openssl/md4.h" #include "openssl/md5.h" #endif - -#define MD4_DIGEST_LEN 16 -#define MD5_DIGEST_LEN 16 -#define MAX_DIGEST_LEN MD5_DIGEST_LEN - -#define CSUM_CHUNK 64 - -#define CSUM_NONE 0 -#define CSUM_MD4_ARCHAIC 1 -#define CSUM_MD4_BUSTED 2 -#define CSUM_MD4_OLD 3 -#define CSUM_MD4 4 -#define CSUM_MD5 5 -#define CSUM_XXH64 6 +#include "md-defines.h" typedef struct { uint32 A, B, C, D; diff --git a/md2man b/md2man index 22965019..ef4e58d6 100755 --- a/md2man +++ b/md2man @@ -83,8 +83,9 @@ def main(): fi.title = fi.prog + '(' + fi.sect + ') man page' fi.mtime = 0 - if os.path.lexists(fi.srcdir + '.git'): - fi.mtime = int(subprocess.check_output('git log -1 --format=%at'.split())) + git_dir = fi.srcdir + '.git' + if os.path.lexists(git_dir): + fi.mtime = int(subprocess.check_output(['git', '--git-dir', git_dir, 'log', '-1', '--format=%at'])) env_subs = { 'prefix': os.environ.get('RSYNC_OVERRIDE_PREFIX', None) } @@ -92,15 +93,15 @@ def main(): env_subs['VERSION'] = '1.0.0' env_subs['libdir'] = '/usr' else: - for fn in 'NEWS.md Makefile'.split(): + for fn in (fi.srcdir + 'NEWS.md', 'Makefile'): try: - st = os.lstat(fi.srcdir + fn) + st = os.lstat(fn) except: die('Failed to find', fi.srcdir + fn) if not fi.mtime: fi.mtime = st.st_mtime - with open(fi.srcdir + 'Makefile', 'r', encoding='utf-8') as fh: + with open('Makefile', 'r', encoding='utf-8') as fh: for line in fh: m = re.match(r'^(\w+)=(.+)', line) if not m: -- The rsync repository. _______________________________________________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs