s390/bug: add entry size to the __bug_table section
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 17 Jan 2019 08:29:15 +0000 (09:29 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 2 May 2019 11:54:11 +0000 (13:54 +0200)
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>
arch/s390/include/asm/bug.h

index 429f43a..713fc97 100644 (file)
@@ -15,7 +15,7 @@
                ".section .rodata.str,\"aMS\",@progbits,1\n"    \
                "2:     .asciz  \""__FILE__"\"\n"               \
                ".previous\n"                                   \
-               ".section __bug_table,\"aw\"\n"                 \
+               ".section __bug_table,\"awM\",@progbits,%2\n"   \
                "3:     .long   1b-3b,2b-3b\n"                  \
                "       .short  %0,%1\n"                        \
                "       .org    3b+%2\n"                        \
 
 #else /* CONFIG_DEBUG_BUGVERBOSE */
 
-#define __EMIT_BUG(x) do {                             \
-       asm volatile(                                   \
-               "0:     j       0b+2\n"                 \
-               "1:\n"                                  \
-               ".section __bug_table,\"aw\"\n"         \
-               "2:     .long   1b-2b\n"                \
-               "       .short  %0\n"                   \
-               "       .org    2b+%1\n"                \
-               ".previous\n"                           \
-               : : "i" (x),                            \
-                   "i" (sizeof(struct bug_entry)));    \
+#define __EMIT_BUG(x) do {                                     \
+       asm volatile(                                           \
+               "0:     j       0b+2\n"                         \
+               "1:\n"                                          \
+               ".section __bug_table,\"awM\",@progbits,%1\n"   \
+               "2:     .long   1b-2b\n"                        \
+               "       .short  %0\n"                           \
+               "       .org    2b+%1\n"                        \
+               ".previous\n"                                   \
+               : : "i" (x),                                    \
+                   "i" (sizeof(struct bug_entry)));            \
 } while (0)
 
 #endif /* CONFIG_DEBUG_BUGVERBOSE */