From: Jeff King <peff@peff.net> To: Junio C Hamano <gitster@pobox.com> Cc: Jeffrey Walton <noloader@gmail.com>, Todd Zullinger <tmz@pobox.com>, Git List <git@vger.kernel.org> Subject: disabling sha1dc unaligned access, was Re: One failed self test on Fedora 29 Date: Sun, 10 Mar 2019 23:37:55 -0400 Message-ID: <20190311033755.GB7087@sigill.intra.peff.net> (raw) In-Reply-To: <xmqq1s3emapy.fsf@gitster-ct.c.googlers.com> On Mon, Mar 11, 2019 at 11:00:25AM +0900, Junio C Hamano wrote: > Jeffrey Walton <noloader@gmail.com> writes: > > > I think this is the patch for sha1dc/sha1.c . It stops using unaligned > > accesses by default, but still honors SHA1DC_FORCE_UNALIGNED_ACCESS > > for those who want it. Folks who want the undefined behavior have to > > do something special. > > Hmph, I somehow thought that folks who want to stick to the > standard printed on paper penalizing what practicaly works well in > the real world would be the one doing extra things. Unfortunately, I don't think sha1dc currently supports #defines in that direction. The only logic is "if we are on intel, do unaligned loads" and "even if we are not on intel, do it anyway". There is no "even if we are on intel, do not do unaligned loads". I think you'd need something like this: diff --git a/Makefile b/Makefile index 148668368b..705c54dcd8 100644 --- a/Makefile +++ b/Makefile @@ -1194,6 +1194,7 @@ BASIC_CFLAGS += -fsanitize=$(SANITIZE) -fno-sanitize-recover=$(SANITIZE) BASIC_CFLAGS += -fno-omit-frame-pointer ifneq ($(filter undefined,$(SANITIZERS)),) BASIC_CFLAGS += -DNO_UNALIGNED_LOADS +BASIC_CFLAGS += -DSHA1DC_DISALLOW_UNALIGNED_ACCESS endif ifneq ($(filter leak,$(SANITIZERS)),) BASIC_CFLAGS += -DSUPPRESS_ANNOTATED_LEAKS diff --git a/sha1dc/sha1.c b/sha1dc/sha1.c index df0630bc6d..0bdf80d778 100644 --- a/sha1dc/sha1.c +++ b/sha1dc/sha1.c @@ -124,9 +124,11 @@ #endif /*ENDIANNESS SELECTION*/ +#ifndef SHA1DC_DISALLOW_UNALIGNED_ACCESS #if defined(SHA1DC_FORCE_UNALIGNED_ACCESS) || defined(SHA1DC_ON_INTEL_LIKE_PROCESSOR) #define SHA1DC_ALLOW_UNALIGNED_ACCESS #endif /*UNALIGNMENT DETECTION*/ +#endif #define rotate_right(x,n) (((x)>>(n))|((x)<<(32-(n)))) but of course we cannot touch sha1dc/*, because we might actually be using the submodule copy instead. And AFAIK there is no good way to modify the submodule-provided content as part of the build. Why do we even have the submodule again? ;P I guess the same would be true for DC_SHA1_EXTERNAL, too, though. So anyway, I think this needs a patch to the upstream sha1dc project. -Peff
next prev parent reply other threads:[~2019-03-11 3:37 UTC|newest] Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-03-08 10:48 Jeffrey Walton 2019-03-08 17:43 ` Todd Zullinger 2019-03-09 12:34 ` Jeffrey Walton 2019-03-09 13:12 ` Jeffrey Walton 2019-03-11 2:00 ` Junio C Hamano 2019-03-11 2:16 ` Jeffrey Walton 2019-03-11 3:37 ` Jeff King [this message] 2019-03-11 10:40 ` disabling sha1dc unaligned access, was " Jeffrey Walton 2019-03-11 18:19 ` Jeff King 2019-03-11 11:58 ` Duy Nguyen 2019-03-11 18:15 ` Thomas Braun 2019-03-11 18:23 ` Jeff King 2019-03-12 7:27 ` Junio C Hamano 2019-03-12 10:51 ` Jeff King 2019-03-13 11:47 ` Thomas Braun 2019-03-13 15:39 ` Jeff King 2019-03-13 16:00 ` Ævar Arnfjörð Bjarmason 2019-03-12 8:53 ` Ævar Arnfjörð Bjarmason 2019-03-12 11:05 ` Jeff King 2019-03-12 12:09 ` Ævar Arnfjörð Bjarmason 2019-03-12 21:01 ` Jeff King 2019-03-12 21:06 ` [PATCH] Makefile: fix unaligned loads in sha1dc with UBSan Jeff King 2019-03-12 21:17 ` Ævar Arnfjörð Bjarmason 2019-03-12 21:19 ` Jeff King 2019-03-11 3:29 ` One failed self test on Fedora 29 Jeff King
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190311033755.GB7087@sigill.intra.peff.net \ --to=peff@peff.net \ --cc=git@vger.kernel.org \ --cc=gitster@pobox.com \ --cc=noloader@gmail.com \ --cc=tmz@pobox.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
git@vger.kernel.org list mirror (unofficial, one of many) This inbox may be cloned and mirrored by anyone: git clone --mirror https://public-inbox.org/git git clone --mirror http://ou63pmih66umazou.onion/git git clone --mirror http://czquwvybam4bgbro.onion/git git clone --mirror http://hjrcffqmbrq6wope.onion/git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V1 git git/ https://public-inbox.org/git \ git@vger.kernel.org public-inbox-index git Example config snippet for mirrors. Newsgroups are available over NNTP: nntp://news.public-inbox.org/inbox.comp.version-control.git nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git nntp://news.gmane.io/gmane.comp.version-control.git note: .onion URLs require Tor: https://www.torproject.org/ code repositories for the project(s) associated with this inbox: https://80x24.org/mirrors/git.git AGPL code for this site: git clone https://public-inbox.org/public-inbox.git