git/list[1] front-page[2] threads[3] people[4] search[5] about
 

bug: SHA1 calculation on PPC machines when built with gcc older than 4.6

From
KCKen Cunningham <ken.cunningham.webuse@gmail.com>
Date
May 10, 2018, 18:11 UTC
Message-ID
<418E3D80-FE0F-436B-B9D1-475E49C4D75D@gmail.com>
Some vintage Apple PPC machines build a non-funtional version of git as of git 13.1 when using the stock gcc compilers that are installed with the OS; the SHA1 calculations are faulty. This can be repaired with a simple patch (attached).
Stock vintage Apple PPC machines come with gcc-4.0 or gcc-4.2. On MacOS 10.4 and earlier, or when not using Apple Common Crypto on 10.5, git uses the SHA1 calculation code from here <https://github.com/cr-marcstevens/sha1collisiondetection>. The code in <https://github.com/cr-marcstevens/sha1collisiondetection/blob/master/lib/sha1.c> tries to detect all systems that are BIG_ENDIAN, but the above noted systems fall through because they fail the tests.
It appears that the primary test:
#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__)
only works as of gcc-4.6 and newer, so the code is built as LITTLE_ENDIAN on PPC with older gcc versions.
Issue report:
<https://github.com/cr-marcstevens/sha1collisiondetection/issues/40>
MacPorts bug report:
<https://trac.macports.org/ticket/54602>
The included patch to git fixes the issue on our testing.
Thanks for git!
Ken Cunningham
=====
diff --git a/sha1dc/sha1.c b/sha1dc/sha1.c
index 25eded1..5faf5a5 100644
--- a/sha1dc/sha1.c
+++ b/sha1dc/sha1.c
@@ -92,6 +92,10 @@
  */
 #define SHA1DC_BIGENDIAN
 
+#elif (defined(__APPLE__) && defined(__BIG_ENDIAN__) && !defined(SHA1DC_BIGENDIAN))
+/* older gcc compilers which are the default  on Apple PPC do not define __BYTE_ORDER__ */
+#define SHA1DC_BIGENDIAN
+
 /* Not under GCC-alike or glibc or *BSD or newlib or <processor whitelist> */
 #elif defined(SHA1DC_ON_INTEL_LIKE_PROCESSOR)
 /*

==========
Next: Ævar Arnfjörð Bjarmason
Message 1 of 2 in “bug: SHA1 calculation on PPC machines when built with gcc older than 4.6”
  1. Ken CunninghamMay 10, 2018
  2. Ævar Arnfjörð BjarmasonMay 10, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.