Project

General

Profile

Bug #3840

executables with PT_PHDR program headers should not necessarily require PT_INTERP

Added by Rich Lowe about 7 years ago.

Status:
Feedback
Priority:
Low
Assignee:
Category:
-
Start date:
2013-06-22
Due date:
% Done:

0%

Estimated time:
Difficulty:
Medium
Tags:
Gerrit CR:

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).

Also available in: Atom PDF