summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Georgi <patrick.georgi@secunet.com>2011-01-18 12:12:47 +0000
committerPatrick Georgi <patrick.georgi@coresystems.de>2011-01-18 12:12:47 +0000
commit2601697c6f70e0200f6f115d6e6e5e5d67fe6101 (patch)
treead41b13b668d635993cede365f802eedaa0366d7
parent884554c4e306e2b01941361c7166ca546d1052a4 (diff)
downloadcoreboot-2601697c6f70e0200f6f115d6e6e5e5d67fe6101.tar.xz
Eliminate strict aliasing related warnings.
Signed-off-by: Patrick Georgi <patrick.georgi@secunet.com> Acked-by: Stefan Reinauer <stepan@coreboot.org> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@6266 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
-rw-r--r--util/nvramtool/coreboot_tables.h5
-rw-r--r--util/nvramtool/lbtable.c6
2 files changed, 7 insertions, 4 deletions
diff --git a/util/nvramtool/coreboot_tables.h b/util/nvramtool/coreboot_tables.h
index 08f0be63fa..22570ac1f6 100644
--- a/util/nvramtool/coreboot_tables.h
+++ b/util/nvramtool/coreboot_tables.h
@@ -74,7 +74,10 @@ static inline struct lb_uint64 pack_lb64(uint64_t value)
}
struct lb_header {
- uint8_t signature[4]; /* LBIO */
+ union {
+ uint8_t signature[4]; /* LBIO */
+ uint32_t signature32;
+ };
uint32_t header_bytes;
uint32_t header_checksum;
uint32_t table_bytes;
diff --git a/util/nvramtool/lbtable.c b/util/nvramtool/lbtable.c
index 88d7f9c1f4..0a502a4722 100644
--- a/util/nvramtool/lbtable.c
+++ b/util/nvramtool/lbtable.c
@@ -360,7 +360,7 @@ void dump_lbtable(void)
" table_bytes: 0x%x (decimal: %d)\n"
" table_checksum: 0x%x (decimal: %d)\n"
" table_entries: 0x%x (decimal: %d)\n\n",
- vtophys(lbtable), *((uint32_t *) lbtable->signature),
+ vtophys(lbtable), lbtable->signature32,
lbtable->signature[0], lbtable->signature[1],
lbtable->signature[2], lbtable->signature[3],
lbtable->header_bytes, lbtable->header_bytes,
@@ -483,14 +483,14 @@ static const struct lb_header *lbtable_scan(unsigned long start,
int *bad_header_count,
int *bad_table_count)
{
- static const char signature[] = { 'L', 'B', 'I', 'O' };
+ static const char signature[4] = { 'L', 'B', 'I', 'O' };
const struct lb_header *table;
const struct lb_forward *forward;
const uint32_t *p;
uint32_t sig;
assert(end >= start);
- sig = (*((const uint32_t *)signature));
+ memcpy(&sig, signature, sizeof(sig));
table = NULL;
*bad_header_count = 0;
*bad_table_count = 0;