This patchset will address the remaining warning when compiling
btrfs-progs devel branch with GCC9.
It's based on the following commit:
commit 9a1d86a9ac7384b332db498822585a2255f7d3e6 (david/devel)
Author: David Sterba <dsterba@xxxxxxxx>
Date: Thu Jun 13 20:45:49 2019 +0200
btrfs-progs: build: disable -Waddress-of-packed-member by default
Please note that the 2nd patch mostly replace commit 691656abdc9a
("btrfs-progs: fix gcc9 warning and potentially unaligned access to dev stats") by
backporing kernel btrfs_dev_stats_value() to btrfs-progs.
Thus the original fix can be removed.
The remaining warning is -Warray-boundary, but that one looks pretty
strange. The code looks good, and I backported an easy version:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
struct test_struct {
long long off_0_7;
int offset_8_11;
unsigned char offset_12_12;
} __attribute__ ((packed));
void reset_values(struct test_struct *ptr)
{
memset(&ptr->offset_8_11, 0, sizeof(struct test_struct) - offsetof(struct test_struct, offset_8_11));
}
int main()
{
struct test_struct my_struct = { 0xffff, 0xff, 0xff};
printf("struct=0x%llx start=0x%llx len=0x%x\n",
&my_struct, &my_struct.offset_8_11, sizeof(struct test_struct) - offsetof(struct test_struct, offset_8_11));
reset_values(&my_struct);
printf("0x%lx 0x%x 0x%x\n", my_struct.off_0_7, my_struct.offset_8_11, my_struct.offset_12_12);
return 0;
}
Which doesn't reproduce the warning.
Thus looks like a false warning and a bug in gcc.
Qu Wenruo (4):
btrfs-progs: constify extent buffer reader
btrfs-progs: Fix -Waddress-of-packed-member warning in
btrfs_dev_stats_values callers
btrfs-progs: Remove unnecessary fallthrough attribute in
test_num_disk_vs_raid()
btrfs-progs: Fix Wformat-overflow warning in cmds-receive.c
cmds-receive.c | 4 ++--
ctree.h | 13 +++++++++++++
extent_io.c | 4 ++--
extent_io.h | 4 ++--
print-tree.c | 21 ++++++---------------
utils.c | 1 -
6 files changed, 25 insertions(+), 22 deletions(-)
--
2.22.0