Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 1 | Upstream-Status: pending |
| 2 | gcc 4.7 does not like pointer conversion, so have a void * tmp var to work |
| 3 | around following compilation issue. |
| 4 | |
| 5 | Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> |
| 6 | 2011/07/07 |
| 7 | |
| 8 | | md5.c: In function 'md5_finish_ctx': |
| 9 | | md5.c:108:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing] |
| 10 | | md5.c:109:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing] |
| 11 | | cc1: all warnings being treated as errors |
| 12 | | |
| 13 | | make[2]: *** [md5.o] Error 1 |
| 14 | | make[2]: *** Waiting for unfinished jobs.... |
| 15 | | sha1.c: In function 'sha1_finish_ctx': |
| 16 | | sha1.c:109:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing] |
| 17 | | sha1.c:111:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing] |
| 18 | | cc1: all warnings being treated as errors |
| 19 | | |
| 20 | | make[2]: *** [sha1.o] Error 1 |
| 21 | |
| 22 | Index: elfutils-0.148/lib/md5.c |
| 23 | =================================================================== |
| 24 | --- elfutils-0.148.orig/lib/md5.c |
| 25 | +++ elfutils-0.148/lib/md5.c |
| 26 | @@ -95,6 +95,7 @@ md5_finish_ctx (ctx, resbuf) |
| 27 | /* Take yet unprocessed bytes into account. */ |
| 28 | md5_uint32 bytes = ctx->buflen; |
| 29 | size_t pad; |
| 30 | + void * tmp; |
| 31 | |
| 32 | /* Now count remaining bytes. */ |
| 33 | ctx->total[0] += bytes; |
| 34 | @@ -105,9 +106,10 @@ md5_finish_ctx (ctx, resbuf) |
| 35 | memcpy (&ctx->buffer[bytes], fillbuf, pad); |
| 36 | |
| 37 | /* Put the 64-bit file length in *bits* at the end of the buffer. */ |
| 38 | - *(md5_uint32 *) &ctx->buffer[bytes + pad] = SWAP (ctx->total[0] << 3); |
| 39 | - *(md5_uint32 *) &ctx->buffer[bytes + pad + 4] = SWAP ((ctx->total[1] << 3) | |
| 40 | - (ctx->total[0] >> 29)); |
| 41 | + tmp = &ctx->buffer[bytes + pad]; |
| 42 | + *(md5_uint32 *) tmp = SWAP (ctx->total[0] << 3); |
| 43 | + tmp = &ctx->buffer[bytes + pad + 4]; |
| 44 | + *(md5_uint32 *) tmp = SWAP ((ctx->total[1] << 3) | (ctx->total[0] >> 29)); |
| 45 | |
| 46 | /* Process last bytes. */ |
| 47 | md5_process_block (ctx->buffer, bytes + pad + 8, ctx); |
| 48 | Index: elfutils-0.148/lib/sha1.c |
| 49 | =================================================================== |
| 50 | --- elfutils-0.148.orig/lib/sha1.c |
| 51 | +++ elfutils-0.148/lib/sha1.c |
| 52 | @@ -96,6 +96,7 @@ sha1_finish_ctx (ctx, resbuf) |
| 53 | /* Take yet unprocessed bytes into account. */ |
| 54 | sha1_uint32 bytes = ctx->buflen; |
| 55 | size_t pad; |
| 56 | + void * tmp; |
| 57 | |
| 58 | /* Now count remaining bytes. */ |
| 59 | ctx->total[0] += bytes; |
| 60 | @@ -106,9 +107,10 @@ sha1_finish_ctx (ctx, resbuf) |
| 61 | memcpy (&ctx->buffer[bytes], fillbuf, pad); |
| 62 | |
| 63 | /* Put the 64-bit file length in *bits* at the end of the buffer. */ |
| 64 | - *(sha1_uint32 *) &ctx->buffer[bytes + pad] = SWAP ((ctx->total[1] << 3) | |
| 65 | - (ctx->total[0] >> 29)); |
| 66 | - *(sha1_uint32 *) &ctx->buffer[bytes + pad + 4] = SWAP (ctx->total[0] << 3); |
| 67 | + tmp = &ctx->buffer[bytes + pad]; |
| 68 | + *(sha1_uint32 *) tmp = SWAP ((ctx->total[1] << 3) | (ctx->total[0] >> 29)); |
| 69 | + tmp = &ctx->buffer[bytes + pad + 4]; |
| 70 | + *(sha1_uint32 *) tmp = SWAP (ctx->total[0] << 3); |
| 71 | |
| 72 | /* Process last bytes. */ |
| 73 | sha1_process_block (ctx->buffer, bytes + pad + 8, ctx); |