bug-binutils
[Top][All Lists]
Advanced

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

[Bug gold/7091] Internal error on object generated by gnuld


From: stefan dot becker at nokia dot com
Subject: [Bug gold/7091] Internal error on object generated by gnuld
Date: 12 Dec 2008 10:07:24 -0000

------- Additional Comments From stefan dot becker at nokia dot com  2008-12-12 
10:07 -------
Created an attachment (id=3103)
 --> (http://sourceware.org/bugzilla/attachment.cgi?id=3103&action=view)
Obfuscated output from readelf -Wr (production library)

Thanks for the fix. While the simple test case (source code compiled by me and
linked with GNU ld) works OK now, it still barfs on the precompiled from our SW
release. The error is now at a different location:

build/gold/ld-new: internal error in starting_output_address, at
../../binutils-2.19/gold/output.cc:2083

(gdb) bt                                                                  
#0  gold::do_gold_unreachable (                                           
    filename=0x82014d4 "../../binutils-2.19/gold/output.cc", lineno=2083, 
    function=0x82023b1 "starting_output_address")                         
    at ../../binutils-2.19/gold/gold.cc:84                                
#1  0x080fcf80 in gold::Output_section::starting_output_address (         
    this=0x9f54f88, object=0x9d31bd0, shndx=1960)                         
    at ../../binutils-2.19/gold/output.cc:2083                            
#2  0x080dee3a in gold::Sized_relobj<32, false>::do_finalize_local_symbols (
    this=0x9d31bd0, index=607, off=1687796)
    at ../../binutils-2.19/gold/object.cc:1284
#3  0x080b68d3 in gold::Relobj::finalize_local_symbols (this=0x9d31bd0,
    index=607, off=1687796) at ../../binutils-2.19/gold/object.h:612
#4  0x080b30d9 in gold::Layout::create_symtab_sections (this=0xbfa59b64,
    input_objects=0xbfa59e38, symtab=0xbfa59cf0, shnum=4940, poff=0xbfa58310)
    at ../../binutils-2.19/gold/layout.cc:2112
#5  0x080b5830 in gold::Layout::finalize (this=0xbfa59b64,
    input_objects=0xbfa59e38, symtab=0xbfa59cf0, target=0x9d31d00,
    task=0x9d31ef8) at ../../binutils-2.19/gold/layout.cc:1278
#6  0x080b63fd in gold::Layout_task_runner::run (this=0x9d31ed8,
    workqueue=0xbfa59ed0, task=0x9d31ef8)
    at ../../binutils-2.19/gold/layout.cc:65
#7  0x080acf51 in gold::Task_function::run (this=0x9d31ef8,
    workqueue=0xbfa59ed0) at ../../binutils-2.19/gold/workqueue.h:178
#8  0x0818f401 in gold::Workqueue::find_and_run_task (this=0xbfa59ed0,
    thread_number=0) at ../../binutils-2.19/gold/workqueue.cc:314
#9  0x0818f57a in gold::Workqueue::process (this=0xbfa59ed0, thread_number=0)
    at ../../binutils-2.19/gold/workqueue.cc:480
#10 0x0804b230 in main (argc=5, argv=0xbfa59fd4)
    at ../../binutils-2.19/gold/main.cc:219


(gdb) up
#1  0x080fcf80 in gold::Output_section::starting_output_address (
    this=0x9f54f88, object=0x9d31bd0, shndx=1960)
    at ../../binutils-2.19/gold/output.cc:2083
2083      gold_unreachable();
(gdb) l
2078          if (p->is_merge_section_for(object, shndx))
2079            return addr;
2080
2081          addr += p->data_size();
2082        }
2083      gold_unreachable();
2084    }
2085
2086    // Set the data size of an Output_section.  This is where we handle
2087    // setting the addresses of any Output_section_data objects.


(gdb) up
#2  0x080dee3a in gold::Sized_relobj<32, false>::do_finalize_local_symbols (
    this=0x9d31bd0, index=607, off=1687796)
    at ../../binutils-2.19/gold/object.cc:1284
1284                        os->starting_output_address(this, shndx);
(gdb) l
1279                    lv.set_output_value(os->output_address(this, shndx,
1280                                                          
lv.input_value()));
1281                  else
1282                    {
1283                      section_offset_type start =
1284                        os->starting_output_address(this, shndx);
1285                      Merged_symbol_value<size>* msv =
1286                        new Merged_symbol_value<size>(lv.input_value(),
start);
1287                      lv.set_merged_symbol_value(msv);
1288                    }


(gdb) up
#3  0x080b68d3 in gold::Relobj::finalize_local_symbols (this=0x9d31bd0,
    index=607, off=1687796) at ../../binutils-2.19/gold/object.h:612
612       { return this->do_finalize_local_symbols(index, off); }
(gdb) l
607       // Set the values of the local symbols, set the output symbol table
608       // indexes for the local variables, and set the offset where local
609       // symbol information will be stored. Returns the new local symbol
index.
610       unsigned int
611       finalize_local_symbols(unsigned int index, off_t off)
612       { return this->do_finalize_local_symbols(index, off); }
613
614       // Set the output dynamic symbol table indexes for the local
variables.
615       unsigned int
616       set_local_dynsym_indexes(unsigned int index)


I already see one difference: my library has .text sections whereas the
production library has .gnu.linkonce.t sections. If I remember correctly this
means that the production library has been compiled with GCC3. If you don't
think gold should be able to handle then I'll have to discuss recompilation
with my colleagues.

-- 


http://sourceware.org/bugzilla/show_bug.cgi?id=7091

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]