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.
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) {
if (!nr_insns)
goto out;
- warnings += validate_function_names(file);
-
if (opts.retpoline)
warnings += validate_retpoline(file);