From mboxrd@z Thu Jan 1 00:00:00 1970 From: vvortex1@home.com To: gcc-gnats@gcc.gnu.org Subject: target/2467: MIPS cross-assembler reports error for constant PC-relative branches Date: Mon, 02 Apr 2001 23:36:00 -0000 Message-id: <20010403063426.20472.qmail@sourceware.cygnus.com> X-SW-Source: 2001-04/msg00035.html List-Id: >Number: 2467 >Category: target >Synopsis: MIPS cross-assembler reports error for constant PC-relative branches >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: rejects-legal >Submitter-Id: net >Arrival-Date: Mon Apr 02 23:36:00 PDT 2001 >Closed-Date: >Last-Modified: >Originator: vvortex1@home.com >Release: 2.10 >Organization: >Environment: FreeBSD 4.2 on i386 architecture. Also tested with Solaris 7 on Sparc architecture. GNU assembler 2.10 (mips64orion-rtems) using BFD version 2.10. >Description: When given a PC-relative branch instruction with a numeric immediate, such as "bne $0, $0, 16", the MIPS cross-assembler correctly parses the expression but fails to generate object code. It reports "Can not represent BFD_RELOC_16_PCREL_S2 relocation in this object file format". Strictly speaking, no relocation information is necessary because the value of the immediate field is already known. This error is generated in all known emulation modes. >How-To-Repeat: Contents of broken.s: bne $0, $0, 8 nop nop nop nop ------ To reproduce, run: % mips64orion-rtems-as broken.s None of the configuration options seem to have any effect on this glitch. >Fix: Beats me ;-) The assembler should simply store the supplied numeric operand shifted right two places. >Release-Note: >Audit-Trail: >Unformatted: