mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 04:21:09 -04:00
objtool/klp: Remove trailing '_' in demangle_name()
With CONFIG_LTO_CLANG_THIN, it is possible to have nested __UNIQUE_ID_, such as: __UNIQUE_ID_addressable___UNIQUE_ID_pci_invalid_bar_694_695 To remove both trailing numbers, also remove trailing '_'. Also add comments to demangle_name(). Signed-off-by: Song Liu <song@kernel.org> Link: https://patch.msgid.link/20260305231531.3847295-3-song@kernel.org Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
This commit is contained in:
@@ -441,6 +441,19 @@ static int read_sections(struct elf *elf)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove number suffix of a symbol.
|
||||
*
|
||||
* Specifically, remove trailing numbers for "__UNIQUE_ID_" symbols and
|
||||
* symbols with '.'.
|
||||
*
|
||||
* With CONFIG_LTO_CLANG_THIN, it is possible to have nested __UNIQUE_ID_,
|
||||
* such as
|
||||
*
|
||||
* __UNIQUE_ID_addressable___UNIQUE_ID_pci_invalid_bar_694_695
|
||||
*
|
||||
* to remove both trailing numbers, also remove trailing '_'.
|
||||
*/
|
||||
static const char *demangle_name(struct symbol *sym)
|
||||
{
|
||||
char *str;
|
||||
@@ -463,7 +476,7 @@ static const char *demangle_name(struct symbol *sym)
|
||||
for (int i = strlen(str) - 1; i >= 0; i--) {
|
||||
char c = str[i];
|
||||
|
||||
if (!isdigit(c) && c != '.') {
|
||||
if (!isdigit(c) && c != '.' && c != '_') {
|
||||
str[i + 1] = '\0';
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user