Commit 11991999 authored by Josh Poimboeuf's avatar Josh Poimboeuf Committed by Peter Zijlstra
Browse files

Revert "objtool: Warn on functions with ambiguous -ffunction-sections section names"



This reverts commit 9c7dc1dd.

The check-function-names.sh script now provides the function name
checking functionality for all architectures, making the objtool check
redundant.

Signed-off-by: default avatarJosh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://patch.msgid.link/c7d549d4de8bd1490d106b99630eea5efc69a4dd.1763669451.git.jpoimboe@kernel.org
parent 93863f3f
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -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.
+0 −33
Original line number Diff line number Diff line
@@ -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);