From 11991999a20145b7f8af21202d0cac6b1f90a6e4 Mon Sep 17 00:00:00 2001 From: Josh Poimboeuf Date: Thu, 20 Nov 2025 12:14:21 -0800 Subject: [PATCH] Revert "objtool: Warn on functions with ambiguous -ffunction-sections section names" This reverts commit 9c7dc1dd897a1cdcade9566ea4664b03fbabf4a4. The check-function-names.sh script now provides the function name checking functionality for all architectures, making the objtool check redundant. Signed-off-by: Josh Poimboeuf Signed-off-by: Peter Zijlstra (Intel) Acked-by: Greg Kroah-Hartman Link: https://patch.msgid.link/c7d549d4de8bd1490d106b99630eea5efc69a4dd.1763669451.git.jpoimboe@kernel.org --- tools/objtool/Documentation/objtool.txt | 7 ------ tools/objtool/check.c | 33 ------------------------- 2 files changed, 40 deletions(-) diff --git a/tools/objtool/Documentation/objtool.txt b/tools/objtool/Documentation/objtool.txt index f88f8d28513ad..9e97fc25b2d8a 100644 --- a/tools/objtool/Documentation/objtool.txt +++ b/tools/objtool/Documentation/objtool.txt @@ -456,13 +456,6 @@ the objtool maintainers. these special names and does not use module_init() / module_exit() macros to create them. -13. file.o: warning: func() function name creates ambiguity with -ffunctions-sections - - Functions named startup(), exit(), split(), unlikely(), hot(), and - unknown() are not allowed due to the ambiguity of their section - names when compiled with -ffunction-sections. For more information, - see the comment above TEXT_MAIN in include/asm-generic/vmlinux.lds.h. - If the error doesn't seem to make sense, it could be a bug in objtool. Feel free to ask objtool maintainers for help. diff --git a/tools/objtool/check.c b/tools/objtool/check.c index 1a20ff89df742..490cf78029b59 100644 --- a/tools/objtool/check.c +++ b/tools/objtool/check.c @@ -2642,37 +2642,6 @@ static int decode_sections(struct objtool_file *file) return 0; } -/* - * Certain function names are disallowed due to section name ambiguities - * introduced by -ffunction-sections. - * - * See the comment above TEXT_MAIN in include/asm-generic/vmlinux.lds.h. - */ -static int validate_function_names(struct objtool_file *file) -{ - struct symbol *func; - int warnings = 0; - - for_each_sym(file->elf, func) { - if (!is_func_sym(func)) - continue; - - if (!strcmp(func->name, "startup") || strstarts(func->name, "startup.") || - !strcmp(func->name, "exit") || strstarts(func->name, "exit.") || - !strcmp(func->name, "split") || strstarts(func->name, "split.") || - !strcmp(func->name, "unlikely") || strstarts(func->name, "unlikely.") || - !strcmp(func->name, "hot") || strstarts(func->name, "hot.") || - !strcmp(func->name, "unknown") || strstarts(func->name, "unknown.")) { - - WARN("%s() function name creates ambiguity with -ffunction-sections", - func->name); - warnings++; - } - } - - return warnings; -} - static bool is_special_call(struct instruction *insn) { if (insn->type == INSN_CALL) { @@ -4942,8 +4911,6 @@ int check(struct objtool_file *file) if (!nr_insns) goto out; - warnings += validate_function_names(file); - if (opts.retpoline) warnings += validate_retpoline(file); -- 2.47.3