On Fri, Mar 21, 2025 at 10:05:42PM +0100, Alessandro Carminati wrote:
+#ifdef CONFIG_KUNIT_SUPPRESS_BACKTRACE +# define HAVE_BUG_FUNCTION +# define __BUG_FUNC_PTR " .long %0-.\n" +# define __BUG_FUNC __func__
gcc 7.5.0 on s390 barfs; it doesn't like the use of "__func__" with "%0-."
...
GCC makes significant efforts to handle this, and for several architectures, it manages to solve the problem. However, this is not universally the case. Additionally, -fPIC is not widely used in kernel code... I have only seen it used for VDSO, the x86 boot piggyback decompressor, PowerPC boot, and the s390x architecture.
That said, GCC has been mitigating this issue, allowing us to treat a non-compile-time constant as if it were one. A proof of this is that, at least since GCC 11, the s390x version of GCC is able to build this code. Before that... certainly in GCC 7.5 it couldn't.
A simple fix would be to restrict usage to GCC versions greater than 11 for s390.
But please add that dependency only for this new feature for the time being. Right now I would not like to see that s390 is the only architecture (besides parisc) which requires a much higher minimum gcc level than every other architecture. Unless there are specific reasons.