From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28823 invoked by alias); 9 May 2006 14:17:35 -0000 Received: (qmail 28767 invoked by uid 22791); 9 May 2006 14:17:33 -0000 X-Spam-Check-By: sourceware.org Received: from bender.bawue.de (HELO bender.bawue.de) (193.7.176.20) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 09 May 2006 14:17:31 +0000 Received: from lagash (unknown [194.74.144.146]) by bender.bawue.de (Postfix) with ESMTP id E9664457AE for ; Tue, 9 May 2006 16:17:26 +0200 (MEST) Received: from ths by lagash with local (Exim 4.62) (envelope-from ) id 1FdT0v-0005JZ-8U for binutils@sourceware.org; Tue, 09 May 2006 15:16:37 +0100 Date: Tue, 09 May 2006 14:58:00 -0000 To: binutils@sourceware.org Subject: [PATCH] Relax MIPS j/jal out-of-range check Message-ID: <20060509141637.GB27291@networkno.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.11+cvs20060403 From: Thiemo Seufer X-IsSubscribed: yes Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org X-SW-Source: 2006-05/txt/msg00173.txt.bz2 Hello All, I applied the appended patch. It relaxes the range checking for j and jal addresses to a warning, since there are a few cases where the effect of an out of range jump can be the intended result. Thiemo 2006-05-09 David Ung [ gas/ChangeLog ] * config/tc-mips.c (append_insn): Only warn about an out-of-range j or jal address. [ gas/testsuite/ChangeLog ] * gas/mips/jal-range.l: Only warn about an out-of-range j or jal address. Index: gas/testsuite/gas/mips/jal-range.l =================================================================== RCS file: /cvs/src/src/gas/testsuite/gas/mips/jal-range.l,v retrieving revision 1.2 diff -u -p -r1.2 jal-range.l --- gas/testsuite/gas/mips/jal-range.l 26 Sep 2002 09:00:08 -0000 1.2 +++ gas/testsuite/gas/mips/jal-range.l 2 May 2006 14:58:20 -0000 @@ -1,4 +1,4 @@ .*: Assembler messages: .*:4: Error: jump to misaligned address \(0x1\) .*:6: Error: jump to misaligned address \(0xfffffff\) -.*:7: Error: jump address range overflow \(0x10000000\) +.*:7: Warning: jump address range overflow \(0x10000000\) Index: gas/config/tc-mips.c =================================================================== RCS file: /cvs/src/src/gas/config/tc-mips.c,v retrieving revision 1.330 diff -u -p -r1.330 tc-mips.c --- gas/config/tc-mips.c 30 Apr 2006 18:34:39 -0000 1.330 +++ gas/config/tc-mips.c 2 May 2006 14:58:19 -0000 @@ -2407,8 +2772,8 @@ append_insn (struct mips_cl_insn *ip, ex as_bad (_("jump to misaligned address (0x%lx)"), (unsigned long) address_expr->X_add_number); if (address_expr->X_add_number & ~0xfffffff) - as_bad (_("jump address range overflow (0x%lx)"), - (unsigned long) address_expr->X_add_number); + as_warn (_("jump address range overflow (0x%lx)"), + (unsigned long) address_expr->X_add_number); ip->insn_opcode |= (address_expr->X_add_number >> 2) & 0x3ffffff; break; @@ -2417,8 +2782,8 @@ append_insn (struct mips_cl_insn *ip, ex as_bad (_("jump to misaligned address (0x%lx)"), (unsigned long) address_expr->X_add_number); if (address_expr->X_add_number & ~0xfffffff) - as_bad (_("jump address range overflow (0x%lx)"), - (unsigned long) address_expr->X_add_number); + as_warn (_("jump address range overflow (0x%lx)"), + (unsigned long) address_expr->X_add_number); ip->insn_opcode |= (((address_expr->X_add_number & 0x7c0000) << 3) | ((address_expr->X_add_number & 0xf800000) >> 7)