Append early kprobe related slots to KPROBES_TEXT. This is arch independent part. Arch code should define MAX_OPTINSN_SIZE, KPROBE_OPCODE_SIZE and MAX_INSN_SIZE for it.
Signed-off-by: Wang Nan <wangn...@huawei.com> --- include/asm-generic/vmlinux.lds.h | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index ac78910..7cd1d21 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -424,11 +424,28 @@ *(.spinlock.text) \ VMLINUX_SYMBOL(__lock_text_end) = .; +#ifndef CONFIG_EARLY_KPROBES +# define EARLY_KPROBES_TEXT +#else +# define EARLY_KPROBES_TEXT \ + . = ALIGN(8); \ + VMLINUX_SYMBOL(__early_kprobes_start) = .; \ + VMLINUX_SYMBOL(__early_kprobes_code_area_start) = .; \ + . = . + MAX_OPTINSN_SIZE * CONFIG_NR_EARLY_KPROBES_SLOTS; \ + VMLINUX_SYMBOL(__early_kprobes_code_area_end) = .; \ + . = ALIGN(8); \ + VMLINUX_SYMBOL(__early_kprobes_insn_slot_start) = .; \ + . = . + MAX_INSN_SIZE * KPROBE_OPCODE_SIZE * CONFIG_NR_EARLY_KPROBES_SLOTS;\ + VMLINUX_SYMBOL(__early_kprobes_insn_slot_end) = .; \ + VMLINUX_SYMBOL(__early_kprobes_end) = .; +#endif + #define KPROBES_TEXT \ ALIGN_FUNCTION(); \ VMLINUX_SYMBOL(__kprobes_text_start) = .; \ *(.kprobes.text) \ - VMLINUX_SYMBOL(__kprobes_text_end) = .; + VMLINUX_SYMBOL(__kprobes_text_end) = .; \ + EARLY_KPROBES_TEXT #define ENTRY_TEXT \ ALIGN_FUNCTION(); \ -- 1.8.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/