Bug #3840
openexecutables with PT_PHDR program headers should not necessarily require PT_INTERP
0%
Description
A user porting the non-gcc Go compilers produced an executable which we kill out of hand early in executing it.
It turns out this is because we assert that any executable with a PT_PHDR program header will also have a PT_INTERP program header. The Go toolchain creates static executables with PT_PHDR program headers and -- obviously -- no PT_INTERP. I think this is technically valid (given the "wonderful" flexibility of ELF), though unusual since you'd generally use PT_PHDR and loadable program headers if you needed to find them again at runtime (if, for eg, you were dynamic). Presumably Go has other reasons for wishing to find its own phdrs.
Either way, I think the check in elfexec() is invalid, though I'd really prefer not to change it, since it has existed since time immemorial, and there could reasonably be far deeper implications (or at least, the same assumption made in many more places).
No data to display