summaryrefslogtreecommitdiffstats
path: root/recipes-devtools/elfutils/elfutils-0.148/fix_for_gcc-4.7.patch
blob: c78f95d693f92cde33a4e01a56fb160a3cab57af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Upstream-Status: pending
gcc 4.7 does not like pointer conversion, so have a void * tmp var to work 
around following compilation issue.

Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
2011/07/07

| md5.c: In function 'md5_finish_ctx':
| md5.c:108:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
| md5.c:109:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
| cc1: all warnings being treated as errors
| 
| make[2]: *** [md5.o] Error 1
| make[2]: *** Waiting for unfinished jobs....
| sha1.c: In function 'sha1_finish_ctx':
| sha1.c:109:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
| sha1.c:111:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
| cc1: all warnings being treated as errors
| 
| make[2]: *** [sha1.o] Error 1

Index: elfutils-0.148/lib/md5.c
===================================================================
--- elfutils-0.148.orig/lib/md5.c
+++ elfutils-0.148/lib/md5.c
@@ -95,6 +95,7 @@ md5_finish_ctx (ctx, resbuf)
   /* Take yet unprocessed bytes into account.  */
   md5_uint32 bytes = ctx->buflen;
   size_t pad;
+  void * tmp;
 
   /* Now count remaining bytes.  */
   ctx->total[0] += bytes;
@@ -105,9 +106,10 @@ md5_finish_ctx (ctx, resbuf)
   memcpy (&ctx->buffer[bytes], fillbuf, pad);
 
   /* Put the 64-bit file length in *bits* at the end of the buffer.  */
-  *(md5_uint32 *) &ctx->buffer[bytes + pad] = SWAP (ctx->total[0] << 3);
-  *(md5_uint32 *) &ctx->buffer[bytes + pad + 4] = SWAP ((ctx->total[1] << 3) |
-							(ctx->total[0] >> 29));
+  tmp = &ctx->buffer[bytes + pad];
+  *(md5_uint32 *) tmp = SWAP (ctx->total[0] << 3);
+  tmp = &ctx->buffer[bytes + pad + 4];
+  *(md5_uint32 *) tmp = SWAP ((ctx->total[1] << 3) | (ctx->total[0] >> 29));
 
   /* Process last bytes.  */
   md5_process_block (ctx->buffer, bytes + pad + 8, ctx);
Index: elfutils-0.148/lib/sha1.c
===================================================================
--- elfutils-0.148.orig/lib/sha1.c
+++ elfutils-0.148/lib/sha1.c
@@ -96,6 +96,7 @@ sha1_finish_ctx (ctx, resbuf)
   /* Take yet unprocessed bytes into account.  */
   sha1_uint32 bytes = ctx->buflen;
   size_t pad;
+  void * tmp;
 
   /* Now count remaining bytes.  */
   ctx->total[0] += bytes;
@@ -106,9 +107,10 @@ sha1_finish_ctx (ctx, resbuf)
   memcpy (&ctx->buffer[bytes], fillbuf, pad);
 
   /* Put the 64-bit file length in *bits* at the end of the buffer.  */
-  *(sha1_uint32 *) &ctx->buffer[bytes + pad] = SWAP ((ctx->total[1] << 3) |
-						     (ctx->total[0] >> 29));
-  *(sha1_uint32 *) &ctx->buffer[bytes + pad + 4] = SWAP (ctx->total[0] << 3);
+  tmp = &ctx->buffer[bytes + pad];
+  *(sha1_uint32 *) tmp = SWAP ((ctx->total[1] << 3) | (ctx->total[0] >> 29));
+  tmp = &ctx->buffer[bytes + pad + 4];
+  *(sha1_uint32 *) tmp = SWAP (ctx->total[0] << 3);
 
   /* Process last bytes.  */
   sha1_process_block (ctx->buffer, bytes + pad + 8, ctx);