[PATCH] sha1 name clash fix

Magnus Damm magnus.damm at gmail.com
Wed Aug 5 08:40:03 UTC 2009


From: Magnus Damm <damm at opensource.se>

This patch modifies the sha1 applet to fix a name clash issue
triggered when building with an older sh7722 tool chain. 

Signed-off-by: Magnus Damm <damm at opensource.se>
---

  CC      libbb/sha1.o
libbb/sha1.c:176:1: error: "R0" redefined
In file included from /home/damm/build/cross/mobiler/usr/share/gnush4-nofpu_linux_v0701-1/bin/../sh3-linux/sys-root/usr/include/signal.h:351,
                 from include/libbb.h:22,
                 from libbb/sha1.c:31:
/home/damm/build/cross/mobiler/usr/share/gnush4-nofpu_linux_v0701-1/bin/../sh3-linux/sys-root/usr/include/sys/ucontext.h:45:1: error: this is the location of the previous definition
libbb/sha1.c:177:1: error: "R1" redefined
/home/damm/build/cross/mobiler/usr/share/gnush4-nofpu_linux_v0701-1/bin/../sh3-linux/sys-root/usr/include/sys/ucontext.h:47:1: error: this is the location of the previous definition
make[1]: *** [libbb/sha1.o] Error 1
make: *** [libbb] Error 2
damm at rx1 ~/build/busybox/20090805/busybox-1.14.2 $ 
damm at rx1 ~/build/busybox/20090805/busybox-1.14.2 $ _gcc --version
sh3-linux-gcc (GCC) 4.2-SH4-LINUX_v0701
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

 libbb/sha1.c |   44 ++++++++++++++++++++++----------------------
 1 file changed, 22 insertions(+), 22 deletions(-)

--- 0001/libbb/sha1.c
+++ work/libbb/sha1.c	2009-07-24 12:29:01.000000000 +0900
@@ -171,10 +171,10 @@ static void FAST_FUNC sha256_process_blo
 	/* Operators defined in FIPS 180-2:4.1.2.  */
 #define Ch(x, y, z) ((x & y) ^ (~x & z))
 #define Maj(x, y, z) ((x & y) ^ (x & z) ^ (y & z))
-#define S0(x) (rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22))
-#define S1(x) (rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25))
-#define R0(x) (rotr32(x, 7) ^ rotr32(x, 18) ^ (x >> 3))
-#define R1(x) (rotr32(x, 17) ^ rotr32(x, 19) ^ (x >> 10))
+#define _S0(x) (rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22))
+#define _S1(x) (rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25))
+#define _R0(x) (rotr32(x, 7) ^ rotr32(x, 18) ^ (x >> 3))
+#define _R1(x) (rotr32(x, 17) ^ rotr32(x, 19) ^ (x >> 10))
 
 	/* Compute the message schedule according to FIPS 180-2:6.2.2 step 2.  */
 	for (t = 0; t < 16; ++t) {
@@ -183,7 +183,7 @@ static void FAST_FUNC sha256_process_blo
 	}
 
 	for (/*t = 16*/; t < 64; ++t)
-		W[t] = R1(W[t - 2]) + W[t - 7] + R0(W[t - 15]) + W[t - 16];
+		W[t] = _R1(W[t - 2]) + W[t - 7] + _R0(W[t - 15]) + W[t - 16];
 
 	a = ctx->hash[0];
 	b = ctx->hash[1];
@@ -201,8 +201,8 @@ static void FAST_FUNC sha256_process_blo
 		 * upper half)
 		 */
 		uint32_t K_t = sha_K[t] >> 32;
-		uint32_t T1 = h + S1(e) + Ch(e, f, g) + K_t + W[t];
-		uint32_t T2 = S0(a) + Maj(a, b, c);
+		uint32_t T1 = h + _S1(e) + Ch(e, f, g) + K_t + W[t];
+		uint32_t T2 = _S0(a) + Maj(a, b, c);
 		h = g;
 		g = f;
 		f = e;
@@ -214,10 +214,10 @@ static void FAST_FUNC sha256_process_blo
 	}
 #undef Ch
 #undef Maj
-#undef S0
-#undef S1
-#undef R0
-#undef R1
+#undef _S0
+#undef _S1
+#undef _R0
+#undef _R1
 	/* Add the starting values of the context according to FIPS 180-2:6.2.2
 	   step 4.  */
 	ctx->hash[0] += a;
@@ -250,10 +250,10 @@ static void FAST_FUNC sha512_process_blo
 	/* Operators defined in FIPS 180-2:4.1.2.  */
 #define Ch(x, y, z) ((x & y) ^ (~x & z))
 #define Maj(x, y, z) ((x & y) ^ (x & z) ^ (y & z))
-#define S0(x) (rotr64(x, 28) ^ rotr64(x, 34) ^ rotr64(x, 39))
-#define S1(x) (rotr64(x, 14) ^ rotr64(x, 18) ^ rotr64(x, 41))
-#define R0(x) (rotr64(x, 1) ^ rotr64(x, 8) ^ (x >> 7))
-#define R1(x) (rotr64(x, 19) ^ rotr64(x, 61) ^ (x >> 6))
+#define _S0(x) (rotr64(x, 28) ^ rotr64(x, 34) ^ rotr64(x, 39))
+#define _S1(x) (rotr64(x, 14) ^ rotr64(x, 18) ^ rotr64(x, 41))
+#define _R0(x) (rotr64(x, 1) ^ rotr64(x, 8) ^ (x >> 7))
+#define _R1(x) (rotr64(x, 19) ^ rotr64(x, 61) ^ (x >> 6))
 
 	/* Compute the message schedule according to FIPS 180-2:6.3.2 step 2.  */
 	for (t = 0; t < 16; ++t) {
@@ -261,12 +261,12 @@ static void FAST_FUNC sha512_process_blo
 		words++;
 	}
 	for (/*t = 16*/; t < 80; ++t)
-		W[t] = R1(W[t - 2]) + W[t - 7] + R0(W[t - 15]) + W[t - 16];
+		W[t] = _R1(W[t - 2]) + W[t - 7] + _R0(W[t - 15]) + W[t - 16];
 
 	/* The actual computation according to FIPS 180-2:6.3.2 step 3.  */
 	for (t = 0; t < 80; ++t) {
-		uint64_t T1 = h + S1(e) + Ch(e, f, g) + sha_K[t] + W[t];
-		uint64_t T2 = S0(a) + Maj(a, b, c);
+		uint64_t T1 = h + +_S1(e) + Ch(e, f, g) + sha_K[t] + W[t];
+		uint64_t T2 = _S0(a) + Maj(a, b, c);
 		h = g;
 		g = f;
 		f = e;
@@ -278,10 +278,10 @@ static void FAST_FUNC sha512_process_blo
 	}
 #undef Ch
 #undef Maj
-#undef S0
-#undef S1
-#undef R0
-#undef R1
+#undef _S0
+#undef _S1
+#undef _R0
+#undef _R1
 	/* Add the starting values of the context according to FIPS 180-2:6.3.2
 	   step 4.  */
 	ctx->hash[0] += a;


More information about the busybox mailing list