Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next
* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next: (53 commits) .gitignore: ignore *.lzma files kbuild: add generic --set-str option to scripts/config kbuild: simplify argument loop in scripts/config kbuild: handle non-existing options in scripts/config kallsyms: generalize text region handling kallsyms: support kernel symbols in Blackfin on-chip memory documentation: make version fix kbuild: fix a compile warning gitignore: Add GNU GLOBAL files to top .gitignore kbuild: fix delay in setlocalversion on readonly source README: fix misleading pointer to the defconf directory vmlinux.lds.h update kernel-doc: cleanup perl script Improve vmlinux.lds.h support for arch specific linker scripts kbuild: fix headers_exports with boolean expression kbuild/headers_check: refine extern check kbuild: fix "Argument list too long" error for "make headers_check", ignore *.patch files Remove bashisms from scripts menu: fix embedded menu presentation ...
This commit is contained in:
@ -763,6 +763,8 @@ static void check_section(const char *modname, struct elf_info *elf,
|
||||
|
||||
|
||||
#define ALL_INIT_DATA_SECTIONS \
|
||||
".init.setup$", ".init.rodata$", \
|
||||
".devinit.rodata$", ".cpuinit.rodata$", ".meminit.rodata$" \
|
||||
".init.data$", ".devinit.data$", ".cpuinit.data$", ".meminit.data$"
|
||||
#define ALL_EXIT_DATA_SECTIONS \
|
||||
".exit.data$", ".devexit.data$", ".cpuexit.data$", ".memexit.data$"
|
||||
@ -772,21 +774,23 @@ static void check_section(const char *modname, struct elf_info *elf,
|
||||
#define ALL_EXIT_TEXT_SECTIONS \
|
||||
".exit.text$", ".devexit.text$", ".cpuexit.text$", ".memexit.text$"
|
||||
|
||||
#define ALL_INIT_SECTIONS ALL_INIT_DATA_SECTIONS, ALL_INIT_TEXT_SECTIONS
|
||||
#define ALL_EXIT_SECTIONS ALL_EXIT_DATA_SECTIONS, ALL_EXIT_TEXT_SECTIONS
|
||||
#define ALL_INIT_SECTIONS INIT_SECTIONS, DEV_INIT_SECTIONS, \
|
||||
CPU_INIT_SECTIONS, MEM_INIT_SECTIONS
|
||||
#define ALL_EXIT_SECTIONS EXIT_SECTIONS, DEV_EXIT_SECTIONS, \
|
||||
CPU_EXIT_SECTIONS, MEM_EXIT_SECTIONS
|
||||
|
||||
#define DATA_SECTIONS ".data$", ".data.rel$"
|
||||
#define TEXT_SECTIONS ".text$"
|
||||
|
||||
#define INIT_SECTIONS ".init.data$", ".init.text$"
|
||||
#define DEV_INIT_SECTIONS ".devinit.data$", ".devinit.text$"
|
||||
#define CPU_INIT_SECTIONS ".cpuinit.data$", ".cpuinit.text$"
|
||||
#define MEM_INIT_SECTIONS ".meminit.data$", ".meminit.text$"
|
||||
#define INIT_SECTIONS ".init.*"
|
||||
#define DEV_INIT_SECTIONS ".devinit.*"
|
||||
#define CPU_INIT_SECTIONS ".cpuinit.*"
|
||||
#define MEM_INIT_SECTIONS ".meminit.*"
|
||||
|
||||
#define EXIT_SECTIONS ".exit.data$", ".exit.text$"
|
||||
#define DEV_EXIT_SECTIONS ".devexit.data$", ".devexit.text$"
|
||||
#define CPU_EXIT_SECTIONS ".cpuexit.data$", ".cpuexit.text$"
|
||||
#define MEM_EXIT_SECTIONS ".memexit.data$", ".memexit.text$"
|
||||
#define EXIT_SECTIONS ".exit.*"
|
||||
#define DEV_EXIT_SECTIONS ".devexit.*"
|
||||
#define CPU_EXIT_SECTIONS ".cpuexit.*"
|
||||
#define MEM_EXIT_SECTIONS ".memexit.*"
|
||||
|
||||
/* init data sections */
|
||||
static const char *init_data_sections[] = { ALL_INIT_DATA_SECTIONS, NULL };
|
||||
@ -869,12 +873,36 @@ const struct sectioncheck sectioncheck[] = {
|
||||
.tosec = { INIT_SECTIONS, NULL },
|
||||
.mismatch = XXXINIT_TO_INIT,
|
||||
},
|
||||
/* Do not reference cpuinit code/data from meminit code/data */
|
||||
{
|
||||
.fromsec = { MEM_INIT_SECTIONS, NULL },
|
||||
.tosec = { CPU_INIT_SECTIONS, NULL },
|
||||
.mismatch = XXXINIT_TO_INIT,
|
||||
},
|
||||
/* Do not reference meminit code/data from cpuinit code/data */
|
||||
{
|
||||
.fromsec = { CPU_INIT_SECTIONS, NULL },
|
||||
.tosec = { MEM_INIT_SECTIONS, NULL },
|
||||
.mismatch = XXXINIT_TO_INIT,
|
||||
},
|
||||
/* Do not reference exit code/data from devexit/cpuexit/memexit code/data */
|
||||
{
|
||||
.fromsec = { DEV_EXIT_SECTIONS, CPU_EXIT_SECTIONS, MEM_EXIT_SECTIONS, NULL },
|
||||
.tosec = { EXIT_SECTIONS, NULL },
|
||||
.mismatch = XXXEXIT_TO_EXIT,
|
||||
},
|
||||
/* Do not reference cpuexit code/data from memexit code/data */
|
||||
{
|
||||
.fromsec = { MEM_EXIT_SECTIONS, NULL },
|
||||
.tosec = { CPU_EXIT_SECTIONS, NULL },
|
||||
.mismatch = XXXEXIT_TO_EXIT,
|
||||
},
|
||||
/* Do not reference memexit code/data from cpuexit code/data */
|
||||
{
|
||||
.fromsec = { CPU_EXIT_SECTIONS, NULL },
|
||||
.tosec = { MEM_EXIT_SECTIONS, NULL },
|
||||
.mismatch = XXXEXIT_TO_EXIT,
|
||||
},
|
||||
/* Do not use exit code/data from init code */
|
||||
{
|
||||
.fromsec = { ALL_INIT_SECTIONS, NULL },
|
||||
@ -1168,7 +1196,7 @@ static void report_sec_mismatch(const char *modname, enum mismatch mismatch,
|
||||
"The variable %s references\n"
|
||||
"the %s %s%s%s\n"
|
||||
"If the reference is valid then annotate the\n"
|
||||
"variable with __init* (see linux/init.h) "
|
||||
"variable with __init* or __refdata (see linux/init.h) "
|
||||
"or name the variable:\n",
|
||||
fromsym, to, sec2annotation(tosec), tosym, to_p);
|
||||
while (*s)
|
||||
|
Reference in New Issue
Block a user