UPX-packed programs keep their delay import directory in a section with no
data in the file (UPX0); the unpacker writes it after the program starts.
The startup scan added in cea6ca7 reads every module's delay table, so
file_span throws "PE RVA has no file-backed data" and the program exits
before it runs. 64-bit programs and DLLs hit the same check through
validate_native_image.
Treat a table that lies entirely in the virtual-only part of a section as
not present in the file yet. A table that starts in file data and runs past
it is still rejected.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: diagnosis, patch and test drafted with an AI assistant from a failing installer run; I reviewed, tested and verified them
Co-authored-by: william <[email protected]>