Re: violating function pointer signature

From: Alexei Starovoitov
Date: Wed Nov 18 2020 - 14:46:38 EST


On Wed, Nov 18, 2020 at 6:22 AM Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
>
> Thus, all functions will be non-variadic in these cases.

That's not the only case where it will blow up.
Try this on sparc:
struct foo {
int a;
};

struct foo foo_struct(void) {
struct foo f = {};
return f;
}
int foo_int(void) {
return 0;
}
or this link:
https://godbolt.org/z/EdM47b

Notice:
jmp %i7+12
The function that returns small struct will jump to a different
instruction in the caller.

I think none of the tracepoints return structs and void foo(void) is
fine on x86.
Just pointing out that it's more than just variadic.