Thread (2 messages) 2 messages, 2 authors, 2022-09-07

Re: [PATCH net-next v4] net: skb: prevent the split of kfree_skb_reason() by gcc

From: Florian Weimer <hidden>
Date: 2022-09-07 18:59:46
Also in: linux-toolchains, lkml

Possibly related (same subject, not in this thread)

* Segher Boessenkool:
On Tue, Sep 06, 2022 at 02:37:47PM +0200, Florian Weimer wrote:
quoted
quoted
On Mon, Aug 22, 2022 at 4:01 PM Florian Weimer [off-list ref] wrote:
I did some research on the 'sibcalls' you mentioned above. Feel like
It's a little similar to 'inline', and makes the callee use the same stack
frame with the caller, which obviously will influence the result of
'__builtin_return_address'.
Sibling calls are essentially calls that can be replaced by jumps (aka
"tail call"), without needing a separate entry point to the callee.

Different targets can have a slightly different implementation and
definition of what exactly is a sibling call, but that's the gist.
quoted
quoted
Hmm......but I'm not able to find any attribute to disable this optimization.
Do you have any ideas?
Unless something changed quite recently, GCC does not allow disabling
the optimization with a simple attribute (which would have to apply to
function pointers as well, not functions).
It isn't specified what a sibling call exactly *is*, certainly not on C
level (only in the generated machine code), and the details differs per
target.
Sure, but GCC already disables this optimization in a generic fashion
for noreturn calls.  It should be possible to do the same based another
function attribute.

Thanks,
Florian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help