[SFrames] reland Emit and relax FREs #158154 (#159643)
[Previously reverted due to msan failures on two uninitialized padding
bits.]
This PR emits and relaxes the FREs generated in the previous PR.
After this change llvm emits usable sframe sections that can be linked
with the gnu linker. There are a few remaining cfi directives to handle
before they are generally usable, however.
The output isn't identical with gnu-gas in every case (this code
produces fewer identical FREs in a row than gas), but I'm reasonably
sure that they are correct regardless. There are even more size
optimizations that can be done later.
Also, while working on the tests, I found a few bugs in older portions
and cleaned those up.
This is a fairly big commit, but I'm not sure how to make it smaller.