1*4882a593Smuzhiyun/* 2*4882a593Smuzhiyun * Common module linker script, always used when linking a module. 3*4882a593Smuzhiyun * Archs are free to supply their own linker scripts. ld will 4*4882a593Smuzhiyun * combine them automatically. 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun#include <asm/page.h> 7*4882a593Smuzhiyun 8*4882a593SmuzhiyunSECTIONS { 9*4882a593Smuzhiyun /DISCARD/ : { 10*4882a593Smuzhiyun *(.discard) 11*4882a593Smuzhiyun *(.discard.*) 12*4882a593Smuzhiyun /* 13*4882a593Smuzhiyun * LLD may emit .eh_frame with CONFIG_CFI_CLANG despite 14*4882a593Smuzhiyun * -fno-asynchronous-unwind-tables. Discard the section. 15*4882a593Smuzhiyun */ 16*4882a593Smuzhiyun *(.eh_frame) 17*4882a593Smuzhiyun } 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun __ksymtab 0 : { *(SORT(___ksymtab+*)) } 20*4882a593Smuzhiyun __ksymtab_gpl 0 : { *(SORT(___ksymtab_gpl+*)) } 21*4882a593Smuzhiyun __ksymtab_unused 0 : { *(SORT(___ksymtab_unused+*)) } 22*4882a593Smuzhiyun __ksymtab_unused_gpl 0 : { *(SORT(___ksymtab_unused_gpl+*)) } 23*4882a593Smuzhiyun __ksymtab_gpl_future 0 : { *(SORT(___ksymtab_gpl_future+*)) } 24*4882a593Smuzhiyun __kcrctab 0 : { *(SORT(___kcrctab+*)) } 25*4882a593Smuzhiyun __kcrctab_gpl 0 : { *(SORT(___kcrctab_gpl+*)) } 26*4882a593Smuzhiyun __kcrctab_unused 0 : { *(SORT(___kcrctab_unused+*)) } 27*4882a593Smuzhiyun __kcrctab_unused_gpl 0 : { *(SORT(___kcrctab_unused_gpl+*)) } 28*4882a593Smuzhiyun __kcrctab_gpl_future 0 : { *(SORT(___kcrctab_gpl_future+*)) } 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun .init_array 0 : ALIGN(8) { *(SORT(.init_array.*)) *(.init_array) } 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun .altinstructions 0 : ALIGN(8) { KEEP(*(.altinstructions)) } 33*4882a593Smuzhiyun __bug_table 0 : ALIGN(8) { KEEP(*(__bug_table)) } 34*4882a593Smuzhiyun __jump_table 0 : ALIGN(8) { KEEP(*(__jump_table)) } 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun __patchable_function_entries : { *(__patchable_function_entries) } 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun#ifdef CONFIG_LTO_CLANG 39*4882a593Smuzhiyun /* 40*4882a593Smuzhiyun * With CONFIG_LTO_CLANG, LLD always enables -fdata-sections and 41*4882a593Smuzhiyun * -ffunction-sections, which increases the size of the final module. 42*4882a593Smuzhiyun * Merge the split sections in the final binary. 43*4882a593Smuzhiyun */ 44*4882a593Smuzhiyun .bss : { 45*4882a593Smuzhiyun *(.bss .bss.[0-9a-zA-Z_]*) 46*4882a593Smuzhiyun *(.bss..L*) 47*4882a593Smuzhiyun } 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun .data : { 50*4882a593Smuzhiyun *(.data .data.[0-9a-zA-Z_]*) 51*4882a593Smuzhiyun *(.data..L*) 52*4882a593Smuzhiyun } 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun .rodata : { 55*4882a593Smuzhiyun *(.rodata.._start) 56*4882a593Smuzhiyun *(.rodata .rodata.[0-9a-zA-Z_]*) 57*4882a593Smuzhiyun *(.rodata..L*) 58*4882a593Smuzhiyun *(.rodata.._end) 59*4882a593Smuzhiyun } 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun .text : ALIGN(PAGE_SIZE) { 62*4882a593Smuzhiyun *(.text.._start) 63*4882a593Smuzhiyun#ifdef CONFIG_CFI_CLANG 64*4882a593Smuzhiyun /* 65*4882a593Smuzhiyun * With CFI_CLANG, ensure __cfi_check is at the beginning of 66*4882a593Smuzhiyun * the .text section, and that the section is aligned to page 67*4882a593Smuzhiyun * size. 68*4882a593Smuzhiyun */ 69*4882a593Smuzhiyun *(.text.__cfi_check) 70*4882a593Smuzhiyun#endif 71*4882a593Smuzhiyun *(.text .text.[0-9a-zA-Z_]*) 72*4882a593Smuzhiyun __cfi_jt_start = .; 73*4882a593Smuzhiyun *(.text..L.cfi.jumptable .text..L.cfi.jumptable.*) 74*4882a593Smuzhiyun __cfi_jt_end = .; 75*4882a593Smuzhiyun *(.text.._end) 76*4882a593Smuzhiyun *(.text.._fips140_unchecked) 77*4882a593Smuzhiyun } 78*4882a593Smuzhiyun#endif 79*4882a593Smuzhiyun} 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun/* bring in arch-specific sections */ 82*4882a593Smuzhiyun#include <asm/module.lds.h> 83