On Mon, 2018-07-30 at 13:16 +0200, Andreas Schwab wrote: > On Jul 30 2018, Paul Smith <psm...@gnu.org> wrote: > > Which doesn't sound like something that would be helped by re- > > running as a shell script. Maybe this is a feature of GNU/Linux > > and other systems use ENOEXEC when there's no #! line? > > http://pubs.opengroup.org/onlinepubs/9699919799/functions/execve.html > > There are two distinct ways in which the contents of the process > image file may cause the execution to fail, distinguished by the > setting of errno to either [ENOEXEC] or [EINVAL] (see the ERRORS > section). In the cases where the other members of the exec family of > functions would fail and set errno to [ENOEXEC], the execlp() and > execvp() functions shall execute a command interpreter and the > environment of the executed command shall be as if the process > invoked the sh utility using execl() as follows: > > execl(<shell path>, arg0, file, arg1, ..., (char *)0);
Aha. GNU make is using execvp() so that explains that. Maybe the original code was using a different form of exec(). So it sounds like this code in GNU make is redundant, assuming a POSIX- compliant implementation of execvp(). I wasn't able to find any similar text in the posix_spawn() document although posix_spawnp() does appear to behave the same way as execvp() on GNU/Linux (not surprising since I believe posix_spawn() is implemented in terms of fork/exec there). Thanks Andreas! _______________________________________________ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make