This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: SafeStack proposal in GCC


On Mon, May 09, 2016 at 09:02:33PM +0200, Michael Matz wrote:
> Hi,
> 
> On Sat, 7 May 2016, Rich Felker wrote:
> 
> > > > * sigaltstack and swapcontext are broken too.
> > > 
> > > We have prototype that supports swapcontext that we're happy to 
> > > release, but it clearly requires more work before being ready to merge 
> > > upstream.
> > 
> > The *context APIs are deprecated and I'm not sure they're worth 
> > supporting with this. It would be a good excuse to get people to stop 
> > using them.
> 
> How?  POSIX decided to remove the facilities without any adequate 
> replacement (thread aren't).

Threads work just as well as the ucontext api for coroutines. Due to
the requirement to save/restore signal masks, the latter requires a
syscall, making it no faster than a voluntary context switch via
futex syscall.

Most of the other hacks people used the ucontext API for were complete
hacks with undefined behavior, anyway.

BTW it's not even possible to implement makecontext on most targets
due to the wacky variadic calling convention it uses -- in most ABIs,
there's simply no way to shift the variadic args into the right slots
for calling the start function for the new context without knowing
their types, and the implementation has no way to know the types. So
it's really an unusably broken API.

Rich


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]