From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1K5aWb-0000IW-Ku for qemu-devel@nongnu.org; Mon, 09 Jun 2008 02:06:37 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1K5aWa-0000I1-Ma for qemu-devel@nongnu.org; Mon, 09 Jun 2008 02:06:37 -0400 Received: from [199.232.76.173] (port=39457 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1K5aWa-0000Hl-3O for qemu-devel@nongnu.org; Mon, 09 Jun 2008 02:06:36 -0400 Received: from savannah.gnu.org ([199.232.41.3]:34512 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1K5aWZ-00035E-PW for qemu-devel@nongnu.org; Mon, 09 Jun 2008 02:06:35 -0400 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.63) (envelope-from ) id 1K5aWT-0003Lz-0Z for qemu-devel@nongnu.org; Mon, 09 Jun 2008 06:06:29 +0000 Received: from malc by cvs.savannah.gnu.org with local (Exim 4.63) (envelope-from ) id 1K5aWS-0003Lv-Rm for qemu-devel@nongnu.org; Mon, 09 Jun 2008 06:06:28 +0000 MIME-Version: 1.0 Errors-To: malc Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: malc Message-Id: Date: Mon, 09 Jun 2008 06:06:28 +0000 Subject: [Qemu-devel] [4706] R_PPC_REL24 safety net Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Revision: 4706 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=4706 Author: malc Date: 2008-06-09 06:06:28 +0000 (Mon, 09 Jun 2008) Log Message: ----------- R_PPC_REL24 safety net Modified Paths: -------------- trunk/dyngen.c Modified: trunk/dyngen.c =================================================================== --- trunk/dyngen.c 2008-06-09 06:06:25 UTC (rev 4705) +++ trunk/dyngen.c 2008-06-09 06:06:28 UTC (rev 4706) @@ -1963,6 +1963,14 @@ break; case R_PPC_REL24: /* warning: must be at 32 MB distancy */ + fprintf(outfile, "{\n" + " long disp = (%s - (long)(gen_code_ptr + %d) + %d);\n" + " if ((disp << 6) >> 6 != disp) {;\n" + " fprintf(stderr, \"Branch target is too far away\\n\");" + " abort();\n" + " }\n" + "}\n", + relname, reloc_offset, addend); fprintf(outfile, " *(uint32_t *)(gen_code_ptr + %d) = (*(uint32_t *)(gen_code_ptr + %d) & ~0x03fffffc) | ((%s - (long)(gen_code_ptr + %d) + %d) & 0x03fffffc);\n", reloc_offset, reloc_offset, relname, reloc_offset, addend); break;