Tejun Heo | 405d967 | 2009-06-24 15:13:38 +0900 | [diff] [blame] | 1 | /* |
| 2 | * Common module linker script, always used when linking a module. |
| 3 | * Archs are free to supply their own linker scripts. ld will |
| 4 | * combine them automatically. |
| 5 | */ |
Sami Tolvanen | 28aad1c | 2021-04-08 11:28:29 -0700 | [diff] [blame] | 6 | #ifdef CONFIG_CFI_CLANG |
| 7 | # include <asm/page.h> |
| 8 | # define ALIGN_CFI ALIGN(PAGE_SIZE) |
| 9 | # define SANITIZER_DISCARDS *(.eh_frame) |
| 10 | #else |
| 11 | # define ALIGN_CFI |
| 12 | # define SANITIZER_DISCARDS |
| 13 | #endif |
| 14 | |
Tejun Heo | 405d967 | 2009-06-24 15:13:38 +0900 | [diff] [blame] | 15 | SECTIONS { |
Josh Poimboeuf | e390f9a | 2017-03-01 12:04:44 -0600 | [diff] [blame] | 16 | /DISCARD/ : { |
| 17 | *(.discard) |
| 18 | *(.discard.*) |
Sami Tolvanen | 28aad1c | 2021-04-08 11:28:29 -0700 | [diff] [blame] | 19 | SANITIZER_DISCARDS |
Josh Poimboeuf | e390f9a | 2017-03-01 12:04:44 -0600 | [diff] [blame] | 20 | } |
Alessio Igor Bogani | f02e8a6 | 2011-04-14 14:59:39 +0200 | [diff] [blame] | 21 | |
Rabin Vincent | 5d8591b | 2015-02-06 15:09:57 +1030 | [diff] [blame] | 22 | __ksymtab 0 : { *(SORT(___ksymtab+*)) } |
| 23 | __ksymtab_gpl 0 : { *(SORT(___ksymtab_gpl+*)) } |
Rabin Vincent | 5d8591b | 2015-02-06 15:09:57 +1030 | [diff] [blame] | 24 | __kcrctab 0 : { *(SORT(___kcrctab+*)) } |
| 25 | __kcrctab_gpl 0 : { *(SORT(___kcrctab_gpl+*)) } |
Andrey Ryabinin | 9ddf825 | 2015-02-13 14:40:10 -0800 | [diff] [blame] | 26 | |
Reiner Huober | 4c5afb7 | 2021-07-06 15:02:52 +0200 | [diff] [blame] | 27 | .ctors 0 : ALIGN(8) { *(SORT(.ctors.*)) *(.ctors) } |
David Daney | 5bd933f | 2017-03-07 17:31:08 -0800 | [diff] [blame] | 28 | .init_array 0 : ALIGN(8) { *(SORT(.init_array.*)) *(.init_array) } |
David Daney | ab42632 | 2017-03-01 14:04:53 -0800 | [diff] [blame] | 29 | |
| 30 | __jump_table 0 : ALIGN(8) { KEEP(*(__jump_table)) } |
Sami Tolvanen | dd27762 | 2020-12-11 10:46:22 -0800 | [diff] [blame] | 31 | |
| 32 | __patchable_function_entries : { *(__patchable_function_entries) } |
| 33 | |
Sean Christopherson | 6a3193c | 2021-03-22 16:44:38 -0700 | [diff] [blame] | 34 | #ifdef CONFIG_LTO_CLANG |
Sami Tolvanen | dd27762 | 2020-12-11 10:46:22 -0800 | [diff] [blame] | 35 | /* |
| 36 | * With CONFIG_LTO_CLANG, LLD always enables -fdata-sections and |
| 37 | * -ffunction-sections, which increases the size of the final module. |
| 38 | * Merge the split sections in the final binary. |
| 39 | */ |
| 40 | .bss : { |
| 41 | *(.bss .bss.[0-9a-zA-Z_]*) |
| 42 | *(.bss..L*) |
| 43 | } |
| 44 | |
| 45 | .data : { |
| 46 | *(.data .data.[0-9a-zA-Z_]*) |
| 47 | *(.data..L*) |
| 48 | } |
| 49 | |
| 50 | .rodata : { |
| 51 | *(.rodata .rodata.[0-9a-zA-Z_]*) |
| 52 | *(.rodata..L*) |
| 53 | } |
| 54 | |
Sami Tolvanen | 28aad1c | 2021-04-08 11:28:29 -0700 | [diff] [blame] | 55 | /* |
| 56 | * With CONFIG_CFI_CLANG, we assume __cfi_check is at the beginning |
| 57 | * of the .text section, and is aligned to PAGE_SIZE. |
| 58 | */ |
| 59 | .text : ALIGN_CFI { |
| 60 | *(.text.__cfi_check) |
| 61 | *(.text .text.[0-9a-zA-Z_]* .text..L.cfi*) |
| 62 | } |
Sean Christopherson | 6a3193c | 2021-03-22 16:44:38 -0700 | [diff] [blame] | 63 | #endif |
Tejun Heo | 405d967 | 2009-06-24 15:13:38 +0900 | [diff] [blame] | 64 | } |
Masahiro Yamada | 596b047 | 2020-09-08 13:27:08 +0900 | [diff] [blame] | 65 | |
| 66 | /* bring in arch-specific sections */ |
| 67 | #include <asm/module.lds.h> |