> Files which aren't executable aren't even considered as
candidates for being
> ELF files to extract debuginfo from.
>
> Without execute permission, you'd have to check EVERY SINGLE installed FILE
> for being ELF, that might be a significant performance hit. It'd have to be
> tried at least.
The heuristic 0==memcmp(ELFMAG, &file[0..3], SELFMAG) is 99.99% effective,
and never gives a false negative. The cost is {open+read} for checking ELFMAG,
vs {stat} for checking __S_IEXEC. Most of the cost of open() and stat()
is the same: looking up the filename. The cost of a 4-byte read() is small.
Therefore using ELFMAG costs about the same as using __S_IEXEC, as long as
the total number of execve() is nearly the same.
Implement as a filter: read file names from stdin, write the names of
the ELF files onto stdout:
find . -type f | ELF_filter | xargs extract_debuginfo
replacing
find . -type f -a -perm /u+x | xargs extract_debuginfo
--