objtool: Consolidate option validation
authorJosh Poimboeuf <jpoimboe@kernel.org>
Fri, 14 Mar 2025 19:29:05 +0000 (12:29 -0700)
committerPeter Zijlstra <peterz@infradead.org>
Mon, 17 Mar 2025 10:36:01 +0000 (11:36 +0100)
The option validations are a bit scattered, consolidate them.

Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Brendan Jackman <jackmanb@google.com>
Link: https://lore.kernel.org/r/8f886502fda1d15f39d7351b70d4ebe5903da627.1741975349.git.jpoimboe@kernel.org
tools/objtool/builtin-check.c

index c7275cf7641b0a26b9296ae0ea3bed595e3923e9..36d81a455b0127b2a6b113949a3b56122c7183ac 100644 (file)
@@ -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)