The thing I did for OpenBSD 3.7 is patch the gcc-3.3.x we use:
- On OpenBSD, by default, trampoline code generation is disabled in gcc
3.3.5. Code requiring trampolines will not compile without
-ftrampolines. The warning flag -Wtrampolines can be used to locate
trampoline instances if trampoline generation is re-enabled.
that way, you still have trampolines available in C if you need them, but you
don't risk compiling dangerous code that disables executable stack protection
by mistake.
It's probably quite trivial to write a similar patch for gcc-current,
assuming you guys think it's the right design decision.
After enabling that patch, we recompiled the whole system, all of X, and the
3000 packages of third party sources.
-ftrampolines was needed exactly 0 times.