From: Josh Poimboeuf Date: Fri, 14 Mar 2025 19:29:05 +0000 (-0700) Subject: objtool: Consolidate option validation X-Git-Tag: io_uring-6.15-20250403~141^2~8 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=acc8c6a798a011a5fe37b455b0286a85a4164b47;p=linux-block.git objtool: Consolidate option validation The option validations are a bit scattered, consolidate them. Signed-off-by: Josh Poimboeuf Signed-off-by: Peter Zijlstra (Intel) Reviewed-by: Brendan Jackman Link: https://lore.kernel.org/r/8f886502fda1d15f39d7351b70d4ebe5903da627.1741975349.git.jpoimboe@kernel.org --- diff --git a/tools/objtool/builtin-check.c b/tools/objtool/builtin-check.c index c7275cf7641b..36d81a455b01 100644 --- a/tools/objtool/builtin-check.c +++ b/tools/objtool/builtin-check.c @@ -131,6 +131,26 @@ int cmd_parse_options(int argc, const char **argv, const char * const usage[]) static bool opts_valid(void) { + if (opts.mnop && !opts.mcount) { + ERROR("--mnop requires --mcount"); + return false; + } + + if (opts.noinstr && !opts.link) { + ERROR("--noinstr requires --link"); + return false; + } + + if (opts.ibt && !opts.link) { + ERROR("--ibt requires --link"); + return false; + } + + if (opts.unret && !opts.link) { + ERROR("--unret requires --link"); + return false; + } + if (opts.hack_jump_label || opts.hack_noinstr || opts.ibt || @@ -158,45 +178,6 @@ static bool opts_valid(void) return false; } -static bool mnop_opts_valid(void) -{ - if (opts.mnop && !opts.mcount) { - ERROR("--mnop requires --mcount"); - return false; - } - - return true; -} - -static bool link_opts_valid(struct objtool_file *file) -{ - if (opts.link) - return true; - - if (has_multiple_files(file->elf)) { - ERROR("Linked object detected, forcing --link"); - opts.link = true; - return true; - } - - if (opts.noinstr) { - ERROR("--noinstr requires --link"); - return false; - } - - if (opts.ibt) { - ERROR("--ibt requires --link"); - return false; - } - - if (opts.unret) { - ERROR("--unret requires --link"); - return false; - } - - return true; -} - int objtool_run(int argc, const char **argv) { const char *objname; @@ -216,11 +197,10 @@ int objtool_run(int argc, const char **argv) if (!file) return 1; - if (!mnop_opts_valid()) - return 1; - - if (!link_opts_valid(file)) - return 1; + if (!opts.link && has_multiple_files(file->elf)) { + ERROR("Linked object detected, forcing --link"); + opts.link = true; + } ret = check(file); if (ret)