@ -861,24 +861,23 @@ static void check_section(const char *modname, struct elf_info *elf,
# define ALL_INIT_DATA_SECTIONS \
" .init.setup$ " , " .init.rodata$ " , \
" .cpuinit.rodata$ " , " .meminit.rodata$ " , \
" .init.data$ " , " .cpuinit.data$ " , " .meminit.data$ "
" .init.setup$ " , " .init.rodata$ " , " .meminit.rodata$ " , \
" .init.data$ " , " .meminit.data$ "
# define ALL_EXIT_DATA_SECTIONS \
" .exit.data$ " , " .cpuexit.data$ " , " . memexit.data$ "
" .exit.data$ " , " .memexit.data$ "
# define ALL_INIT_TEXT_SECTIONS \
" .init.text$ " , " .cpuinit.text$ " , " . meminit.text$ "
" .init.text$ " , " .meminit.text$ "
# define ALL_EXIT_TEXT_SECTIONS \
" .exit.text$ " , " .cpuexit.text$ " , " . memexit.text$ "
" .exit.text$ " , " .memexit.text$ "
# define ALL_PCI_INIT_SECTIONS \
" .pci_fixup_early$ " , " .pci_fixup_header$ " , " .pci_fixup_final$ " , \
" .pci_fixup_enable$ " , " .pci_fixup_resume$ " , \
" .pci_fixup_resume_early$ " , " .pci_fixup_suspend$ "
# define ALL_XXXINIT_SECTIONS CPU_INIT_SECTIONS, MEM_INIT_SECTIONS
# define ALL_XXXEXIT_SECTIONS CPU_EXIT_SECTIONS, MEM_EXIT_SECTIONS
# define ALL_XXXINIT_SECTIONS MEM_INIT_SECTIONS
# define ALL_XXXEXIT_SECTIONS MEM_EXIT_SECTIONS
# define ALL_INIT_SECTIONS INIT_SECTIONS, ALL_XXXINIT_SECTIONS
# define ALL_EXIT_SECTIONS EXIT_SECTIONS, ALL_XXXEXIT_SECTIONS
@ -887,11 +886,9 @@ static void check_section(const char *modname, struct elf_info *elf,
# define TEXT_SECTIONS ".text$"
# define INIT_SECTIONS ".init.*"
# define CPU_INIT_SECTIONS ".cpuinit.*"
# define MEM_INIT_SECTIONS ".meminit.*"
# define EXIT_SECTIONS ".exit.*"
# define CPU_EXIT_SECTIONS ".cpuexit.*"
# define MEM_EXIT_SECTIONS ".memexit.*"
/* init data sections */
@ -979,48 +976,20 @@ const struct sectioncheck sectioncheck[] = {
. mismatch = DATA_TO_ANY_EXIT ,
. symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST , NULL } ,
} ,
/* Do not reference init code/data from cpuinit/ meminit code/data */
/* Do not reference init code/data from meminit code/data */
{
. fromsec = { ALL_XXXINIT_SECTIONS , NULL } ,
. tosec = { INIT_SECTIONS , NULL } ,
. mismatch = XXXINIT_TO_SOME_INIT ,
. symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST , NULL } ,
} ,
/* Do not reference cpuinit code/data from meminit code/data */
{
. fromsec = { MEM_INIT_SECTIONS , NULL } ,
. tosec = { CPU_INIT_SECTIONS , NULL } ,
. mismatch = XXXINIT_TO_SOME_INIT ,
. symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST , NULL } ,
} ,
/* Do not reference meminit code/data from cpuinit code/data */
{
. fromsec = { CPU_INIT_SECTIONS , NULL } ,
. tosec = { MEM_INIT_SECTIONS , NULL } ,
. mismatch = XXXINIT_TO_SOME_INIT ,
. symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST , NULL } ,
} ,
/* Do not reference exit code/data from cpuexit/memexit code/data */
/* Do not reference exit code/data from memexit code/data */
{
. fromsec = { ALL_XXXEXIT_SECTIONS , NULL } ,
. tosec = { EXIT_SECTIONS , NULL } ,
. mismatch = XXXEXIT_TO_SOME_EXIT ,
. symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST , NULL } ,
} ,
/* Do not reference cpuexit code/data from memexit code/data */
{
. fromsec = { MEM_EXIT_SECTIONS , NULL } ,
. tosec = { CPU_EXIT_SECTIONS , NULL } ,
. mismatch = XXXEXIT_TO_SOME_EXIT ,
. symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST , NULL } ,
} ,
/* Do not reference memexit code/data from cpuexit code/data */
{
. fromsec = { CPU_EXIT_SECTIONS , NULL } ,
. tosec = { MEM_EXIT_SECTIONS , NULL } ,
. mismatch = XXXEXIT_TO_SOME_EXIT ,
. symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST , NULL } ,
} ,
/* Do not use exit code/data from init code */
{
. fromsec = { ALL_INIT_SECTIONS , NULL } ,
@ -1089,8 +1058,6 @@ static const struct sectioncheck *section_mismatch(
* Pattern 2 :
* Many drivers utilise a * driver container with references to
* add , remove , probe functions etc .
* These functions may often be marked __cpuinit and we do not want to
* warn here .
* the pattern is identified by :
* tosec = init or exit section
* fromsec = data section
@ -1249,7 +1216,6 @@ static Elf_Sym *find_elf_symbol2(struct elf_info *elf, Elf_Addr addr,
/*
* Convert a section name to the function / data attribute
* . init . text = > __init
* . cpuinit . data = > __cpudata
* . memexitconst = > __memconst
* etc .
*