On Fri, Feb 27, 2009 at 09:10:10AM +0100, Mathieu Lacage wrote: > - if you want to use the stack protector and split stacks, it should > be fairly trivial to extend the data structure which contains the stack > protector with a new field, no ?
The stack protector is just a word, not a pointer. It's held in a highly magic location on some platforms, e.g. relative to the thread base register. There's not a lot of space there. It might be possible to reserve more in coordination with glibc, for glibc targets. > - I understand that you need to copy the function parameters from the > old stack to the new stack, but, why would you need to invoke the C++ > copy or move constructors for this ? Would a memcpy not be sufficient to > ensure proper C++ semantics in this case ? An example which shows how a > memcpy would break might be interesting. I haven't written C++ in a while, so forgive any obvious gaffes. class X { int x, *y; X() { y = &x; } X(X &obj) { x = obj.x; y = &x; } } Memcpy that somewhere else and the internal pointer is invalid. -- Daniel Jacobowitz CodeSourcery