Messages in this thread | | | Date | Wed, 18 Nov 2020 13:11:27 -0600 | From | Segher Boessenkool <> | Subject | Re: violating function pointer signature |
| |
On Wed, Nov 18, 2020 at 01:58:23PM -0500, Steven Rostedt wrote: > I wonder if we should define on all architectures a void void_stub(void), > in assembly, that just does a return, an not worry about gcc messing up the > creation of the stub function. > > On x86_64: > > GLOBAL(void_stub) > retq > > > And so on.
I don't see how you imagine a compiler to mess this up?
void void_stub(void) { }
will do fine?
.globl void_stub .type void_stub, @function void_stub: .LFB0: .cfi_startproc ret .cfi_endproc .LFE0: .size void_stub, .-void_stub
Calling this via a different declared function type is undefined behaviour, but that is independent of how the function is *defined*. Your program can make ducks appear from your nose even if that function is never called, if you do that. Just don't do UB, not even once!
Segher
| |