Re: -Werror enabled by default on GNU/Hurd

Andrew Burgess via Gdb <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
* Andrea Monaco via Gdb <[email protected]> [2021-12-29 19:06:04 +0100]:

> 
>   > with this patch I am now able to build GDB on GNU/Hurd (i686).  This
>   > might help you out.
> 
> Thanks, that solves a warning.  But the build still fails with this
> output:
> 
> 
>   CXX    msg_U.o
> cc1: warning: command-line option '-Wno-mismatched-tags' is valid for C++/ObjC++ but not for C
> cc1: warning: command-line option '-Wsuggest-override' is valid for C++/ObjC++ but not for C
> cc1: warning: command-line option '-Wdeprecated-copy' is valid for C++/ObjC++ but not for C
> cc1: warning: command-line option '-Wdeprecated-copy-dtor' is valid for C++/ObjC++ but not for C
> cc1: warning: command-line option '-Wredundant-move' is valid for C++/ObjC++ but not for C
> cc1: warning: command-line option '-Wstrict-null-sentinel' is valid for C++/ObjC++ but not for C
> msg_U.c: In function 'msg_set_init_ports':
> msg_U.c:1044:22: error: conversion from 'unsigned int' to 'short unsigned int' changes value from '4294967295' to '65535' [-Werror=overflow]
>  1044 |   /* msgtl_name = */ MACH_MSG_TYPE_POLYMORPHIC,
>       |                      ^~~~~~~~~~~~~~~~~~~~~~~~~
> msg_U.c: In function 'msg_set_dtable':
> msg_U.c:1838:22: error: conversion from 'unsigned int' to 'short unsigned int' changes value from '4294967295' to '65535' [-Werror=overflow]
>  1838 |   /* msgtl_name = */ MACH_MSG_TYPE_POLYMORPHIC,
>       |                      ^~~~~~~~~~~~~~~~~~~~~~~~~
> cc1: all warnings being treated as errors
> Makefile:1684: recipe for target 'msg_U.o' failed
> make: *** [msg_U.o] Error 1

I don't claim to know anything about GNU/Hurd, this was the first time
I ever installed it.

The file msg_U.c is generated using the mig tool, and the .defs files
binutils-gdb/gdb/msg.defs.  The .defs file just includes
/usr/include/hurd/msg.h.  And the makefile fragment that builds the
msg_U.c is found in binutils-gdb/gdb/config/i386/i386gnu.mn.

I notice in the above, that my version of those two lines is slightly
different, like this:

  /* msgtl_name = */      (unsigned short) MACH_MSG_TYPE_POLYMORPHIC,

Which would solve the error you're seeing.  Finally, here's the
version number information for the mig tool I'm using:

  $ mig --version
  i686-gnu-mig (GNU MIG) 1.8+git20200618

Remembering that you probably understand all this far better than me,
I wonder if you need to update your version of mig?

As a last resort if you patch your generated file, adding the cast
that I see, is this enough to finish building GDB?  Clearly this isn't
a long term solution, but it feels like the above warning is a tooling
issue, rather than a problem with the GDB source.

Thanks,
Andrew
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.