target/2467: MIPS cross-assembler reports error for constant PC-relative branches

vvortex1@home.com vvortex1@home.com
Mon Apr 2 23:36:00 GMT 2001


>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:



More information about the Gcc-bugs mailing list