Re: [PATCH v3 26/26] objtool: Add STT_NOTYPE noinstr validation

From: Josh Poimboeuf
Date: Wed Mar 25 2020 - 12:40:59 EST


On Wed, Mar 25, 2020 at 04:53:48PM +0100, Peter Zijlstra wrote:
> On Wed, Mar 25, 2020 at 09:42:11AM -0500, Josh Poimboeuf wrote:
> > Sure, but couldn't validate_unwind_hints() and
> > validate_reachable_instructions() be changed to *only* run on
> > .noinstr.text, for the vmlinux case? That might help converge the
> > vmlinux and !vmlinux paths.
>
> You're thinking something like so then?

Not exactly. But I don't want to keep churning this patch set. I can
add more patches later, so don't worry about it.

But I was thinking it would eventually be good to have the top-level
check() be like

sec = NULL;
if (!validate_all)
sec = find_section_by_name(file->elf, ".noinstr.text");

ret = validate_functions(&file, sec);
if (ret < 0)
goto out;
warnings += ret;

ret = validate_unwind_hints(&file, sec);
if (ret < 0)
goto out;
warnings += ret;

if (!warnings) {
ret = validate_reachable_instructions(&file, sec);
if (ret < 0)
goto out;
warnings += ret;
}

if (!validate_all)
goto out;

ret = validate_retpoline(&file);
....

that way the general flow is the same regardless...

--
Josh