s390: have unique symbol for __switch_to address
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Thu, 30 Jun 2016 10:40:25 +0000 (12:40 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 4 Jul 2016 07:25:22 +0000 (09:25 +0200)
After linking there are several symbols for the same address that the
__switch_to symbol points to. E.g.:

000000000089b9c0 T __kprobes_text_start
000000000089b9c0 T __lock_text_end
000000000089b9c0 T __lock_text_start
000000000089b9c0 T __sched_text_end
000000000089b9c0 T __switch_to

When disassembling with "objdump -d" this results in a missing
__switch_to function. It would be named __kprobes_text_start
instead. To unconfuse objdump add a nop in front of the kprobes text
section. That way __switch_to appears again.

Obviously this solution is sort of a hack, since it also depends on
link order if this works or not. However it is the best I can come up
with for now.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/entry.S

index 9a9a35657860f87c2c1432a71ac39c7c519180cf..c51650a1ed167d533922f1b205c666368d5cc9ad 100644 (file)
@@ -163,6 +163,16 @@ _PIF_WORK  = (_PIF_PER_TRAP)
        .endm
 
        .section .kprobes.text, "ax"
+.Ldummy:
+       /*
+        * This nop exists only in order to avoid that __switch_to starts at
+        * the beginning of the kprobes text section. In that case we would
+        * have several symbols at the same address. E.g. objdump would take
+        * an arbitrary symbol name when disassembling this code.
+        * With the added nop in between the __switch_to symbol is unique
+        * again.
+        */
+       nop     0
 
 /*
  * Scheduler resume function, called by switch_to