Re: [PATCH 10/14] parisc: Add support for suppressing warning backtraces

Helge Deller <[email protected]>
Newsgroups gmane.linux.ports.riscv,gmane.comp.video.dri.devel,gmane.linux.kernel.cross-arch,gmane.linux.ports.arm.kernel,gmane.linux.documentation,gmane.linux.kernel,gmane.linux.ports.parisc,gmane.linux.ports.ppc64.devel,gmane.linux.ports.sh.devel
Message-ID <[email protected]>
On 3/12/24 18:03, Guenter Roeck 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).
>
> While at it, declare assembler parameters as constants where possible.
> Refine .blockz instructions to calculate the necessary padding instead
> of using fixed values.
>
> Signed-off-by: Guenter Roeck <[email protected]>


Acked-by: Helge Deller <[email protected]>

Helge


> ---
>   arch/parisc/include/asm/bug.h | 29 +++++++++++++++++++++--------
>   1 file changed, 21 insertions(+), 8 deletions(-)
>
> diff --git a/arch/parisc/include/asm/bug.h b/arch/parisc/include/asm/bug.h
> index 833555f74ffa..792dacc2a653 100644
> --- a/arch/parisc/include/asm/bug.h
> +++ b/arch/parisc/include/asm/bug.h
> @@ -23,8 +23,17 @@
>   # define __BUG_REL(val) ".word " __stringify(val)
>   #endif
>
> -
>   #ifdef CONFIG_DEBUG_BUGVERBOSE
> +
> +#if IS_ENABLED(CONFIG_KUNIT)
> +# define HAVE_BUG_FUNCTION
> +# define __BUG_FUNC_PTR	__BUG_REL(%c1)
> +# define __BUG_FUNC	__func__
> +#else
> +# define __BUG_FUNC_PTR
> +# define __BUG_FUNC	NULL
> +#endif /* IS_ENABLED(CONFIG_KUNIT) */
> +
>   #define BUG()								\
>   	do {								\
>   		asm volatile("\n"					\
> @@ -33,10 +42,12 @@
>   			     "\t.align 4\n"				\
>   			     "2:\t" __BUG_REL(1b) "\n"			\
>   			     "\t" __BUG_REL(%c0)  "\n"			\
> -			     "\t.short %1, %2\n"			\
> -			     "\t.blockz %3-2*4-2*2\n"			\
> +			     "\t" __BUG_FUNC_PTR  "\n"			\
> +			     "\t.short %c2, %c3\n"			\
> +			     "\t.blockz %c4-(.-2b)\n"			\
>   			     "\t.popsection"				\
> -			     : : "i" (__FILE__), "i" (__LINE__),	\
> +			     : : "i" (__FILE__), "i" (__BUG_FUNC),	\
> +			     "i" (__LINE__),				\
>   			     "i" (0), "i" (sizeof(struct bug_entry)) );	\
>   		unreachable();						\
>   	} while(0)
> @@ -58,10 +69,12 @@
>   			     "\t.align 4\n"				\
>   			     "2:\t" __BUG_REL(1b) "\n"			\
>   			     "\t" __BUG_REL(%c0)  "\n"			\
> -			     "\t.short %1, %2\n"			\
> -			     "\t.blockz %3-2*4-2*2\n"			\
> +			     "\t" __BUG_FUNC_PTR  "\n"			\
> +			     "\t.short %c2, %3\n"			\
> +			     "\t.blockz %c4-(.-2b)\n"			\
>   			     "\t.popsection"				\
> -			     : : "i" (__FILE__), "i" (__LINE__),	\
> +			     : : "i" (__FILE__), "i" (__BUG_FUNC),	\
> +			     "i" (__LINE__),				\
>   			     "i" (BUGFLAG_WARNING|(flags)),		\
>   			     "i" (sizeof(struct bug_entry)) );		\
>   	} while(0)
> @@ -74,7 +87,7 @@
>   			     "\t.align 4\n"				\
>   			     "2:\t" __BUG_REL(1b) "\n"			\
>   			     "\t.short %0\n"				\
> -			     "\t.blockz %1-4-2\n"			\
> +			     "\t.blockz %c1-(.-2b)\n"			\
>   			     "\t.popsection"				\
>   			     : : "i" (BUGFLAG_WARNING|(flags)),		\
>   			     "i" (sizeof(struct bug_entry)) );		\
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.