HomeFreeBSD

MFS r361538: loader: fix userboot's ability to detect a guest's interpreter

Description

MFS r361538: loader: fix userboot's ability to detect a guest's interpreter

Some time after r338418, I believe with -Os/-Oz -ffunction-sections
-fdata-sections, the bootprog_interp variable that held our "$Interpreter:"
marker started getting strip from all loaders, with exception to userboot
since it used bootprog_interp to determine what flavor of userboot it was.

At some point, it had been brought to my attention that this was no longer
working and I had worked up some potential solutions to use the variable
that involved printing it out. My vague recollection is that this was
rejected, and I forgot to explore the alternatives; I cannot find records of
this discussion anymore.

Fast forward to present day, Andrew reported that it was non-functional and
offered (effectively) this patch (sans comment) to stop the compiler from
optimizing it out by assigning it to a volatile variable. This removes
concerns about user-facing change while retaining the interpreter marker.
Furthermore, it could certainly be uglier.

Note that this doesn't affect the stock build of 11.4's loaders, which do not
have whatever set of optimizations leads to bootprog_interp getting removed;
this is being merged as a low-risk change that will prevent accidents in
case I've missed some non-default option combination that can lead to the
same situation.

Approved by: re (gjb)

Details

Provenance
kevansAuthored on
Parents
rS361553: Proper check if divert(4) module is present by the relevant tests
Branches
Unknown
Tags
Unknown