Message ID | 20161024082912.20253-1-slyich@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi, On Mon, Oct 24, 2016 at 09:29:12AM +0100, slyich@gmail.com wrote: > From: Sergei Trofimovich <slyfox@gentoo.org> > > Header breakage noticed by cynede. Reproducible as: > > $ gcc -c /usr/include/btrfs/ioctl.h -o /tmp/a.o > /usr/include/btrfs/ioctl.h:42:14: error: expected declaration specifiers or '...' before 'sizeof' > BUILD_ASSERT(sizeof(struct btrfs_ioctl_vol_args) == 4096); > ^~~~~~ > > Basically gcc tries to say us BUILD_ASSERT is not visible. > > BUILD_ASSERT lives in kerncompat.h which this change adds. I think including the kerncompat.h is too intrusive here, I've fixed by providing an empty macro if it's not defined. I'll release 4.8.2 soon. -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, 24 Oct 2016 14:52:05 +0200 David Sterba <dsterba@suse.cz> wrote: > Hi, > > On Mon, Oct 24, 2016 at 09:29:12AM +0100, slyich@gmail.com wrote: > > From: Sergei Trofimovich <slyfox@gentoo.org> > > > > Header breakage noticed by cynede. Reproducible as: > > > > $ gcc -c /usr/include/btrfs/ioctl.h -o /tmp/a.o > > /usr/include/btrfs/ioctl.h:42:14: error: expected declaration specifiers or '...' before 'sizeof' > > BUILD_ASSERT(sizeof(struct btrfs_ioctl_vol_args) == 4096); > > ^~~~~~ > > > > Basically gcc tries to say us BUILD_ASSERT is not visible. > > > > BUILD_ASSERT lives in kerncompat.h which this change adds. > > I think including the kerncompat.h is too intrusive here, I've fixed by > providing an empty macro if it's not defined. I'll release 4.8.2 soon. Apologies. I did not test your fix right afterwards. Seems now header is incomplete due to missing NULL (gcc-6): btrfs-progs-v4.8.3 $ gcc -c ioctl.h -o /tmp/a.o ioctl.h: In function 'btrfs_err_str': ioctl.h:711:11: error: 'NULL' undeclared (first use in this function) return NULL; ^~~~ ioctl.h:711:11: note: each undeclared identifier is reported only once for each function it appears in
On Sat, Nov 12, 2016 at 10:14:49PM +0000, Sergei Trofimovich wrote: > > > Basically gcc tries to say us BUILD_ASSERT is not visible. > > > > > > BUILD_ASSERT lives in kerncompat.h which this change adds. > > > > I think including the kerncompat.h is too intrusive here, I've fixed by > > providing an empty macro if it's not defined. I'll release 4.8.2 soon. > > Apologies. I did not test your fix right afterwards. Seems now header is incomplete > due to missing NULL (gcc-6): > > btrfs-progs-v4.8.3 $ gcc -c ioctl.h -o /tmp/a.o > ioctl.h: In function 'btrfs_err_str': > ioctl.h:711:11: error: 'NULL' undeclared (first use in this function) > return NULL; > ^~~~ > ioctl.h:711:11: note: each undeclared identifier is reported only once for each function it appears in The ioctl.h file can be included in both C and C++ code, I'd rahter avoid to ifdef the right definition of NULL, so s/NULL/0/ seems as a best fix to me. Compiling with g++ shows other type errors like ioctl.h:709:5: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] "in progress"; so we'd have to change the type to 'const char*'. I'm not sure how much breakage this could cause in programs using the header. -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Nov 14, 2016 at 01:34:49PM +0100, David Sterba wrote: > On Sat, Nov 12, 2016 at 10:14:49PM +0000, Sergei Trofimovich wrote: > > > > Basically gcc tries to say us BUILD_ASSERT is not visible. > > > > > > > > BUILD_ASSERT lives in kerncompat.h which this change adds. > > > > > > I think including the kerncompat.h is too intrusive here, I've fixed by > > > providing an empty macro if it's not defined. I'll release 4.8.2 soon. > > > > Apologies. I did not test your fix right afterwards. Seems now header is incomplete > > due to missing NULL (gcc-6): > > > > btrfs-progs-v4.8.3 $ gcc -c ioctl.h -o /tmp/a.o > > ioctl.h: In function 'btrfs_err_str': > > ioctl.h:711:11: error: 'NULL' undeclared (first use in this function) > > return NULL; > > ^~~~ > > ioctl.h:711:11: note: each undeclared identifier is reported only once for each function it appears in > > The ioctl.h file can be included in both C and C++ code, I'd rahter > avoid to ifdef the right definition of NULL, so s/NULL/0/ seems as a > best fix to me. Or #include <stddef.h>, now committed to devel. -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/ioctl.h b/ioctl.h index 238e7ef..ee650a9 100644 --- a/ioctl.h +++ b/ioctl.h @@ -26,6 +26,12 @@ extern "C" { #include <asm/types.h> #include <linux/ioctl.h> +#if BTRFS_FLAT_INCLUDES +#include "kerncompat.h" +#else +#include <btrfs/kerncompat.h> +#endif /* BTRFS_FLAT_INCLUDES */ + #ifndef __user #define __user #endif