Message ID | 20161228200433.24244-1-cov@codeaurora.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 12/28/2016 02:04 PM, Christopher Covington wrote: It's best when posting a v3 to do so as a new thread, rather than buried in-reply-to an earlier thread, as some maintainers' tools overlook deeply-threaded patches. Probably won't matter too much in this case, but it's useful information for future submissions; other tips can be found here: http://wiki.qemu.org/Contribute/SubmitAPatch > The definition of the major() and minor() macros are moving within glibc to > <sys/sysmacros.h>. Or more precisely, major() and minor() have ALWAYS been in <sys/sysmacros.h> under glibc, but are now being removed from <sys/types.h>. But your patch is the correct fix: if <sys/sysmacros.h> exists, include it. > Include this header when it is available to avoid the > following sorts of build-stopping messages: > > qga/commands-posix.c: In function ‘dev_major_minor’: > qga/commands-posix.c:656:13: error: In the GNU C Library, "major" is defined > by <sys/sysmacros.h>. For historical compatibility, it is > currently defined by <sys/types.h> as well, but we plan to > remove this soon. To use "major", include <sys/sysmacros.h> > directly. If you did not intend to use a system-defined macro > "major", you should undefine it after including <sys/types.h>. [-Werror] > *devmajor = major(st.st_rdev); > ^~~~~~~~~~~~~~~~~~~~~~~~~~ > > qga/commands-posix.c:657:13: error: In the GNU C Library, "minor" is defined > by <sys/sysmacros.h>. For historical compatibility, it is > currently defined by <sys/types.h> as well, but we plan to > remove this soon. To use "minor", include <sys/sysmacros.h> > directly. If you did not intend to use a system-defined macro > "minor", you should undefine it after including <sys/types.h>. [-Werror] > *devminor = minor(st.st_rdev); > ^~~~~~~~~~~~~~~~~~~~~~~~~~ > > The additional include allows the build to complete on Fedora 26 (Rawhide) > with glibc version 2.24.90. > > Signed-off-by: Christopher Covington <cov@codeaurora.org> > --- > configure | 18 ++++++++++++++++++ > include/sysemu/os-posix.h | 4 ++++ > 2 files changed, 22 insertions(+) Reviewed-by: Eric Blake <eblake@redhat.com>
On 12/29/2016 08:03 AM, Eric Blake wrote: > On 12/28/2016 02:04 PM, Christopher Covington wrote: > > It's best when posting a v3 to do so as a new thread, rather than buried > in-reply-to an earlier thread, as some maintainers' tools overlook > deeply-threaded patches. Probably won't matter too much in this case, > but it's useful information for future submissions; other tips can be > found here: > http://wiki.qemu.org/Contribute/SubmitAPatch > > >> The definition of the major() and minor() macros are moving within glibc to >> <sys/sysmacros.h>. > > Or more precisely, major() and minor() have ALWAYS been in > <sys/sysmacros.h> under glibc, but are now being removed from > <sys/types.h>. But your patch is the correct fix: if <sys/sysmacros.h> > exists, include it. > >> Include this header when it is available to avoid the >> following sorts of build-stopping messages: >> >> qga/commands-posix.c: In function ‘dev_major_minor’: >> qga/commands-posix.c:656:13: error: In the GNU C Library, "major" is defined >> by <sys/sysmacros.h>. For historical compatibility, it is ... >> The additional include allows the build to complete on Fedora 26 (Rawhide) >> with glibc version 2.24.90. >> >> Signed-off-by: Christopher Covington <cov@codeaurora.org> >> --- >> configure | 18 ++++++++++++++++++ >> include/sysemu/os-posix.h | 4 ++++ >> 2 files changed, 22 insertions(+) > > Reviewed-by: Eric Blake <eblake@redhat.com> > Ping - can we get this applied to master to fix broken builds on rawhide?
On 28 December 2016 at 21:04, Christopher Covington <cov@codeaurora.org> wrote: > The definition of the major() and minor() macros are moving within glibc to > <sys/sysmacros.h>. Include this header when it is available to avoid the > following sorts of build-stopping messages: > > qga/commands-posix.c: In function ‘dev_major_minor’: > qga/commands-posix.c:656:13: error: In the GNU C Library, "major" is defined > by <sys/sysmacros.h>. For historical compatibility, it is > currently defined by <sys/types.h> as well, but we plan to > remove this soon. To use "major", include <sys/sysmacros.h> > directly. If you did not intend to use a system-defined macro > "major", you should undefine it after including <sys/types.h>. [-Werror] > *devmajor = major(st.st_rdev); > ^~~~~~~~~~~~~~~~~~~~~~~~~~ > > qga/commands-posix.c:657:13: error: In the GNU C Library, "minor" is defined > by <sys/sysmacros.h>. For historical compatibility, it is > currently defined by <sys/types.h> as well, but we plan to > remove this soon. To use "minor", include <sys/sysmacros.h> > directly. If you did not intend to use a system-defined macro > "minor", you should undefine it after including <sys/types.h>. [-Werror] > *devminor = minor(st.st_rdev); > ^~~~~~~~~~~~~~~~~~~~~~~~~~ > > The additional include allows the build to complete on Fedora 26 (Rawhide) > with glibc version 2.24.90. > > Signed-off-by: Christopher Covington <cov@codeaurora.org> > --- Applied to master, thanks. -- PMM
diff --git a/configure b/configure index 218df87d21..58a33c71ad 100755 --- a/configure +++ b/configure @@ -4746,6 +4746,20 @@ if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then fi ########################################## +# check for sysmacros.h + +have_sysmacros=no +cat > $TMPC << EOF +#include <sys/sysmacros.h> +int main(void) { + return makedev(0, 0); +} +EOF +if compile_prog "" "" ; then + have_sysmacros=yes +fi + +########################################## # End of CC checks # After here, no more $cc or $ld runs @@ -5721,6 +5735,10 @@ if test "$have_af_vsock" = "yes" ; then echo "CONFIG_AF_VSOCK=y" >> $config_host_mak fi +if test "$have_sysmacros" = "yes" ; then + echo "CONFIG_SYSMACROS=y" >> $config_host_mak +fi + # Hold two types of flag: # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on # a thread we have a handle to diff --git a/include/sysemu/os-posix.h b/include/sysemu/os-posix.h index b0a6c0695b..900bdcb45a 100644 --- a/include/sysemu/os-posix.h +++ b/include/sysemu/os-posix.h @@ -34,6 +34,10 @@ #include <netdb.h> #include <sys/un.h> +#ifdef CONFIG_SYSMACROS +#include <sys/sysmacros.h> +#endif + void os_set_line_buffering(void); void os_set_proc_name(const char *s); void os_setup_signal_handling(void);
The definition of the major() and minor() macros are moving within glibc to <sys/sysmacros.h>. Include this header when it is available to avoid the following sorts of build-stopping messages: qga/commands-posix.c: In function ‘dev_major_minor’: qga/commands-posix.c:656:13: error: In the GNU C Library, "major" is defined by <sys/sysmacros.h>. For historical compatibility, it is currently defined by <sys/types.h> as well, but we plan to remove this soon. To use "major", include <sys/sysmacros.h> directly. If you did not intend to use a system-defined macro "major", you should undefine it after including <sys/types.h>. [-Werror] *devmajor = major(st.st_rdev); ^~~~~~~~~~~~~~~~~~~~~~~~~~ qga/commands-posix.c:657:13: error: In the GNU C Library, "minor" is defined by <sys/sysmacros.h>. For historical compatibility, it is currently defined by <sys/types.h> as well, but we plan to remove this soon. To use "minor", include <sys/sysmacros.h> directly. If you did not intend to use a system-defined macro "minor", you should undefine it after including <sys/types.h>. [-Werror] *devminor = minor(st.st_rdev); ^~~~~~~~~~~~~~~~~~~~~~~~~~ The additional include allows the build to complete on Fedora 26 (Rawhide) with glibc version 2.24.90. Signed-off-by: Christopher Covington <cov@codeaurora.org> --- configure | 18 ++++++++++++++++++ include/sysemu/os-posix.h | 4 ++++ 2 files changed, 22 insertions(+)