Mathieu Lacage <mathieu.lac...@sophia.inria.fr> writes:

> On Fri, 2009-02-27 at 08:54 -0800, Ian Lance Taylor wrote:
>
>> > It would be totally awesome to do this if you could provide an option to
>> > delegate to a user-provided function the allocation and deallocation of
>> > the stack blobs needed by threads.
>> 
>> Yes, this would be a goal.
>
> The main reason I asked about this is that it is not obvious to me how
> this could be done: yes, you can call any function from your
> compiler-generated code but, what would the user need to do to change
> which address is called ?
>
> 1) specify a function name for allocation on the command-line during
> compilation and link statically into every binary an object file which
> contains the specified symbol ? This would allow you to have one
> allocation function per generated binary (shared library or executable)
> which might not be very desirable from a user-perspective.
>
> 2) generate code which uses a well-known name, calls this symbol through
> the PLT (on ELF systems), and, relies on the ELF loader to resolve that
> symbol in each binary to a single user-provided function. The libc could
> provide its own default implementation which is overridden either with
> LD_PRELOAD or by linking the function into the main executable.

I would use option 2.

There could also be a hook function, along the lines of
std::set_terminate.

Ian

Reply via email to