[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MiNT] [BINUTILS] 2.16.1howto



Le Tue, 16 Aug 2005 22:32:41 +0200
Patrice Mandin <mandin.patrice@wanadoo.fr> a écrit:

> m68k-atari-mint-ld: BFD 2.16.1 internal error, aborting at
> ../../binutils-2.16.1-new/bfd/aoutx.h line 5057 in
> aout_link_input_section_std
> 
> The part of aoutx.h file related to this:
> 
> --8<--8<--8<--
>   if (r != bfd_reloc_ok)
>   {
>     switch (r)
>     {
>       default:
>       case bfd_reloc_outofrange:
>         abort (); /* this is line 5057 that abort linking */
>       case bfd_reloc_overflow:
> --8<--8<--8<--
> 
> The r variable is setup at various stages before this line, so this is
> a problem with relocation stuff in prg-mint.c.

More investigation, in prg-mint.c::

The problem arises in m68kmint_prg_final_link_relocate () function, at
start, where address is checked against input_section->rawsize.
This value is NULL, hence the error.

The asection structure type is defined in bfd/bfd-in2.h. There are 2
size related fields:

--8<--8<--8<--
  /* The size of the section in octets, as it will be output.
     Contains a value even if the section has no contents (e.g., the
     size of <<.bss>>).  */
  bfd_size_type size;

  /* For input sections, the original size on disk of the section, in
     octets.  This field is used by the linker relaxation code.  It is
     currently only set for sections where the linker relaxation scheme
     doesn't cache altered section and reloc contents (stabs, eh_frame,
     SEC_MERGE, some coff relaxing targets), and thus the original size
     needs to be kept to read the section multiple times.
     For output sections, rawsize holds the section size calculated on
     a previous linker relaxation pass.  */
  bfd_size_type rawsize;
--8<--8<--8<--

I'll have to check in previous binutils if those both fields where also
present. Maybe we should use size instead of rawsize?

-- 
Patrice Mandin
WWW: http://membres.lycos.fr/pmandin/
Programmeur Linux, Atari
Spécialité: Développement, jeux