diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2022-08-08 17:02:58 -0400 |
---|---|---|
committer | Suren Baghdasaryan <surenb@google.com> | 2024-02-10 16:31:14 -0800 |
commit | 1eb8ef266be7f6c3dd219f9d526e9c63ebfd897d (patch) | |
tree | abe3908a5aeae9ac98f97235d4d7e1c923f1cf33 | |
parent | 47750c7235a0e6d8970ac4ece8b1c5d9fb5dcd5d (diff) |
scripts/kallysms: Always include __start and __stop symbols
These symbols are used to denote section boundaries: by always including
them we can unify loading sections from modules with loading built-in
sections, which leads to some significant cleanup.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
-rw-r--r-- | scripts/kallsyms.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index 653b92f6d4c8..47978efe4797 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c @@ -204,6 +204,11 @@ static int symbol_in_range(const struct sym_entry *s, return 0; } +static bool string_starts_with(const char *s, const char *prefix) +{ + return strncmp(s, prefix, strlen(prefix)) == 0; +} + static int symbol_valid(const struct sym_entry *s) { const char *name = sym_name(s); @@ -211,6 +216,14 @@ static int symbol_valid(const struct sym_entry *s) /* if --all-symbols is not specified, then symbols outside the text * and inittext sections are discarded */ if (!all_symbols) { + /* + * Symbols starting with __start and __stop are used to denote + * section boundaries, and should always be included: + */ + if (string_starts_with(name, "__start_") || + string_starts_with(name, "__stop_")) + return 1; + if (symbol_in_range(s, text_ranges, ARRAY_SIZE(text_ranges)) == 0) return 0; |