How does the trampoline work on architectures which have noexec bit
for stack by default, like sparcv9?

Olga

On Wed, Oct 20, 2010 at 2:26 PM,  <casper....@sun.com> wrote:
>
>
>>I picture this somehow as being just a bit more functionality added to 
>>mprotect(2):
>>
>>/* following magic to identify operating on that segment, rather than
>> * a particular address
>> */
>>#define ADDR_STACK (void *) (-1)
>>#define ADDR_HEAP (void *) (-2)
>>
>>mprotect(ADDR_STACK, 0, (PROT_READ|PROT_WRITE|PROT_EXEC));
>
> It's a bit harder to bolt on the current implementation of the
> stack protection.  And what is the "ADDR_STACK" *all* current
> thread stacks, the stack of main or the current stack?
>
>>where a length of 0 implies something similar to what (MCL_CURRENT|MCL_FUTURE)
>>implies with memcntl(2), namely to apply that behavior to both the present and
>>future pages of the segment; that would combine applying mprotect() to the
>>existing pages as well as setting p_stkprot or p_datprot in the proc 
>>structure.
>>
>>Such an interface would be ideal for runtime control either by
>>the developer or after-the-fact with an LD_PRELOAD'ed shared object.
>>
>>Adding this functionality to mprotect() would be more understandable than
>>a new function, and would avoid adding an additional system call.  I don't
>>imagine that any existing software (except _maybe_ an emulator?) would
>>call mprotect() so often that the addition of a couple of if's or a switch()
>>applied to the addr arg would present a performance problem.
>
> There is one particular issue where gcc uses a trampoline created on the
> stack when you are passing a nested function as a function argument.
>
> (A nested function requires an additional argument)
>
> Casper
>
> _______________________________________________
> opensolaris-discuss mailing list
> opensolaris-discuss@opensolaris.org
>



-- 
      ,   _                                    _   ,
     { \/`o;====-    Olga Kryzhanovska   -====;o`\/ }
.----'-/`-/     olga.kryzhanov...@gmail.com   \-`\-'----.
 `'-..-| /       http://twitter.com/fleyta     \ |-..-'`
      /\/\     Solaris/BSD//C/C++ programmer   /\/\
      `--`                                      `--`
_______________________________________________
opensolaris-discuss mailing list
opensolaris-discuss@opensolaris.org

Reply via email to