[RFC PATCH] ARM: Use generic BUG() handler

Russell King - ARM Linux linux at arm.linux.org.uk
Thu Mar 3 09:11:13 EST 2011


On Wed, Mar 02, 2011 at 10:59:50AM +0000, Dave Martin wrote:
> +	asm volatile("1:\t" __bug_instr "\n"		q	\
> +		     ".pushsection .rodata.str, \"a\"\n"	\
> +		     "2:\t.asciz \"" #__file "\"\n"		\
> +		     ".popsection\n"				\ 

Doesn't this mean we end up with multiple file names?

> +		     ".pushsection __bug_table,\"a\"\n"		\
> +		     "3:\t.word 1b, 2b\n"			\
> +		     "\t.hword " #__line ", 0\n"		\
> +		     ".popsection"				\
> +	unreachable();						\
> +} while (0)

Second problem is that the above produces this:

        1:      .word 0xec000000
.pushsection .rodata.str, "a"
2:      .asciz "__FILE__"
.popsection
.pushsection __bug_table,"a"
3:      .word 1b, 2b
        .hword __LINE__, 0
.popsection

which is clearly not what we want.  Adding another level of indirection
starts to get closer to what we desire:

        1:      .word 0xec000000
.pushsection .rodata.str, "a"
2:      .asciz ""t.c""
.popsection
.pushsection __bug_table,"a"
3:      .word 1b, 2b
        .hword 19, 0
.popsection

but we're still ending up with multiple strings containing the filename,
which is going to excessively bloat the kernel no end.



More information about the linux-arm-kernel mailing list