Date: Sat, 22 Jan 2000 08:31:41 -0800 (PST) From: "David E. O'Brien" <obrien@FreeBSD.org> To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/contrib/gcc/config/i386 i386.md Message-ID: <200001221631.IAA66040@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
obrien 2000/01/22 08:31:41 PST
Modified files:
contrib/gcc/config/i386 i386.md
Log:
I wanted to preserve this analysis of the bug fixed by the previous commit.
From "Alexander N. Kabaev" <ak03@gte.com>:
The problem is that default builtin_setjmp implementation does not restore
any registers except for stack pointers when doing nonlocal jump. This
means, that every platform, that needs to store/restore some other state
between jumps, has to provide appropriate definitions for
builtin_setjmp_setup and builtin_setjmp_receiver RTL expansions.
Every plaftorm which needs to do some additional processing at setjmp
receive point, such as restoring additional information previously saved by
builtin_setjmp_setup, can provide definition for builtin_setjmp_receiver
RTL expansion. [That is what the previous commit does.] The i386 code
compiled with -fpic option requires the value of the PIC register (EBX) to
be restored in order to function properly. One should not provide
expansion for builtin_setjmp_setup because GCC documentation explicitly
states that values should be recalculated if possibe, rather than stored in
setjmp buffer and proper value for EBX can easlity be determined from the
current EIP contents.
Revision Changes Path
1.7 +1 -1 src/contrib/gcc/config/i386/i386.md
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200001221631.IAA66040>
