mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-29 17:25:38 +00:00
scripts/kallsyms: set relative_base more effectively
Currently, record_relative_base() iterates over the entire table to find the minimum address, but it is not efficient because we sort the table anyway. After sort_symbol(), the table is sorted by address. (kallsyms parses the 'nm -n' output, so the data is already sorted by address, but this commit does not rely on it.) Move record_relative_base() after sort_symbols(), and take the first non-absolute symbol value. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
This commit is contained in:
parent
5e5c4fa787
commit
f34ea02910
@ -739,11 +739,15 @@ static void record_relative_base(void)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
relative_base = -1ULL;
|
||||
for (i = 0; i < table_cnt; i++)
|
||||
if (!symbol_absolute(&table[i]) &&
|
||||
table[i].addr < relative_base)
|
||||
if (!symbol_absolute(&table[i])) {
|
||||
/*
|
||||
* The table is sorted by address.
|
||||
* Take the first non-absolute symbol value.
|
||||
*/
|
||||
relative_base = table[i].addr;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
@ -767,9 +771,9 @@ int main(int argc, char **argv)
|
||||
shrink_table();
|
||||
if (absolute_percpu)
|
||||
make_percpus_absolute();
|
||||
sort_symbols();
|
||||
if (base_relative)
|
||||
record_relative_base();
|
||||
sort_symbols();
|
||||
optimize_token_table();
|
||||
write_src();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user