PATCH: Restore i386 binary compat for EH info
Martin v. Loewis
martin@loewis.home.cs.tu-berlin.de
Tue Jan 4 15:36:00 GMT 2000
> 1) That should not be necessary for binary compatibility. So long as
> the register mapping is backward-compatible, adding new registers should
> be fine. Why was it breaking?
struct frame_state has two arrays (reg_or_offset, saved) which depend
on the number of registers. As a result, the location of cfa_reg
changes when new registers are added. Since struct frame_state* is a
result of frame_state_for, this breaks if the implementation of
frame_state_for was compiled with a different compiler than the caller
of frame_state_for.
> 2) How did this happen? Were some of the registers not represented before?
This happened with the new ia32 back-end. The old back-end had 17 hard
registers, the new one has 19. "flags" and "fpsr" where not previously
considered as hard registers. Since gcc never actively saves them on
stack (does it?), I believe not representing them in frame_state still
works ok.
Regards,
Martin
More information about the Gcc-patches
mailing list