Shawn Walker wrote:
The question then is whether or not there is any continued point in
setting the executable bit? I mean, why bother setting it if it's
unnecessary? On the chance that some ancient ye olde customer software
will break?
Not that it really matters, just curious :)
I trawled some old friends who had some history with the origins of
Solaris that goes back much further than my experience. I had one
response:
I think there were a variety of conversations over the years involving how
MMUs were built, what should be in ABIs, and what might happen with program
fragments (like, could you successfully exec() a .so file?) that led to
using execute bits on the files.
In the end, I think it just ended up being convention, but we had some
notions about whether you could have an execute mapping from a file without
and execute bit on it and some MMUs might not let the program-counter
fetch from a location that was in a READ but not EXECUTE protected
page.
But in the end it just seems to be a convention, one that could probably
be dropped with little or no effect. We could start by relaxing ldd(1):
ldd lists the path names of all shared objects that would be
loaded when filename is loaded. ldd expects the shared
objects that are being inspected to have execute permission.
If a shared object does not have execute permission, ldd
issues a warning before attempting to process the file.
However, I doubt whether anyone is going to sign up to remove all the
execute bits from shared objects in existing packages :-)
--
Rod.
_______________________________________________
opensolaris-code mailing list
[email protected]
https://opensolaris.org:444/mailman/listinfo/opensolaris-code