The introduction of stack protector support for gcc 4 on alpha some 14 years
ago required the logical stack frame to be laid out in reverse order (this is
a requirement of the MI stack protector code in gcc).
This move, however, forgot to update the preconditions of the "*adddi_fp_hack"
insn, which is used to perform specific stack or frame pointer adjustment in
the prologue.
The change in frame layout would make its preconditions never allow it to be
used anymore, causing internal compiler errors when attempting to compile
routines with more than about 32KB of locals.
Such code appears to be rare enough that this issue hasn't been noticed until
very recently by martijn@.
ldd(1) has traditionally printed the command: header itself, before
starting the program with LD_TRACE_LOADED_OBJECTS. There are various
circumstances where the program does not properly trace, so the output
looks weird. It is also different from the manual "env LD_TRACE_LOADED_OBJECTS="
method. This change makes ld.so print the command header itself.
ok kettenis
using pledge execpromises here is pointless because ldd is just a wrapper
around setenv LD_TRACE_LOADED_OBJECTS. Because the setenv method is
available to everyone, ld.so has to protect the process itself.
ok kettenis
libc initialization now aborts if a setuid/setgid program does not
have the global variable _permit_setugid declaring that it is setuid/setgid.
The more important packages have been fixed, and the long tail will be
fixed by people who encounter this problem.
ok sthen