On 20/06/16 09:56, Schmidt, Adriaan wrote: > I figured out that in native execution, my application only works because it > states in its ELF header that it needs executable stacks, and Linux' way of > providing this is with the READ_IMPLIES_EXEC property in the process > personality, i.e., by simply making all readable memory also executable. > Valgrind is more strict, and does not implement READ_IMPLIES_EXEC. > > Is this a bug, so should Valgrind show the same behavior as in native > execution?
Yes it's a bug. In your program ;-) Even without valgrind not all platforms will do what you say to start with - the only thing that PT_GNU_STACK in the ELF guarantees is that the stack will have those permissions and valgrind does do that. The read-implies-exec behaviour you describe is, in general, only true for those CPUs (like older 32 bit x86 and ARM) that don't actually support a separate execute permission. In the case of ARM that appears to mean things before ARMv6 as far as I can see. So your problem is quite likely to fail anyway when run on newer hardware so be glad valgrind has found your problem now ;-) Tom -- Tom Hughes (t...@compton.nu) http://compton.nu/ ------------------------------------------------------------------------------ What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic patterns at an interface-level. Reveals which users, apps, and protocols are consuming the most bandwidth. Provides multi-vendor support for NetFlow, J-Flow, sFlow and other flows. Make informed decisions using capacity planning reports. http://sdm.link/zohomanageengine _______________________________________________ Valgrind-users mailing list Valgrind-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/valgrind-users