On Wed, Sep 06, 2023 at 09:53:27PM -0400, Steven Rostedt wrote: > On Thu, 7 Sep 2023 08:54:38 +1000 > Dave Chinner <david@xxxxxxxxxxxxx> wrote: > > > And let's not forget: removing a filesystem from the kernel is not > > removing end user support for extracting data from old filesystems. > > We have VMs for that - we can run pretty much any kernel ever built > > inside a VM, so users that need to extract data from a really old > > filesystem we no longer support in a modern kernel can simply boot > > up an old distro that did support it and extract the data that way. > > Of course there's the case of trying to recreate a OS that can run on a > very old kernel. Just building an old kernel is difficult today because > today's compilers will refuse to build them (I've hit issues in bisections > because of that!) Yeah. I can't run Smatch on obsolete kernels because I can't build the tools/ directory etc. For example, it would be interesting to look at really ancient kernels to see how buggy they are. I started to hunt down all the Makefile which add a -Werror but there are a lot and eventually I got bored and gave up. Someone should patch GCC so there it checks an environment variable to ignore -Werror. Somethine like this? diff --git a/gcc/opts.cc b/gcc/opts.cc index ac81d4e42944..2de69300d4fe 100644 --- a/gcc/opts.cc +++ b/gcc/opts.cc @@ -2598,6 +2598,17 @@ print_help (struct gcc_options *opts, unsigned int lang_mask, lang_mask); } +static bool +ignore_w_error(void) +{ + char *str; + + str = getenv("IGNORE_WERROR"); + if (str && strcmp(str, "1") == 0) + return true; + return false; +} + /* Handle target- and language-independent options. Return zero to generate an "unknown option" message. Only options that need extra handling need to be listed here; if you simply want @@ -2773,11 +2784,15 @@ common_handle_option (struct gcc_options *opts, break; case OPT_Werror: + if (ignore_w_error()) + break; dc->warning_as_error_requested = value; break; case OPT_Werror_: - if (lang_mask == CL_DRIVER) + if (ignore_w_error()) + break; + if (lang_mask == CL_DRIVER) break; enable_warning_as_error (arg, value, lang_mask, handlers,