Messages in this thread | | | Date | Wed, 1 Apr 2020 19:45:44 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH v2] objtool,ftrace: Implement UNWIND_HINT_RET_OFFSET |
| |
On Wed, Apr 01, 2020 at 01:33:03PM -0400, Steven Rostedt wrote: > On Wed, 1 Apr 2020 19:09:10 +0200 > Peter Zijlstra <peterz@infradead.org> wrote: > > > > > + if (state->cfa.offset != initial_func_cfi.cfa.offset && > > > > + !(ret_offset && state->cfa.offset == initial_func_cfi.cfa.offset + ret_offset)) > > > > > > Isn't that the same thing as "state->cfa.offset != > > > initial_func_cfi.cfa.offset + ret_offset" ? > > > > I'm confused on what cfa.offset is, sometimes it increase with > > stack_size, sometimes it doesn't. > > I believe what Julien is saying is the above logic is equivalent: > > if (x != y && > !(z && x == y + z)) > > is the same as: > > if (x != y + z)
It is not, the former will accept either x==y || x==y+z, while the latter will only accept x==y+z.
For stack_size, I'm confident in just x==y+z, for offset I saw conflicting things.
Since the annotation is now used in only a single place, maybe x==y+z will just work, I'll go try once I've managed to unconfuse myself on the whole fp-unwind situation.
| |