Re: [RFC PATCH] Add -Werror flag when building GNU/HURD.
Joshua Branson via Bug reports for the GNU Hurd <[email protected]> Tue, 28 Jul 2026 11:52:06 -0400
| Newsgroups | gmane.os.hurd.bugs |
|---|---|
| Message-ID | <[email protected]> |
On 7/28/26 6:38 AM, Bradley Morgan wrote: > On 28 July 2026 11:31:23 BST, Mikhail Karpov <[email protected]> > wrote: >> Hello, >> >> When compiling GNU/Hurd, quite a few warnings were generated. I fixed some >> of >> them, and now it compiles with flags: >> CFLAGS += -std=gnu99 $(gnu89-inline-CFLAGS) -Wall -Werror \ >> -Werror=old-style-definition \ >> -Werror=implicit-function-declaration \ >> -Werror=strict-prototypes \ >> -g -O3 -fno-strict-aliasing $($*-CFLAGS) >> Completes successfully. >> >> I have a few questions: >> 1. Is this flag even necessary? >> 2. Should I remove the -fno-strict-aliasing flag? I didn't remove it, so >> the >> -Wstrict-aliasing warnings are ignored. >> 3. Should I add the -Wextra flag? >> >> I agree that warnings are sometimes annoying, but I believe that catching >> a >> real error at compile time can save a lot of time searching for it in the >> code. However, I'd still like to hear people's opinions on this matter. >> >> Now on to the patches. >> I'm not sure about some of them, and they probably require more time to >> study. For example, in pfinet/linux-src/include/linux/in_route.h there was >> #define RTCF_NAT (RTCF_DNAT|RTCF_SNAT) (0x08000000|0x00800000), but >> previously in tools-i686/include/net/route.h there was also #define >> RTCF_NAT >> 0x00800000. The same problem occurs with #define NET_MAX_FILTER 512 from >> libbpf/bpf_impl.h and #define NET_MAX_FILTER 128 from >> tools-i686/include/device/net_status.h. >> >> I simply removed unused variables and moved unused functions to #if 0. >> >> pfinet encountered a false-positive warning -Werror=array-bounds in the >> queue >> handling functions. I couldn't find a simple solution, so I simply added >> -Wno-array-bounds to the pfinet Makefile. >> >> And a few places that were unclear to me: >> The -Werror=maybe-uninitialized warning was in >> pfinet/linux-src/net/ipv4/igmp.c because im->loaded = 0 was only set >> within >> CONFIG_IP_MULTICAST, and the igmp_group_added function checked im->loaded >> for 0 when it was called. >> The -Werror=address warning was in pfinet/linux-src/net/ipv4/devinet.c >> because ifa->ifa_label is an array, not a pointer, so the if >> (ifa->ifa_label) >> condition is always true. I removed this check and left only >> strcpy(ifr.ifr_name, ifa->ifa_label). >> The Werror=shift-overflow warning was in the libps/ps.h file: #define >> PSTAT_USER_BASE 0x20000000, and #define W_PSTAT_LOGIN (PSTAT_USER_BASE << >> 3), >> so the result didn't fit into the int type. I added the ULL suffix to >> 0x20000000 and that solved the problem. >> >> The fixing-structure-declaration-inside-parameter-list.patch patch applies >> to >> the libtirpc-1.3.6/tirpc/rpc/rpc_msg.h file. It must be applied >> separately. >> >> Thanks, >> >> > > Hi, Where's the patch? > > Adding -WError is relatively a non issue, (as the user could build with > W1,or W128 if they are feeling crazy) Forcing the user to build with > warnings as errors makes the build(er) responsible for fixing > someone elses BS So I am not a Hurd developer, but I think this is a good idea to turn on WError be default. Didn't Linus just turn on WError by default for the kernel? I could be wrong. Also, GCC 14 is WAY more strict about how you compile C (1). I feel like the GCC developers are making C more strict to combat the competition from rust? 1) https://gcc.gnu.org/gcc-14/porting_to.html I learned about that url via reading guix's blog post: https://guix.gnu.org/en/blog/2026/the-64-bit-hurd/ Joshua > > If I see the patch, I'll have a look 😀 > > Thanks! >