Use offset-based method to access base x87 FPU registers, using offsets
relative to the position of 'struct FPR', as determined by the location
of first register in it (fctrl). Change m_fpr to use a fixed-size array
matching FXSAVE size (512 bytes). Add unit tests for verifying
RegisterInfo offsets and sizes against the FXSAVE layout.
Details
Diff Detail
Event Timeline
lldb/source/Plugins/Process/FreeBSDRemote/NativeRegisterContextFreeBSD_x86_64.cpp | ||
---|---|---|
563–570 | what if m_gpr and m_fpr were actually a single concatenated buffer? Could we then ditch GetFPROffset and just have a single memcpy here? |
lldb/source/Plugins/Process/FreeBSDRemote/NativeRegisterContextFreeBSD_x86_64.cpp | ||
---|---|---|
563–570 | We'd need GetFPROffset() for ptrace calls then ;-). I've got an another idea ready, just need to wait for some free RAM to test it. That said, we might reach the point where combining all these diffs is easier than reviewing them separately. |
lldb/source/Plugins/Process/FreeBSDRemote/NativeRegisterContextFreeBSD_x86_64.cpp | ||
---|---|---|
563–570 |
To get the address of the regset buffer, right? I'd imagine that could be handled by some function like GetFPRBuffer() (similar one exists in linux), or even GetBuffer(regset). I'd imagine that would be useful for the generic caching infrastructure as well. |
what if m_gpr and m_fpr were actually a single concatenated buffer? Could we then ditch GetFPROffset and just have a single memcpy here?