Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

s390/bug: add entry size to the __bug_table section

Change the __EMIT_BUG inline assembly to emit mergeable __bug_table
entries with type @progbits and specify the size of each entry.
The entry size is encoded sh_entsize field of the section definition,
it allows to identify which struct bug_entry to use to decode the
entries. This will be needed for the objtool support.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>

+12 -12
+12 -12
arch/s390/include/asm/bug.h
··· 15 15 ".section .rodata.str,\"aMS\",@progbits,1\n" \ 16 16 "2: .asciz \""__FILE__"\"\n" \ 17 17 ".previous\n" \ 18 - ".section __bug_table,\"aw\"\n" \ 18 + ".section __bug_table,\"awM\",@progbits,%2\n" \ 19 19 "3: .long 1b-3b,2b-3b\n" \ 20 20 " .short %0,%1\n" \ 21 21 " .org 3b+%2\n" \ ··· 27 27 28 28 #else /* CONFIG_DEBUG_BUGVERBOSE */ 29 29 30 - #define __EMIT_BUG(x) do { \ 31 - asm volatile( \ 32 - "0: j 0b+2\n" \ 33 - "1:\n" \ 34 - ".section __bug_table,\"aw\"\n" \ 35 - "2: .long 1b-2b\n" \ 36 - " .short %0\n" \ 37 - " .org 2b+%1\n" \ 38 - ".previous\n" \ 39 - : : "i" (x), \ 40 - "i" (sizeof(struct bug_entry))); \ 30 + #define __EMIT_BUG(x) do { \ 31 + asm volatile( \ 32 + "0: j 0b+2\n" \ 33 + "1:\n" \ 34 + ".section __bug_table,\"awM\",@progbits,%1\n" \ 35 + "2: .long 1b-2b\n" \ 36 + " .short %0\n" \ 37 + " .org 2b+%1\n" \ 38 + ".previous\n" \ 39 + : : "i" (x), \ 40 + "i" (sizeof(struct bug_entry))); \ 41 41 } while (0) 42 42 43 43 #endif /* CONFIG_DEBUG_BUGVERBOSE */