On Sun, 1 May 2011, Patrick Dupre wrote:
It is a perl application calling my own c routines.
I made tons of them but here I get:
Can't load
'/home/pdupre/perl_lib/i386-linux-thread-multi/auto/Absor_satur/Absor_satur.so'
for module Absor_satur:
/home/pdupre/perl_lib/i386-linux-thread-multi/auto/Absor_satur/Absor_satur.so:
cannot restore segment prot after reloc: Permission denied at
/usr/lib/perl5/DynaLoader.pm line 200.
at ./Profile.pl line 22
It looks like you might have run afoul of an anti-stack-smashing mechanism.
One idea is to mark some parts of memory non-executable.
That limits the places to where evil folks can do a pseudo-return.
Another idea is to rearrange the places where shared objects are stored.
This limits the information avaiable to an evil-doer.
An unrelocateable shared object sometimes gets evicted.
I do not know how to debug this !
>> I wish to link several .o files to make only one .o file not
executable
>> (it will relinked later). I would like to first make a prelinked file
>> easier to then link
>> them to the excutable file (ie. with a main).
>
> ld -r can do that, but are you sure you don't just want to
> stick all the .o files in an archive with ar and link with
> that static library later?
I've read the linking with -r is *not* the same as just "concatenating",
but I'm not sure what the difference is.
You can make an archive.a and use -whole when listing it for inclusion.
--
Michael hennebry(a)web.cs.ndsu.NoDak.edu
"Pessimist: The glass is half empty.
Optimist: The glass is half full.
Engineer: The glass is twice as big as it needs to be."