Hi Günter,
On Tue, Mar 12, 2024 at 6:06 PM Guenter Roeck linux@roeck-us.net wrote:
Add name of functions triggering warning backtraces to the __bug_table object section to enable support for suppressing WARNING backtraces.
To limit image size impact, the pointer to the function name is only added to the __bug_table section if both CONFIG_KUNIT and CONFIG_DEBUG_BUGVERBOSE are enabled. Otherwise, the __func__ assembly parameter is replaced with a (dummy) NULL parameter to avoid an image size increase due to unused __func__ entries (this is necessary because __func__ is not a define but a virtual variable).
Signed-off-by: Guenter Roeck linux@roeck-us.net
Thanks for your patch!
--- a/arch/s390/include/asm/bug.h +++ b/arch/s390/include/asm/bug.h @@ -8,19 +8,30 @@
#ifdef CONFIG_DEBUG_BUGVERBOSE
+#if IS_ENABLED(CONFIG_KUNIT) +# define HAVE_BUG_FUNCTION +# define __BUG_FUNC_PTR " .long %0-.\n" +# define __BUG_FUNC __func__ +#else +# define __BUG_FUNC_PTR +# define __BUG_FUNC NULL +#endif /* IS_ENABLED(CONFIG_KUNIT) */
#define __EMIT_BUG(x) do { \ asm_inline volatile( \ "0: mc 0,0\n" \ ".section .rodata.str,"aMS",@progbits,1\n" \ "1: .asciz ""__FILE__""\n" \ ".previous\n" \
".section __bug_table,\"awM\",@progbits,%2\n" \
".section __bug_table,\"awM\",@progbits,%3\n" \
This change conflicts with commit 3938490e78f443fb ("s390/bug: remove entry size from __bug_table section") in linus/master. I guess it should just be dropped?
"2: .long 0b-.\n" \ " .long 1b-.\n" \
" .short %0,%1\n" \
" .org 2b+%2\n" \
__BUG_FUNC_PTR \
" .short %1,%2\n" \
" .org 2b+%3\n" \ ".previous\n" \
: : "i" (__LINE__), \
: : "i" (__BUG_FUNC), \
"i" (__LINE__), \ "i" (x), \ "i" (sizeof(struct bug_entry))); \
} while (0)
Gr{oetje,eeting}s,
Geert