xref: /OK3568_Linux_fs/buildroot/package/tinydtls/0001-sha2-sha2.c-fix-build-on-big-endian.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunFrom 608738ccad9ac3743ccd535bde1e84f401e6176f Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>
3*4882a593SmuzhiyunDate: Sat, 20 Jun 2020 12:50:40 +0200
4*4882a593SmuzhiyunSubject: [PATCH] sha2/sha2.c: fix build on big endian
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunBuild is broken since 865ec9ba1d44e629c1107c299aebd20e901a19ff because
7*4882a593Smuzhiyuntmp is undefined in put32be and put64be:
8*4882a593Smuzhiyun
9*4882a593Smuzhiyunsha2.c: In function 'put32be':
10*4882a593Smuzhiyunsha2.c:177:34: error: 'tmp' undeclared (first use in this function)
11*4882a593Smuzhiyun  MEMCPY_BCOPY(data, &val, sizeof(tmp));
12*4882a593Smuzhiyun                                  ^~~
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunFix this error by replacing tmp by val
15*4882a593Smuzhiyun
16*4882a593SmuzhiyunMoreover, move MEMCPY_BCOPY before its usage or linking step will fail
17*4882a593Smuzhiyun
18*4882a593SmuzhiyunFixes:
19*4882a593Smuzhiyun - http://autobuild.buildroot.org/results/e8704e02fdede7b63e22da552292977b23380b32
20*4882a593Smuzhiyun
21*4882a593SmuzhiyunSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
22*4882a593Smuzhiyun[Upstream: https://github.com/eclipse/tinydtls/commit/78a2d32f47165eda10cbf8f5cf79f86fa1c4872b]
23*4882a593Smuzhiyun---
24*4882a593Smuzhiyun sha2/sha2.c | 58 ++++++++++++++++++++++++++---------------------------
25*4882a593Smuzhiyun 1 file changed, 29 insertions(+), 29 deletions(-)
26*4882a593Smuzhiyun
27*4882a593Smuzhiyundiff --git a/sha2/sha2.c b/sha2/sha2.c
28*4882a593Smuzhiyunindex cb6d90f..5c794c6 100644
29*4882a593Smuzhiyun--- a/sha2/sha2.c
30*4882a593Smuzhiyun+++ b/sha2/sha2.c
31*4882a593Smuzhiyun@@ -114,6 +114,33 @@
32*4882a593Smuzhiyun #error Define BYTE_ORDER to be equal to either LITTLE_ENDIAN or BIG_ENDIAN
33*4882a593Smuzhiyun #endif
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun+/*
36*4882a593Smuzhiyun+ * Macros for copying blocks of memory and for zeroing out ranges
37*4882a593Smuzhiyun+ * of memory.  Using these macros makes it easy to switch from
38*4882a593Smuzhiyun+ * using memset()/memcpy() and using bzero()/bcopy().
39*4882a593Smuzhiyun+ *
40*4882a593Smuzhiyun+ * Please define either SHA2_USE_MEMSET_MEMCPY or define
41*4882a593Smuzhiyun+ * SHA2_USE_BZERO_BCOPY depending on which function set you
42*4882a593Smuzhiyun+ * choose to use:
43*4882a593Smuzhiyun+ */
44*4882a593Smuzhiyun+#if !defined(SHA2_USE_MEMSET_MEMCPY) && !defined(SHA2_USE_BZERO_BCOPY)
45*4882a593Smuzhiyun+/* Default to memset()/memcpy() if no option is specified */
46*4882a593Smuzhiyun+#define	SHA2_USE_MEMSET_MEMCPY	1
47*4882a593Smuzhiyun+#endif
48*4882a593Smuzhiyun+#if defined(SHA2_USE_MEMSET_MEMCPY) && defined(SHA2_USE_BZERO_BCOPY)
49*4882a593Smuzhiyun+/* Abort with an error if BOTH options are defined */
50*4882a593Smuzhiyun+#error Define either SHA2_USE_MEMSET_MEMCPY or SHA2_USE_BZERO_BCOPY, not both!
51*4882a593Smuzhiyun+#endif
52*4882a593Smuzhiyun+
53*4882a593Smuzhiyun+#ifdef SHA2_USE_MEMSET_MEMCPY
54*4882a593Smuzhiyun+#define MEMSET_BZERO(p,l)	memset((p), 0, (l))
55*4882a593Smuzhiyun+#define MEMCPY_BCOPY(d,s,l)	memcpy((d), (s), (l))
56*4882a593Smuzhiyun+#endif
57*4882a593Smuzhiyun+#ifdef SHA2_USE_BZERO_BCOPY
58*4882a593Smuzhiyun+#define MEMSET_BZERO(p,l)	bzero((p), (l))
59*4882a593Smuzhiyun+#define MEMCPY_BCOPY(d,s,l)	bcopy((s), (d), (l))
60*4882a593Smuzhiyun+#endif
61*4882a593Smuzhiyun+
62*4882a593Smuzhiyun /*
63*4882a593Smuzhiyun  * Define the followingsha2_* types to types of the correct length on
64*4882a593Smuzhiyun  * the native archtecture.   Most BSD systems and Linux define u_intXX_t
65*4882a593Smuzhiyun@@ -174,7 +201,7 @@ static inline void put32be(sha2_byte* data, sha2_word32 val)
66*4882a593Smuzhiyun 	data[1] = val; val >>= 8;
67*4882a593Smuzhiyun 	data[0] = val;
68*4882a593Smuzhiyun #else /* BYTE_ORDER != LITTLE_ENDIAN */
69*4882a593Smuzhiyun-	MEMCPY_BCOPY(data, &val, sizeof(tmp));
70*4882a593Smuzhiyun+	MEMCPY_BCOPY(data, &val, sizeof(val));
71*4882a593Smuzhiyun #endif /* BYTE_ORDER != LITTLE_ENDIAN */
72*4882a593Smuzhiyun }
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun@@ -209,7 +236,7 @@ static inline void put64be(sha2_byte* data, sha2_word64 val)
75*4882a593Smuzhiyun 	data[1] = val; val >>= 8;
76*4882a593Smuzhiyun 	data[0] = val;
77*4882a593Smuzhiyun #else /* BYTE_ORDER != LITTLE_ENDIAN */
78*4882a593Smuzhiyun-	MEMCPY_BCOPY(data, &val, sizeof(tmp));
79*4882a593Smuzhiyun+	MEMCPY_BCOPY(data, &val, sizeof(val));
80*4882a593Smuzhiyun #endif /* BYTE_ORDER != LITTLE_ENDIAN */
81*4882a593Smuzhiyun }
82*4882a593Smuzhiyun
83*4882a593Smuzhiyun@@ -225,33 +252,6 @@ static inline void put64be(sha2_byte* data, sha2_word64 val)
84*4882a593Smuzhiyun 	} \
85*4882a593Smuzhiyun }
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun-/*
88*4882a593Smuzhiyun- * Macros for copying blocks of memory and for zeroing out ranges
89*4882a593Smuzhiyun- * of memory.  Using these macros makes it easy to switch from
90*4882a593Smuzhiyun- * using memset()/memcpy() and using bzero()/bcopy().
91*4882a593Smuzhiyun- *
92*4882a593Smuzhiyun- * Please define either SHA2_USE_MEMSET_MEMCPY or define
93*4882a593Smuzhiyun- * SHA2_USE_BZERO_BCOPY depending on which function set you
94*4882a593Smuzhiyun- * choose to use:
95*4882a593Smuzhiyun- */
96*4882a593Smuzhiyun-#if !defined(SHA2_USE_MEMSET_MEMCPY) && !defined(SHA2_USE_BZERO_BCOPY)
97*4882a593Smuzhiyun-/* Default to memset()/memcpy() if no option is specified */
98*4882a593Smuzhiyun-#define	SHA2_USE_MEMSET_MEMCPY	1
99*4882a593Smuzhiyun-#endif
100*4882a593Smuzhiyun-#if defined(SHA2_USE_MEMSET_MEMCPY) && defined(SHA2_USE_BZERO_BCOPY)
101*4882a593Smuzhiyun-/* Abort with an error if BOTH options are defined */
102*4882a593Smuzhiyun-#error Define either SHA2_USE_MEMSET_MEMCPY or SHA2_USE_BZERO_BCOPY, not both!
103*4882a593Smuzhiyun-#endif
104*4882a593Smuzhiyun-
105*4882a593Smuzhiyun-#ifdef SHA2_USE_MEMSET_MEMCPY
106*4882a593Smuzhiyun-#define MEMSET_BZERO(p,l)	memset((p), 0, (l))
107*4882a593Smuzhiyun-#define MEMCPY_BCOPY(d,s,l)	memcpy((d), (s), (l))
108*4882a593Smuzhiyun-#endif
109*4882a593Smuzhiyun-#ifdef SHA2_USE_BZERO_BCOPY
110*4882a593Smuzhiyun-#define MEMSET_BZERO(p,l)	bzero((p), (l))
111*4882a593Smuzhiyun-#define MEMCPY_BCOPY(d,s,l)	bcopy((s), (d), (l))
112*4882a593Smuzhiyun-#endif
113*4882a593Smuzhiyun-
114*4882a593Smuzhiyun
115*4882a593Smuzhiyun /*** THE SIX LOGICAL FUNCTIONS ****************************************/
116*4882a593Smuzhiyun /*
117*4882a593Smuzhiyun--
118*4882a593Smuzhiyun2.26.2
119*4882a593Smuzhiyun
120