We need to save off the full 64-bit register, not just the low 32 bits,
of all registers getting saved off in _rtld_bind_start. Additionally,
we need to save off the other SPE registers (SPEFSCR and accumulator),
so that their program state is not affected by the PLT resolver.
Details
Details
Diff Detail
Diff Detail
- Lint
Lint Passed - Unit
No Test Coverage - Build Status
Buildable 27730 Build 25928: arc lint + arc unit
Event Timeline
libexec/rtld-elf/powerpc/rtld_start.S | ||
---|---|---|
110 | We're now allocating 20 bytes less stack than the original code in the !SPE case. Your math looks more correct to me though, so the original -160 must have been wrong. |
libexec/rtld-elf/powerpc/rtld_start.S | ||
---|---|---|
110 | Yes, it was overkill, but not detrimental. |
Comment Actions
Attempts to theorize on reduction of scope of this have failed, apparently we do in fact need to be backing this much up when calling the resolver.
I think this is about as nice as we're gonna get it.