On Thu, Jan 28, 2021 at 1:34 PM Josh Poimboeuf <jpoimboe@xxxxxxxxxx> wrote: > > On Thu, Jan 28, 2021 at 01:23:11PM -0800, Linus Torvalds wrote: > > THAT workaround is long gone, but I didn't check what other ones we > > might have now. But the gcc version checks we _do_ have are not > > necessarily about major versions at all (ie I trivially found checks > > for 4.9, 4.9.2, 5.1, 7.2 and 9.1). > > Then maybe the check should be same major.minor? Well, how many of them are actually about things that generate incompatible object code? The main one I can think of is the KASAN ABI version checks, but honestly, I think that's irrelevant. I really hope no distros enable KASAN in user kernels. Another version check I looked at was the one that just checks whether the compiler natively supports __builtin_mul_overflow() or not - it doesn't generate incompatible object code, it just takes advantage of a compiler feature if one exists. You can mix and match those kinds of things well enough. So I'd really like to hear actual hard technical reasons with examples, for why you'd want to add this test in the first place. No hand-waving "different compiler versions don't work together". Because that's simply not true. > And convert it to a strongly worded warning/disclaimer? A warning might be better for the simple reason that it wouldn't cause people to just fix it with "make oldconfig". Maybe you haven't looked at people who compile external modules, but they always have various "this is how to work around issues with version XYZ". That "make oldconfig" would simply just become the workaround for any build errors. And a warning might be more palatable even if different compiler version work fine together. Just a heads up on "it looks like you might be mixing compiler versions" is a valid note, and isn't necessarily wrong. Even when they work well together, maybe you want to have people at least _aware_ of it. Linus