From owner-cvs-user Thu Oct 3 10:49:49 1996 Return-Path: owner-cvs-user Received: (from root@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id KAA11261 for cvs-user-outgoing; Thu, 3 Oct 1996 10:49:49 -0700 (PDT) Received: (from jdp@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id KAA11232; Thu, 3 Oct 1996 10:49:38 -0700 (PDT) Date: Thu, 3 Oct 1996 10:49:38 -0700 (PDT) From: John Polstra Message-Id: <199610031749.KAA11232@freefall.freebsd.org> To: CVS-committers, cvs-all, cvs-user Subject: cvs commit: src/contrib/gcc/config/i386 i386.h src/contrib/gcc/cp except.c Sender: owner-cvs-user@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk jdp 96/10/03 10:49:37 Modified: contrib/gcc/config/i386 i386.h contrib/gcc/cp except.c Log: Fix a bug that caused incorrect PIC code to be generated for exceptions. The symptom was an assembler warning "GOT relocation burb: `___EXCEPTION_TABLE__' should be global" followed (sometimes) by a core dump. The fix makes the compiler generate the correct GOTOFF addressing for that symbol, rather than the GOT addressing it was emitting before. Warning: There is still at least one serious bug in the i386 exception code for PIC. The exception code that is generated clobbers the GOT register (%ebx) and then tries to use it later. That leads to core dumps at program execution time. I know where the problem is, but I do not have a fix for it at this time. Until it is fixed, exceptions will not work in PIC code. This is a general problem for all i386 platforms; it is not specific to FreeBSD. Revision Changes Path 1.2 +16 -0 src/contrib/gcc/config/i386/i386.h 1.2 +7 -1 src/contrib/gcc/cp/except.c