This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: binutils is broken on ELF/mips (Re: binutils is broken on Linux/alpha)
On Thu, Oct 04, 2001 at 09:56:38AM -0700, H . J . Lu wrote:
> On Fri, Oct 05, 2001 at 02:09:51AM +0930, Alan Modra wrote:
> > On Thu, Oct 04, 2001 at 09:31:15AM -0700, H . J . Lu wrote:
> > >
> > > http://sources.redhat.com/ml/binutils/2001-09/msg00507.html
> > >
> > > breaks ELF/mips. I am trying to find out why. I think ELF/mips does
> > > its own symbol tracking. Removing some linkonce symbols causes the
> > > ELF/mips backend to crash. I don't know what other targets are also
> > > affected.
> >
> > Or is it just that the mips back-end relies on isec->symbol->value
> > being set?
>
> The ELF/mips backend died at
>
> 5878 {
> 5879 indx = elf_section_data (sec->output_section)->dynindx;
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 5880 if (indx == 0)
> 5881 abort ();
> 5882 }
>
Here is the problem at line 6083 in elf32-mips.c, the working ld has
(gdb) p *sec
$42 = {name = 0x82bddf0 ".gnu.linkonce.t.postError__8GLUnurbsi", id = 123,
index = 11, next = 0x82bf574, flags = 1049143, user_set_vma = 1,
reloc_done = 0, linker_mark = 0, linker_has_input = 0, gc_mark = 0,
segment_mark = 0, vma = 0, lma = 0, _cooked_size = 120, _raw_size = 120,
output_offset = 637476, output_section = 0x83946d0, alignment_power = 2,
relocation = 0x0, orelocation = 0x0, reloc_count = 2, filepos = 7216,
rel_filepos = 21880, line_filepos = 0, userdata = 0x0, contents = 0x0,
lineno = 0x0, lineno_count = 0, entsize = 0, comdat = 0x0,
kept_section = 0x82b3724, moving_line_filepos = 0, target_index = 0,
used_by_bfd = 0x82bf46c, constructor_chain = 0x0, owner = 0x82a5470,
symbol = 0x82bf42c, symbol_ptr_ptr = 0x82bf41c, link_order_head = 0x0,
link_order_tail = 0x0}
(gdb) p *sec->output_section
$41 = {name = 0x8282270 ".text", id = 1698, index = 9, next = 0x8394884,
flags = 8520243, user_set_vma = 1, reloc_done = 0, linker_mark = 0,
linker_has_input = 1, gc_mark = 0, segment_mark = 0, vma = 80032,
lma = 80032, _cooked_size = 0, _raw_size = 662356, output_offset = 0,
output_section = 0x83946d0, alignment_power = 4, relocation = 0x0,
orelocation = 0x0, reloc_count = 0, filepos = 80032, rel_filepos = 0,
line_filepos = 0, userdata = 0x8285360, contents = 0x0, lineno = 0x0,
lineno_count = 0, entsize = 0, comdat = 0x0, kept_section = 0x0,
moving_line_filepos = 0, target_index = 9, used_by_bfd = 0x83947c0,
constructor_chain = 0x0, owner = 0x8285508, symbol = 0x8394780,
symbol_ptr_ptr = 0x8394770, link_order_head = 0x8654320,
link_order_tail = 0x86569b8}
The broken one has
(gdb) p *sec
$18 = {name = 0x8131e18 ".gnu.linkonce.t.postError__8GLUnurbsi", id = 123,
index = 11, next = 0x81334d8, flags = 1049143, user_set_vma = 1,
reloc_done = 0, linker_mark = 0, linker_has_input = 0, gc_mark = 0,
segment_mark = 0, vma = 0, lma = 0, _cooked_size = 120, _raw_size = 120,
output_offset = 0, output_section = 0x80cc200, alignment_power = 2,
relocation = 0x0, orelocation = 0x0, reloc_count = 2, filepos = 7216,
rel_filepos = 21880, line_filepos = 0, userdata = 0x0, contents = 0x0,
lineno = 0x0, lineno_count = 0, entsize = 0, comdat = 0x0,
moving_line_filepos = 0, target_index = 0, used_by_bfd = 0x81333d0,
constructor_chain = 0x0, owner = 0x8119498, symbol = 0x8133390,
symbol_ptr_ptr = 0x8133380, link_order_head = 0x0, link_order_tail = 0x0}
(gdb) p *sec->output_section
$19 = {name = 0x80d6f53 "*ABS*", id = 2, index = 0, next = 0x0, flags = 0,
user_set_vma = 0, reloc_done = 0, linker_mark = 0, linker_has_input = 0,
gc_mark = 1, segment_mark = 0, vma = 0, lma = 0, _cooked_size = 0,
_raw_size = 0, output_offset = 0, output_section = 0x80cc200,
alignment_power = 0, relocation = 0x0, orelocation = 0x0, reloc_count = 0,
filepos = 0, rel_filepos = 0, line_filepos = 0, userdata = 0x0,
contents = 0x0, lineno = 0x0, lineno_count = 0, entsize = 0, comdat = 0x0,
moving_line_filepos = 0, target_index = 0, used_by_bfd = 0x0,
constructor_chain = 0x0, owner = 0x0, symbol = 0x80cc020,
symbol_ptr_ptr = 0x80cc1ec, link_order_head = 0x0, link_order_tail = 0x0}
H.J.