Commit 7a3ee753 authored by Mathias Krause's avatar Mathias Krause Committed by Rusty Russell

modpost: reduce visibility of symbols and constify r/o arrays

Internally used symbols of modpost don't need to be externally visible;
make them static. Also constify the string arrays so they resist in the
r/o section instead of being runtime writable.

Those changes lead to a small size reduction as can be seen below:

   text    data     bss     dec     hex filename
  51381    2640   12416   66437   10385 scripts/mod/modpost.old
  51765    2224   12416   66405   10365 scripts/mod/modpost.new
Signed-off-by: default avatarMathias Krause <minipli@googlemail.com>
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent 7a486d37
...@@ -24,9 +24,9 @@ ...@@ -24,9 +24,9 @@
#include "../../include/linux/export.h" #include "../../include/linux/export.h"
/* Are we using CONFIG_MODVERSIONS? */ /* Are we using CONFIG_MODVERSIONS? */
int modversions = 0; static int modversions = 0;
/* Warn about undefined symbols? (do so if we have vmlinux) */ /* Warn about undefined symbols? (do so if we have vmlinux) */
int have_vmlinux = 0; static int have_vmlinux = 0;
/* Is CONFIG_MODULE_SRCVERSION_ALL set? */ /* Is CONFIG_MODULE_SRCVERSION_ALL set? */
static int all_versions = 0; static int all_versions = 0;
/* If we are modposting external module set to 1 */ /* If we are modposting external module set to 1 */
...@@ -229,7 +229,7 @@ static struct symbol *find_symbol(const char *name) ...@@ -229,7 +229,7 @@ static struct symbol *find_symbol(const char *name)
return NULL; return NULL;
} }
static struct { static const struct {
const char *str; const char *str;
enum export export; enum export export;
} export_list[] = { } export_list[] = {
...@@ -805,7 +805,7 @@ static int match(const char *sym, const char * const pat[]) ...@@ -805,7 +805,7 @@ static int match(const char *sym, const char * const pat[])
} }
/* sections that we do not want to do full section mismatch check on */ /* sections that we do not want to do full section mismatch check on */
static const char *section_white_list[] = static const char *const section_white_list[] =
{ {
".comment*", ".comment*",
".debug*", ".debug*",
...@@ -882,17 +882,18 @@ static void check_section(const char *modname, struct elf_info *elf, ...@@ -882,17 +882,18 @@ static void check_section(const char *modname, struct elf_info *elf,
#define MEM_EXIT_SECTIONS ".memexit.*" #define MEM_EXIT_SECTIONS ".memexit.*"
/* init data sections */ /* init data sections */
static const char *init_data_sections[] = { ALL_INIT_DATA_SECTIONS, NULL }; static const char *const init_data_sections[] =
{ ALL_INIT_DATA_SECTIONS, NULL };
/* all init sections */ /* all init sections */
static const char *init_sections[] = { ALL_INIT_SECTIONS, NULL }; static const char *const init_sections[] = { ALL_INIT_SECTIONS, NULL };
/* All init and exit sections (code + data) */ /* All init and exit sections (code + data) */
static const char *init_exit_sections[] = static const char *const init_exit_sections[] =
{ALL_INIT_SECTIONS, ALL_EXIT_SECTIONS, NULL }; {ALL_INIT_SECTIONS, ALL_EXIT_SECTIONS, NULL };
/* data section */ /* data section */
static const char *data_sections[] = { DATA_SECTIONS, NULL }; static const char *const data_sections[] = { DATA_SECTIONS, NULL };
/* symbols in .data that may refer to init/exit sections */ /* symbols in .data that may refer to init/exit sections */
...@@ -906,8 +907,8 @@ static const char *data_sections[] = { DATA_SECTIONS, NULL }; ...@@ -906,8 +907,8 @@ static const char *data_sections[] = { DATA_SECTIONS, NULL };
"*_probe_one", \ "*_probe_one", \
"*_console" "*_console"
static const char *head_sections[] = { ".head.text*", NULL }; static const char *const head_sections[] = { ".head.text*", NULL };
static const char *linker_symbols[] = static const char *const linker_symbols[] =
{ "__init_begin", "_sinittext", "_einittext", NULL }; { "__init_begin", "_sinittext", "_einittext", NULL };
enum mismatch { enum mismatch {
...@@ -929,7 +930,7 @@ struct sectioncheck { ...@@ -929,7 +930,7 @@ struct sectioncheck {
const char *symbol_white_list[20]; const char *symbol_white_list[20];
}; };
const struct sectioncheck sectioncheck[] = { static const struct sectioncheck sectioncheck[] = {
/* Do not reference init/exit code/data from /* Do not reference init/exit code/data from
* normal code and data * normal code and data
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment