new gas cannot grok new gcc output

Alan Modra alan@linuxcare.com.au
Thu Feb 8 23:06:00 GMT 2001


On Thu, 8 Feb 2001, Aaron J. Grier wrote:

>[about m68k-rtems-elf]
> /tmp/cckO515f.s:1890: Error: Value of -1202 too large for field of 1 bytes at 1201
> /tmp/cckO515f.s:1890: Error: Value of -1276 too large for field of 1 bytes at 1275
> /tmp/cckO515f.s:1890: Error: Value of -1374 too large for field of 1 bytes at 1373

These errors are due to problems during m68k relaxation, which is why
the line number is at the end of file.  The clue as to what triggers the
problem is the "at <num>"  (We ought to print this in hex, BTW)
1201 == 0x4b1

Assembling the source you provided with -Z, then disassembling shows:

0000049c <__register_frame>:
 49c:   4e56 0000       linkw %fp,#0
 4a0:   4878 0018       pea 18 <decode_uleb128+0x18>
 4a4:   61ff 0000 0000  bsrl 4a6 <__register_frame+0xa>
                        4a6: R_68K_PC32 malloc
 4aa:   2f00            movel %d0,%sp@-
 4ac:   2f2e 0008       movel %fp@(8),%sp@-
 4b0:   6100 4e5e       bsrw 5310 <__frame_state_for+0x4616>
                        4b1: R_68K_PC8  __register_frame_info+0xffffffff
 4b4:   4e75            rts

So the problem occurs when then R_68K_PC8 reloc is being created.  

Hmm, there's another minor problem here too.  The above disassembly gets
the "bsr" wrong as it really should be "bsrs".

Sorry this isn't a fix, but maybe someone else will take it from here.

Alan Modra
-- 
Linuxcare.  Support for the Revolution.



More information about the Binutils mailing list