e2fsprogs: fix type-punning warnings
PATCH 1/1 e2fsprogs: fix type-punning warnings
Flags used during RHEL/Fedora builds lead to a couple type-punning warnings:
recovery.c: In function 'do_one_pass':
recovery.c:539: warning: dereferencing type-punned pointer will break strict-aliasing rules ./csum.c: In function 'print_csum':
./csum.c:170: warning: dereferencing type-punned pointer will break strict-aliasing rules
The two changes below fix this up.
Note that the csum test binary output changes slightly, but this does not break any tests.
---
e2fsck/recovery.c +4 -2
@@ -536,8 +536,10 @@ static int do_one_pass(journal_t *journal,memcpy (nbh->b_data, obh->b_data, journal->j_blocksize);if (flags &JFS_FLAG_ESCAPE ) { - *((__be32 *)nbh->b_data) = -cpu_to_be32 (JFS_MAGIC_NUMBER ); +journal_header_t *header; + + header = (journal_header_t *) &nbh->b_data[0 ]; + header->h_magic =cpu_to_be32 (JFS_MAGIC_NUMBER ); }BUFFER_TRACE (nbh,"marking dirty" );
lib/ext2fs/Makefile.in +1 -1
@@ -317,7 +317,7 @@ tst_extents: $(srcdir)/extent.c extent_dbg.c $(DEBUG_OBJS) $(DEPLIBSS) \ tst_csum: csum.c $(STATIC_LIBEXT2FS) $(DEPLIBCOM_ERR) $(E) " LD $@" $(Q) $(CC) -o tst_csum $(srcdir)/csum.c -DDEBUG \ - $(ALL_CFLAGS) $(STATIC_LIBEXT2FS) $(LIBCOM_ERR) + $(ALL_CFLAGS) $(STATIC_LIBEXT2FS) $(LIBCOM_ERR) $(LIBE2P) mkjournal: mkjournal.c $(STATIC_LIBEXT2FS) $(DEPLIBCOM_ERR) $(E) " LD $@"
lib/ext2fs/csum.c +3 -3
@@ -166,9 +166,9 @@ void print_csum(const char *msg, ext2_filsys fs, dgrp_t group) crc2 =ext2fs_crc16 (crc1, &swabgroup,sizeof (swabgroup)); crc3 =ext2fs_crc16 (crc2, desc, offsetof(struct ext2_group_desc , bg_checksum)); -printf ("%s: UUID %016Lx%016Lx(%04x), grp %u(%04x): %04x=%04x\n" , - msg, *(long long *)&sb->s_uuid, *(long long *)&sb->s_uuid[8 ], - crc1, group, crc2, crc3,ext2fs_group_desc_csum (fs, group)); +printf ("%s: UUID %s(%04x), grp %u(%04x): %04x=%04x\n" , + msg,e2p_uuid2str (sb->s_uuid), crc1, group, crc2,crc3, +ext2fs_group_desc_csum (fs, group)); }unsigned char sb_uuid[16 ] = {0x4f ,0x25 ,0xe8 ,0xcf ,0xe7 ,0x97 ,0x48 ,0x23 ,
Quoted 8 lines · Eric Sandeen
Flags used during RHEL/Fedora builds lead to a couple type-punning warnings:
recovery.c: In function 'do_one_pass':
recovery.c:539: warning: dereferencing type-punned pointer will break strict-aliasing rules ./csum.c: In function 'print_csum':
./csum.c:170: warning: dereferencing type-punned pointer will break strict-aliasing rules
Quoted 7 lines
The two changes below fix this up.
Note that the csum test binary output changes slightly, but this does not break any tests.
Signed-off-by Eric Sandeen <[email protected]>
Quoted 54 lines
---
e2fsck/recovery.c +4
-2@@ -536,8 +536,10 @@ static int do_one_pass(journal_t *journal,memcpy (nbh->b_data, obh->b_data, journal->j_blocksize);if (flags &JFS_FLAG_ESCAPE ) { - *((__be32 *)nbh->b_data) = -cpu_to_be32 (JFS_MAGIC_NUMBER ); +journal_header_t *header; + + header = (journal_header_t *) &nbh->b_data[0 ]; + header->h_magic =cpu_to_be32 (JFS_MAGIC_NUMBER ); }BUFFER_TRACE (nbh,"marking dirty" );lib/ext2fs/Makefile.in +1
-1@@ -317,7 +317,7 @@ tst_extents: $(srcdir)/extent.c extent_dbg.c $(DEBUG_OBJS) $(DEPLIBSS) \ tst_csum: csum.c $(STATIC_LIBEXT2FS) $(DEPLIBCOM_ERR) $(E) " LD $@" $(Q) $(CC) -o tst_csum $(srcdir)/csum.c -DDEBUG \ - $(ALL_CFLAGS) $(STATIC_LIBEXT2FS) $(LIBCOM_ERR) + $(ALL_CFLAGS) $(STATIC_LIBEXT2FS) $(LIBCOM_ERR) $(LIBE2P) mkjournal: mkjournal.c $(STATIC_LIBEXT2FS) $(DEPLIBCOM_ERR) $(E) " LD $@"lib/ext2fs/csum.c +3
-4@@ -166,9 +166,9 @@ void print_csum(const char *msg, ext2_filsys fs, dgrp_t group) crc2 =ext2fs_crc16 (crc1, &swabgroup,sizeof (swabgroup)); crc3 =ext2fs_crc16 (crc2, desc, offsetof(struct ext2_group_desc , bg_checksum)); -printf ("%s: UUID %016Lx%016Lx(%04x), grp %u(%04x): %04x=%04x\n" , - msg, *(long long *)&sb->s_uuid, *(long long *)&sb->s_uuid[8 ], - crc1, group, crc2, crc3,ext2fs_group_desc_csum (fs, group)); +printf ("%s: UUID %s(%04x), grp %u(%04x): %04x=%04x\n" , + msg,e2p_uuid2str (sb->s_uuid), crc1, group, crc2,crc3, +ext2fs_group_desc_csum (fs, group)); }unsigned char sb_uuid[16 ] = {0x4f ,0x25 ,0xe8 ,0xcf ,0xe7 ,0x97 ,0x48 ,0x23 , --To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 8 lines · Eric Sandeen
Flags used during RHEL/Fedora builds lead to a couple type-punning warnings:
recovery.c: In function 'do_one_pass':
recovery.c:539: warning: dereferencing type-punned pointer will break strict-aliasing rules ./csum.c: In function 'print_csum':
./csum.c:170: warning: dereferencing type-punned pointer will break strict-aliasing rules
Quoted 6 lines
The two changes below fix this up.
Note that the csum test binary output changes slightly, but this does not break any tests.
Signed-off-by Eric Sandeen <[email protected]>
Thanks, applied. There's also a bone-headed big-endian compile bug which means I'll be doing an e2fsprogs 1.41.14 shortly.
- Ted
Quoted 14 lines · Ted Ts'o
Quoted 13 lines · Eric Sandeen
Flags used during RHEL/Fedora builds lead to a couple type-punning warnings:
recovery.c: In function 'do_one_pass':
recovery.c:539: warning: dereferencing type-punned pointer will break strict-aliasing rules ./csum.c: In function 'print_csum':
./csum.c:170: warning: dereferencing type-punned pointer will break strict-aliasing rulesThe two changes below fix this up.
Note that the csum test binary output changes slightly, but this does not break any tests.
Quoted 6 lines
Quoted 1 line
Signed-off-by Eric Sandeen <[email protected]>Thanks, applied. There's also a bone-headed big-endian compile bug which means I'll be doing an e2fsprogs 1.41.14 shortly.
- Ted
Hm this may need an include of the e2p.h header as well, if built in a pristine buildroot...
lib/ext2fs/csum.c +1 -0
@@ -17,6 +17,7 @@#include "ext2_fs.h" #include "ext2fs.h" #include "crc16.h" +#include "e2p/e2p.h" #include <assert.h> #ifndef offsetof
Sorry about that,
-Eric
Quoted 2 lines · Eric Sandeen
Hm this may need an include of the
e2p.hheader as well, if built in a pristine buildroot...
Actually we only need it if we are building tst_csum (i.e., if #DEBUG is defined). So I'll apply it under #ifdef DEBUG, and then add a dependency for tst_csum in the Makefile.
Thanks for pointing this out.
- Ted