Andrew Cagney wrote:
To give this x86-64 thread clear closure. The internal-error you are seeing from the new frame code is now, officially, "not-a-frame-bug".
Yes, I've already realised so. Thank you for confirmation.
The underlying problem is caused by a design flaw (one of many) in the original CFI code (on which the x86-64 depends). It's trying to use the CFI unwinder on a block of code that either: has no CFI information; or has CFI information that isn't relevant to the stack frame being unwound. Using CFI to unwind such a frame is meaningless.
[...]
To fix this problem, the x86-64 will need to implement both that and the save_dummy_frame_tos() method.
OK. So, first I need to convert x86-64 target to use all the new frame-id stuff I think. And then implement handling of different frame types (normal (CFI), dummy, sigtramp, and specifically for x86-64 also normal frames without CFI debug info).
Basically all calls to cfi_*() functions from x86-64-*.c files should become x86_64_*() functions that call the appropriate cfi_*() functions if needed, or a frame-type specific thing otherwise.
Correct?