mirror of https://github.com/OpenIPC/firmware.git
189 lines
5.9 KiB
Diff
189 lines
5.9 KiB
Diff
diff -drupN a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
|
|
--- a/include/asm-generic/vmlinux.lds.h 2018-08-06 17:23:04.000000000 +0300
|
|
+++ b/include/asm-generic/vmlinux.lds.h 2022-06-12 05:28:14.000000000 +0300
|
|
@@ -67,10 +67,12 @@
|
|
*/
|
|
#ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
|
|
#define TEXT_MAIN .text .text.[0-9a-zA-Z_]*
|
|
+#define TEXT_CFI_MAIN .text.cfi .text.[0-9a-zA-Z_]*.cfi
|
|
#define DATA_MAIN .data .data.[0-9a-zA-Z_]*
|
|
#define BSS_MAIN .bss .bss.[0-9a-zA-Z_]*
|
|
#else
|
|
#define TEXT_MAIN .text
|
|
+#define TEXT_CFI_MAIN .text.cfi
|
|
#define DATA_MAIN .data
|
|
#define BSS_MAIN .bss
|
|
#endif
|
|
@@ -105,7 +107,7 @@
|
|
#ifdef CONFIG_FTRACE_MCOUNT_RECORD
|
|
#define MCOUNT_REC() . = ALIGN(8); \
|
|
VMLINUX_SYMBOL(__start_mcount_loc) = .; \
|
|
- *(__mcount_loc) \
|
|
+ KEEP(*(__mcount_loc)) \
|
|
VMLINUX_SYMBOL(__stop_mcount_loc) = .;
|
|
#else
|
|
#define MCOUNT_REC()
|
|
@@ -139,10 +141,10 @@
|
|
#ifdef CONFIG_EVENT_TRACING
|
|
#define FTRACE_EVENTS() . = ALIGN(8); \
|
|
VMLINUX_SYMBOL(__start_ftrace_events) = .; \
|
|
- *(_ftrace_events) \
|
|
+ KEEP(*(_ftrace_events)) \
|
|
VMLINUX_SYMBOL(__stop_ftrace_events) = .; \
|
|
VMLINUX_SYMBOL(__start_ftrace_enum_maps) = .; \
|
|
- *(_ftrace_enum_map) \
|
|
+ KEEP(*(_ftrace_enum_map)) \
|
|
VMLINUX_SYMBOL(__stop_ftrace_enum_maps) = .;
|
|
#else
|
|
#define FTRACE_EVENTS()
|
|
@@ -185,8 +187,8 @@
|
|
#define _OF_TABLE_1(name) \
|
|
. = ALIGN(8); \
|
|
VMLINUX_SYMBOL(__##name##_of_table) = .; \
|
|
- *(__##name##_of_table) \
|
|
- *(__##name##_of_table_end)
|
|
+ KEEP(*(__##name##_of_table)) \
|
|
+ KEEP(*(__##name##_of_table_end))
|
|
|
|
#define CLKSRC_OF_TABLES() OF_TABLE(CONFIG_CLKSRC_OF, clksrc)
|
|
#define IRQCHIP_OF_MATCH_TABLE() OF_TABLE(CONFIG_IRQCHIP, irqchip)
|
|
@@ -304,28 +306,28 @@
|
|
/* PCI quirks */ \
|
|
.pci_fixup : AT(ADDR(.pci_fixup) - LOAD_OFFSET) { \
|
|
VMLINUX_SYMBOL(__start_pci_fixups_early) = .; \
|
|
- *(.pci_fixup_early) \
|
|
+ KEEP(*(.pci_fixup_early)) \
|
|
VMLINUX_SYMBOL(__end_pci_fixups_early) = .; \
|
|
VMLINUX_SYMBOL(__start_pci_fixups_header) = .; \
|
|
- *(.pci_fixup_header) \
|
|
+ KEEP(*(.pci_fixup_header)) \
|
|
VMLINUX_SYMBOL(__end_pci_fixups_header) = .; \
|
|
VMLINUX_SYMBOL(__start_pci_fixups_final) = .; \
|
|
- *(.pci_fixup_final) \
|
|
+ KEEP(*(.pci_fixup_final)) \
|
|
VMLINUX_SYMBOL(__end_pci_fixups_final) = .; \
|
|
VMLINUX_SYMBOL(__start_pci_fixups_enable) = .; \
|
|
- *(.pci_fixup_enable) \
|
|
+ KEEP(*(.pci_fixup_enable)) \
|
|
VMLINUX_SYMBOL(__end_pci_fixups_enable) = .; \
|
|
VMLINUX_SYMBOL(__start_pci_fixups_resume) = .; \
|
|
- *(.pci_fixup_resume) \
|
|
+ KEEP(*(.pci_fixup_resume)) \
|
|
VMLINUX_SYMBOL(__end_pci_fixups_resume) = .; \
|
|
VMLINUX_SYMBOL(__start_pci_fixups_resume_early) = .; \
|
|
- *(.pci_fixup_resume_early) \
|
|
+ KEEP(*(.pci_fixup_resume_early)) \
|
|
VMLINUX_SYMBOL(__end_pci_fixups_resume_early) = .; \
|
|
VMLINUX_SYMBOL(__start_pci_fixups_suspend) = .; \
|
|
- *(.pci_fixup_suspend) \
|
|
+ KEEP(*(.pci_fixup_suspend)) \
|
|
VMLINUX_SYMBOL(__end_pci_fixups_suspend) = .; \
|
|
VMLINUX_SYMBOL(__start_pci_fixups_suspend_late) = .; \
|
|
- *(.pci_fixup_suspend_late) \
|
|
+ KEEP(*(.pci_fixup_suspend_late)) \
|
|
VMLINUX_SYMBOL(__end_pci_fixups_suspend_late) = .; \
|
|
} \
|
|
\
|
|
@@ -423,7 +425,7 @@
|
|
/* Built-in module parameters. */ \
|
|
__param : AT(ADDR(__param) - LOAD_OFFSET) { \
|
|
VMLINUX_SYMBOL(__start___param) = .; \
|
|
- *(__param) \
|
|
+ KEEP(*(__param)) \
|
|
VMLINUX_SYMBOL(__stop___param) = .; \
|
|
} \
|
|
\
|
|
@@ -460,6 +462,8 @@
|
|
#define TEXT_TEXT \
|
|
ALIGN_FUNCTION(); \
|
|
*(.text.hot TEXT_MAIN .text.fixup .text.unlikely) \
|
|
+ *(.text..ftrace) \
|
|
+ *(TEXT_CFI_MAIN) \
|
|
*(.ref.text) \
|
|
MEM_KEEP(init.text) \
|
|
MEM_KEEP(exit.text) \
|
|
@@ -499,28 +503,20 @@
|
|
*(.entry.text) \
|
|
VMLINUX_SYMBOL(__entry_text_end) = .;
|
|
|
|
-#if defined(CONFIG_FUNCTION_GRAPH_TRACER) || defined(CONFIG_KASAN)
|
|
#define IRQENTRY_TEXT \
|
|
ALIGN_FUNCTION(); \
|
|
VMLINUX_SYMBOL(__irqentry_text_start) = .; \
|
|
*(.irqentry.text) \
|
|
VMLINUX_SYMBOL(__irqentry_text_end) = .;
|
|
-#else
|
|
-#define IRQENTRY_TEXT
|
|
-#endif
|
|
|
|
-#if defined(CONFIG_FUNCTION_GRAPH_TRACER) || defined(CONFIG_KASAN)
|
|
#define SOFTIRQENTRY_TEXT \
|
|
ALIGN_FUNCTION(); \
|
|
VMLINUX_SYMBOL(__softirqentry_text_start) = .; \
|
|
*(.softirqentry.text) \
|
|
VMLINUX_SYMBOL(__softirqentry_text_end) = .;
|
|
-#else
|
|
-#define SOFTIRQENTRY_TEXT
|
|
-#endif
|
|
|
|
/* Section used for early init (in .S files) */
|
|
-#define HEAD_TEXT *(.head.text)
|
|
+#define HEAD_TEXT KEEP(*(.head.text))
|
|
|
|
#define HEAD_TEXT_SECTION \
|
|
.head.text : AT(ADDR(.head.text) - LOAD_OFFSET) { \
|
|
@@ -534,7 +530,7 @@
|
|
. = ALIGN(align); \
|
|
__ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { \
|
|
VMLINUX_SYMBOL(__start___ex_table) = .; \
|
|
- *(__ex_table) \
|
|
+ KEEP(*(__ex_table)) \
|
|
VMLINUX_SYMBOL(__stop___ex_table) = .; \
|
|
}
|
|
|
|
@@ -565,7 +561,7 @@
|
|
MEM_DISCARD(init.data) \
|
|
KERNEL_CTORS() \
|
|
MCOUNT_REC() \
|
|
- *(.init.rodata) \
|
|
+ *(.init.rodata .init.rodata.*) \
|
|
FTRACE_EVENTS() \
|
|
TRACE_SYSCALLS() \
|
|
KPROBE_BLACKLIST() \
|
|
@@ -583,7 +579,7 @@
|
|
EARLYCON_TABLE()
|
|
|
|
#define INIT_TEXT \
|
|
- *(.init.text) \
|
|
+ *(.init.text .init.text.*) \
|
|
*(.text.startup) \
|
|
MEM_DISCARD(init.text)
|
|
|
|
@@ -600,7 +596,7 @@
|
|
MEM_DISCARD(exit.text)
|
|
|
|
#define EXIT_CALL \
|
|
- *(.exitcall.exit)
|
|
+ KEEP(*(.exitcall.exit))
|
|
|
|
/*
|
|
* bss (Block Started by Symbol) - uninitialized data
|
|
@@ -676,7 +672,7 @@
|
|
. = ALIGN(8); \
|
|
__bug_table : AT(ADDR(__bug_table) - LOAD_OFFSET) { \
|
|
VMLINUX_SYMBOL(__start___bug_table) = .; \
|
|
- *(__bug_table) \
|
|
+ KEEP(*(__bug_table)) \
|
|
VMLINUX_SYMBOL(__stop___bug_table) = .; \
|
|
}
|
|
#else
|
|
@@ -705,7 +701,7 @@
|
|
#define INIT_SETUP(initsetup_align) \
|
|
. = ALIGN(initsetup_align); \
|
|
VMLINUX_SYMBOL(__setup_start) = .; \
|
|
- *(.init.setup) \
|
|
+ KEEP(*(.init.setup)) \
|
|
VMLINUX_SYMBOL(__setup_end) = .;
|
|
|
|
#define INIT_CALLS_LEVEL(level) \
|