SmartAudio/tools/e2fsprogs/patches/000-fix-compile-error-and-w...

281 lines
7.8 KiB
Diff
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-Wimplicit-fallthrough option was added in gcc7 and
-Wpedantic was added in gcc4.8, while #pragma GCC diagnostic
support was not available until gcc4.6
We got following warnings:
../lib/ext2fs/fiemap.h:35: warning: expected [error|warning|ignored] after #pragma GCC diagnostic
../lib/ext2fs/fiemap.h:36: warning: unknown option after #pragma GCC diagnostic kind
../lib/ext2fs/fiemap.h:38: warning: expected [error|warning|ignored] after #pragma GCC diagnostic
and error:
filefrag.c: In function main:
filefrag.c:577: error: #pragma GCC diagnostic not allowed inside functions
filefrag.c:578: error: #pragma GCC diagnostic not allowed inside functions
filefrag.c:595: error: #pragma GCC diagnostic not allowed inside functions
when compiling latest e2fsprogs with a gcc older than 4.6
e.g. on CentOS 6.9
Signed-off-by: Li Dongyang <dongyangli@xxxxxxx>
---
debugfs/set_fields.c | 4 ++++
e2fsck/problem.c | 4 ++++
lib/ext2fs/ext4_acl.h | 4 ++++
lib/ext2fs/fiemap.h | 4 ++++
lib/ext2fs/hashmap.h | 4 ++++
lib/ext2fs/mmp.c | 4 ++++
lib/ext2fs/unix_io.c | 4 ++++
lib/uuid/gen_uuid.c | 4 ++++
misc/e2undo.c | 4 ++++
misc/filefrag.c | 4 ++++
misc/fuse2fs.c | 4 ++++
11 files changed, 44 insertions(+)
diff --git a/debugfs/set_fields.c b/debugfs/set_fields.c
index 65949060..e1e23a5d 100644
--- a/debugfs/set_fields.c
+++ b/debugfs/set_fields.c
@@ -75,8 +75,10 @@ static errcode_t parse_gd_csum(struct field_set_info *info, char *field, char *a
static errcode_t parse_mmp_clear(struct field_set_info *info, char *field,
char *arg);
+#if __GNUC_PREREQ (4, 6)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
static struct field_set_info super_fields[] = {
{ "inodes_count", &set_sb.s_inodes_count, NULL, 4, parse_uint },
@@ -289,7 +291,9 @@ static struct field_set_info mmp_fields[] = {
{ "checksum", &set_mmp.mmp_checksum, NULL, 4, parse_uint },
{ 0, 0, 0, 0 }
};
+#if __GNUC_PREREQ (4, 6)
#pragma GCC diagnostic pop
+#endif
#ifdef UNITTEST
diff --git a/e2fsck/problem.c b/e2fsck/problem.c
index a0a3cfec..47321e0a 100644
--- a/e2fsck/problem.c
+++ b/e2fsck/problem.c
@@ -99,8 +99,10 @@ static const char *preen_msg[] = {
"", /* 20 */
};
+#if __GNUC_PREREQ (4, 6)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
static struct e2fsck_problem problem_table[] = {
@@ -2086,7 +2088,9 @@ static struct latch_descr pr_latch_info[] = {
{ PR_LATCH_OPTIMIZE_EXT, PR_1E_OPTIMIZE_EXT_HEADER, PR_1E_OPTIMIZE_EXT_END },
{ -1, 0, 0 },
};
+#if __GNUC_PREREQ (4, 6)
#pragma GCC diagnostic pop
+#endif
static struct e2fsck_problem *find_problem(problem_t code)
{
diff --git a/lib/ext2fs/ext4_acl.h b/lib/ext2fs/ext4_acl.h
index 1f5245de..8d4d9745 100644
--- a/lib/ext2fs/ext4_acl.h
+++ b/lib/ext2fs/ext4_acl.h
@@ -50,9 +50,13 @@ typedef struct {
typedef struct {
__le32 a_version;
+#if __GNUC_PREREQ (4, 8)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
+#endif
posix_acl_xattr_entry a_entries[0];
+#if __GNUC_PREREQ (4, 8)
#pragma GCC diagnostic pop
+#endif
} posix_acl_xattr_header;
diff --git a/lib/ext2fs/fiemap.h b/lib/ext2fs/fiemap.h
index 5c851b24..0d1072ac 100644
--- a/lib/ext2fs/fiemap.h
+++ b/lib/ext2fs/fiemap.h
@@ -31,10 +31,14 @@ struct fiemap {
__u32 fm_mapped_extents;/* number of extents that were mapped (out) */
__u32 fm_extent_count; /* size of fm_extents array (in) */
__u32 fm_reserved;
+#if __GNUC_PREREQ (4, 8)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
+#endif
struct fiemap_extent fm_extents[0]; /* array of mapped extents (out) */
+#if __GNUC_PREREQ (4, 8)
#pragma GCC diagnostic pop
+#endif
};
#if defined(__linux__) && !defined(FS_IOC_FIEMAP)
diff --git a/lib/ext2fs/hashmap.h b/lib/ext2fs/hashmap.h
index be1e8a76..228f4395 100644
--- a/lib/ext2fs/hashmap.h
+++ b/lib/ext2fs/hashmap.h
@@ -17,10 +17,14 @@ struct ext2fs_hashmap {
struct ext2fs_hashmap_entry *next;
struct ext2fs_hashmap_entry *list_next;
struct ext2fs_hashmap_entry *list_prev;
+#if __GNUC_PREREQ (4, 8)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
+#endif
} *entries[0];
+#if __GNUC_PREREQ (4, 8)
#pragma GCC diagnostic pop
+#endif
};
struct ext2fs_hashmap *ext2fs_hashmap_create(
diff --git a/lib/ext2fs/mmp.c b/lib/ext2fs/mmp.c
index 0cf0d0da..2da935e0 100644
--- a/lib/ext2fs/mmp.c
+++ b/lib/ext2fs/mmp.c
@@ -34,10 +34,12 @@
#define O_DIRECT 0
#endif
+#if __GNUC_PREREQ (4, 6)
#pragma GCC diagnostic push
#ifndef CONFIG_MMP
#pragma GCC diagnostic ignored "-Wunused-parameter"
#endif
+#endif
errcode_t ext2fs_mmp_read(ext2_filsys fs, blk64_t mmp_blk, void *buf)
{
@@ -465,4 +467,6 @@ mmp_error:
return EXT2_ET_OP_NOT_SUPPORTED;
#endif
}
+#if __GNUC_PREREQ (4, 6)
#pragma GCC diagnostic pop
+#endif
diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c
index 18a2e5f7..7a4c9bf5 100644
--- a/lib/ext2fs/unix_io.c
+++ b/lib/ext2fs/unix_io.c
@@ -1127,8 +1127,10 @@ unimplemented:
}
/* parameters might not be used if OS doesn't support zeroout */
+#if __GNUC_PREREQ (4, 6)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-parameter"
+#endif
static errcode_t unix_zeroout(io_channel channel, unsigned long long block,
unsigned long long count)
{
@@ -1195,7 +1197,9 @@ err:
unimplemented:
return EXT2_ET_UNIMPLEMENTED;
}
+#if __GNUC_PREREQ (4, 6)
#pragma GCC diagnostic pop
+#endif
static struct struct_io_manager struct_unix_manager = {
.magic = EXT2_ET_MAGIC_IO_MANAGER,
diff --git a/lib/uuid/gen_uuid.c b/lib/uuid/gen_uuid.c
index 43ecc8ae..01983634 100644
--- a/lib/uuid/gen_uuid.c
+++ b/lib/uuid/gen_uuid.c
@@ -484,10 +484,12 @@ static void close_all_fds(void)
}
#endif /* defined(USE_UUIDD) && defined(HAVE_SYS_UN_H) */
+#if __GNUC_PREREQ (4, 6)
#pragma GCC diagnostic push
#if !defined(USE_UUIDD) || !defined(HAVE_SYS_UN_H)
#pragma GCC diagnostic ignored "-Wunused-parameter"
#endif
+#endif
/*
* Try using the uuidd daemon to generate the UUID
*
@@ -570,7 +572,9 @@ fail:
#endif
return -1;
}
+#if __GNUC_PREREQ (4, 6)
#pragma GCC diagnostic pop
+#endif
void uuid__generate_time(uuid_t out, int *num)
{
diff --git a/misc/e2undo.c b/misc/e2undo.c
index 05937383..71991e05 100644
--- a/misc/e2undo.c
+++ b/misc/e2undo.c
@@ -81,10 +81,14 @@ struct undo_key_block {
__le32 magic; /* KEYBLOCK_MAGIC number */
__le32 crc; /* block checksum */
__le64 reserved; /* zero */
+#if __GNUC_PREREQ (4, 8)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
+#endif
struct undo_key keys[0]; /* keys, which come immediately after */
+#if __GNUC_PREREQ (4, 8)
#pragma GCC diagnostic pop
+#endif
};
struct undo_key_info {
diff --git a/misc/filefrag.c b/misc/filefrag.c
index 7f1c5bfc..56f84ed8 100644
--- a/misc/filefrag.c
+++ b/misc/filefrag.c
@@ -535,8 +535,10 @@ int main(int argc, char**argv)
char *end;
blocksize = strtoul(optarg, &end, 0);
if (end) {
+#if __GNUC_PREREQ (7, 0)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
+#endif
switch (end[0]) {
case 'g':
case 'G':
@@ -553,7 +555,9 @@ int main(int argc, char**argv)
default:
break;
}
+#if __GNUC_PREREQ (7, 0)
#pragma GCC diagnostic pop
+#endif
}
} else { /* Allow -b without argument for compat. Remove
* this eventually so "-b {blocksize}" works */
diff --git a/misc/fuse2fs.c b/misc/fuse2fs.c
index 056d34ec..5c73895e 100644
--- a/misc/fuse2fs.c
+++ b/misc/fuse2fs.c
@@ -118,10 +118,14 @@ typedef struct {
typedef struct {
u_int32_t a_version;
+#if __GNUC_PREREQ (4, 8)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
+#endif
acl_ea_entry a_entries[0];
+#if __GNUC_PREREQ (4, 8)
#pragma GCC diagnostic pop
+#endif
} acl_ea_header;
static inline size_t acl_ea_size(int count)
--
2.17.1