History

module: Move is_arm_mapping_symbol() to module_symbol.h

In order to avoid duplicated code, move is_arm_mapping_symbol() to include/linux/module_symbol.h, then remove is_arm_mapping_symbol() in the other places.

Tiezhu Yang committed 3 years ago

Commit 987d2e01 parent 87e5b1e3 files · +17 −22Browse files

Unified · Split

3 files
  1. include/linux/module_symbol.h +15 −0
  2. kernel/module/kallsyms.c +1 −13
  3. scripts/mod/modpost.c +1 −9
include/linux/module_symbol.h+15−0
@@ -0,0 +1,15 @@
1/* SPDX-License-Identifier: GPL-2.0-only */
2#ifndef _LINUX_MODULE_SYMBOL_H
3#define _LINUX_MODULE_SYMBOL_H
4
5/* This ignores the intensely annoying "mapping symbols" found in ELF files. */
6static inline int is_arm_mapping_symbol(const char *str)
7{
8 if (str[0] == '.' && str[1] == 'L')
9 return true;
10 return str[0] == '$' &&
11 (str[1] == 'a' || str[1] == 'd' || str[1] == 't' || str[1] == 'x')
12 && (str[2] == '\0' || str[2] == '.');
13}
14
15#endif /* _LINUX_MODULE_SYMBOL_H */
kernel/module/kallsyms.c+1−13
@@ -6,6 +6,7 @@ · 5 unmodified lines
6 */6 */
7 7
8#include <linux/module.h>8#include <linux/module.h>
9#include <linux/module_symbol.h>
9#include <linux/kallsyms.h>10#include <linux/kallsyms.h>
10#include <linux/buildid.h>11#include <linux/buildid.h>
11#include <linux/bsearch.h>12#include <linux/bsearch.h>
@@ -243,19 +244,6 @@ void init_build_id(struct module *mod, const struct load_info *info) · 231 unmodified lines
243}244}
244#endif245#endif
245 246
246/*
247 * This ignores the intensely annoying "mapping symbols" found
248 * in ARM ELF files: $a, $t and $d.
249 */
250static inline int is_arm_mapping_symbol(const char *str)
251{
252 if (str[0] == '.' && str[1] == 'L')
253 return true;
254 return str[0] == '$' &&
255 (str[1] == 'a' || str[1] == 'd' || str[1] == 't' || str[1] == 'x')
256 && (str[2] == '\0' || str[2] == '.');
257}
258
259static const char *kallsyms_symbol_name(struct mod_kallsyms *kallsyms, unsigned int symnum)247static const char *kallsyms_symbol_name(struct mod_kallsyms *kallsyms, unsigned int symnum)
260{248{
261 return kallsyms->strtab + kallsyms->symtab[symnum].st_name;249 return kallsyms->strtab + kallsyms->symtab[symnum].st_name;
scripts/mod/modpost.c+1−9
@@ -22,6 +22,7 @@ · 21 unmodified lines
22#include <errno.h>22#include <errno.h>
23#include "modpost.h"23#include "modpost.h"
24#include "../../include/linux/license.h"24#include "../../include/linux/license.h"
25#include "../../include/linux/module_symbol.h"
25 26
26/* Are we using CONFIG_MODVERSIONS? */27/* Are we using CONFIG_MODVERSIONS? */
27static bool modversions;28static bool modversions;
@@ -1112,15 +1113,6 @@ static int secref_whitelist(const struct sectioncheck *mismatch, · 1084 unmodified lines
1112 return 1;1113 return 1;
1113}1114}
1114 1115
1115static inline int is_arm_mapping_symbol(const char *str)
1116{
1117 if (str[0] == '.' && str[1] == 'L')
1118 return true;
1119 return str[0] == '$' &&
1120 (str[1] == 'a' || str[1] == 'd' || str[1] == 't' || str[1] == 'x')
1121 && (str[2] == '\0' || str[2] == '.');
1122}
1123
1124/*1116/*
1125 * If there's no name there, ignore it; likewise, ignore it if it's1117 * If there's no name there, ignore it; likewise, ignore it if it's
1126 * one of the magic symbols emitted used by current ARM tools.1118 * one of the magic symbols emitted used by current ARM tools.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t