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