Makefile: fix unaligned loads in sha1dc with UBSan
The sha1dc library uses unaligned loads on platforms that support them. This is normally what you'd want for performance, but it does cause UBSan to complain when we compile with SANITIZE=undefined. Just like we set -DNO_UNALIGNED_LOADS for our own code in that case, we should set -DSHA1DC_FORCE_ALIGNED_ACCESS. Of course that does nothing without pulling in the patches from sha1dc to respect that define. So let's do that, too, updating both the submodule link and our in-tree copy (from the same commit). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King committed
Mar 12, 2019 at 17:06 UTC
07a20f569b4b1690e717eaac0954007a8edfbfc2
3 files changed
+5
-3
Makefile
+1
@@ -1183,6 +1183,7 @@ BASIC_CFLAGS += -fsanitize=$(SANITIZE) -fno-sanitize-recover=$(SANITIZE)
1183
BASIC_CFLAGS += -fno-omit-frame-pointer
1184
ifneq ($(filter undefined,$(SANITIZERS)),)
1185
BASIC_CFLAGS += -DNO_UNALIGNED_LOADS
1186
+BASIC_CFLAGS += -DSHA1DC_FORCE_ALIGNED_ACCESS
1187
endif
1188
ifneq ($(filter leak,$(SANITIZERS)),)
1189
BASIC_CFLAGS += -DSUPPRESS_ANNOTATED_LEAKS
sha1collisiondetection
+1
-1
@@ -1 +1 @@
1
-Subproject commit 232357eb2ea0397388254a4b188333a227bf5b10
1
+Subproject commit 16033998da4b273aebd92c84b1e1b12e4aaf7009
sha1dc/sha1.c
+3
-2
@@ -124,10 +124,11 @@
124
#endif
125
/*ENDIANNESS SELECTION*/
126
127
+#ifndef SHA1DC_FORCE_ALIGNED_ACCESS
128
#if defined(SHA1DC_FORCE_UNALIGNED_ACCESS) || defined(SHA1DC_ON_INTEL_LIKE_PROCESSOR)
129
#define SHA1DC_ALLOW_UNALIGNED_ACCESS
129
-#endif /*UNALIGNMENT DETECTION*/
130
-
130
+#endif /*UNALIGNED ACCESS DETECTION*/
131
+#endif /*FORCE ALIGNED ACCESS*/
132
133
#define rotate_right(x,n) (((x)>>(n))|((x)<<(32-(n))))
134
#define rotate_left(x,n) (((x)<<(n))|((x)>>(32-(n))))