Messages in this thread | | | Subject | Re: [PATCH 3/7] objtool: Add support for intra-function calls | From | Alexandre Chartre <> | Date | Fri, 3 Apr 2020 09:06:31 +0200 |
| |
On 4/2/20 5:54 PM, Josh Poimboeuf wrote: > On Thu, Apr 02, 2020 at 05:04:07PM +0200, Peter Zijlstra wrote: >> On Thu, Apr 02, 2020 at 03:24:45PM +0200, Alexandre Chartre wrote: >>> On 4/2/20 2:53 PM, Julien Thierry wrote: >>>> On 4/2/20 9:22 AM, Alexandre Chartre wrote: >> >>>>> +Â Â Â sec = find_section_by_name(file->elf, >>>>> +Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ".rela.discard.intra_function_call"); >>>> >>>> I'm wondering, do we really need to annotate the intra_function_call >>>> and group the in a section? >>>> >>>> Would it be a problem to consider all (static) call instructions with >>>> a destination that is not the start offset of a symbol to be an >>>> intra-function call (and set insn->intra_function_call and >>>> insn->jump_dest accordingly)? >>> >>> Correct, we could automatically detect intra-function calls instead of >>> having to annotate them. However, I choose to annotate them because I don't >>> think that's not an expected construct in a "normal" code flow (at least >>> on x86). So objtool would still issue a warning on intra-function calls >>> by default, and you can annotate them to indicate if they are expected. >> >> I wondered the same thing when reading the patch. I'm confliected on >> this. On the one hand auto-detecting this seems like an excellent idea. >> >> If/when the compiler generates them, they had better be okay too. >> >> Josh? > > In general I prefer to keep it simple, and keep the annotations to a > minimum. And I don't think this warning has ever found anything useful. > So I'd be inclined to say just allow them and automatically detect them. > > However the fact that arm64 asm actually uses them worries me a bit. > > So for me it kind of hinges on whether arm64 has a legitimate use case > for them, or if the warning actually points to smelly code. >
Then what I can do is: - by default, automatically detect and validate intra-function calls - remove the INTRA_FUNCTION_CALL annotation - add an objtool option to print a warning about intra-function calls (but still validate such calls).
This way by default intra-function calls are automatically detected and validated. But you still have the option to print them out if you want to check if there are any intra-function calls.
alex.
| |