bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/15516] GNU LD is confused when linker plugin turns COMDAT symbol


From: hubicka at ucw dot cz
Subject: [Bug ld/15516] GNU LD is confused when linker plugin turns COMDAT symbol into static w/o renaming.
Date: Fri, 24 May 2013 11:42:48 +0000

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

--- Comment #4 from hubicka at ucw dot cz 2013-05-24 11:42:48 UTC ---
> I could not reproduce this with current mainline binutils.  The following
> extract from a debug session shows one of the typeinfo symbols hitting
> _bfd_exf_export_symbol.  We get there due to -Wl,--dynamic-list-cpp-typeinfo.

Martin,
do you think you can double check if the mainline binutils triggers the bug or
not?
The error sadly happens during libreoffice build that is bit hard to turn into
resoable testcase (the module is small though).

I was surprised that the bug does not trigger more often, since mainline GCC
since
2013-05-15  Jan Hubicka  <address@hidden>

        PR lto/57038
        PR lto/47375
        * lto-partition.c (get_symbol_class): Fix weakrefs.
        (lto_balanced_map): Fix weakrefs.
        (privatize_symbol_name): Remove unnecesary label.
        (rename_statics): Handle weakrefs as statics.

produces quite a lot of such changes (previously GCC always renamed the symbol
but people complained it makes debugging harder).

Honza
> Notice the plugin sym doesn't have def_regular or ref_regular set, so is not
> exported dynamic.  The second sym showed me what Jan meant by "turned into
> static", and is some evidence that ld is being exercised in a way that would
> trigger the bug if it still existed.  I suspect the bug was fixed along with
> PR15270, or one of my other patches in late March.
> 
> Jan if you can reproduce with mainline ld, please attach at set of objects 
> that
> reproduce the problem, and reopen the bug.
> 
> Breakpoint 2, _bfd_elf_export_symbol (h=0x114a2c0, data=0x7fffffffd1e0) at
> /src/binutils-current/bfd/elflink.c:1813
> (gdb) p *h
> $28 = {root = {root = {next = 0x0, string = 0x11555fc
> "_ZTIN3com3sun4star3uno9ExceptionE", hash = 474875173}, type =
> bfd_link_hash_defweak, non_ir_ref = 1, u = {undef = {next = 0x114a2c0, abfd =
> 0x1135198}, def = {next = 0x114a2c0, section = 0x1135198, value = 0}, i = 
> {next
> = 0x114a2c0, link = 0x1135198, warning = 0x0}, c = {next = 0x114a2c0, p =
> 0x1135198, size = 0}}}, indx = -1, dynindx = -1, got = {refcount = 0, offset =
> 0, glist = 0x0, plist = 0x0}, plt = {refcount = 0, offset = 0, glist = 0x0,
> plist = 0x0}, size = 16, type = 1, other = 0, target_internal = 0, ref_regular
> = 0, def_regular = 0, ref_dynamic = 1, def_dynamic = 0, ref_regular_nonweak =
> 0, dynamic_adjusted = 0, needs_copy = 0, needs_plt = 0, non_elf = 0, hidden =
> 0, forced_local = 0, dynamic = 1, mark = 0, non_got_ref = 0, dynamic_def = 1,
> ref_dynamic_nonweak = 0, pointer_equality_needed = 0, unique_global = 0,
> dynstr_index = 0, u = {weakdef = 0x0, elf_hash_value = 0}, verinfo = {verdef =
> 0x0, vertree = 0x0}, vtable = 0x0}
> (gdb) p h->root.u.def.section->owner->filename
> $29 = 0x1094ee0
> "/home/alan/build/libreoffice/workdir/unxlngx6.pro/CxxObject/i18npool/source/localedata/saxparser.o
> (symbol from plugin)"
> (gdb) c
> Continuing.
> 
> Breakpoint 2, _bfd_elf_export_symbol (h=0x16657d8, data=0x7fffffffd1e0) at
> /src/binutils-current/bfd/elflink.c:1813
> (gdb) p *h
> $30 = {root = {root = {next = 0x0, string = 0x168264d
> "_ZTIN3com3sun4star3uno9ExceptionE.lto_priv.27", hash = 1034143234}, type =
> bfd_link_hash_defined, non_ir_ref = 1, u = {undef = {next = 0x0, abfd =
> 0x1680b88}, def = {next = 0x0, section = 0x1680b88, value = 1232}, i = {next =
> 0x0, link = 0x1680b88, warning = 0x4d0 <Address 0x4d0 out of bounds>}, c =
> {next = 0x0, p = 0x1680b88, size = 1232}}}, indx = -1, dynindx = -1, got =
> {refcount = 0, offset = 0, glist = 0x0, plist = 0x0}, plt = {refcount = 3,
> offset = 3, glist = 0x3, plist = 0x3}, size = 16, type = 1, other = 2,
> target_internal = 0, ref_regular = 1, def_regular = 1, ref_dynamic = 0,
> def_dynamic = 0, ref_regular_nonweak = 0, dynamic_adjusted = 0, needs_copy = 
> 0,
> needs_plt = 0, non_elf = 0, hidden = 0, forced_local = 0, dynamic = 1, mark =
> 0, non_got_ref = 1, dynamic_def = 0, ref_dynamic_nonweak = 0,
> pointer_equality_needed = 1, unique_global = 0, dynstr_index = 0, u = {weakdef
> = 0x0, elf_hash_value = 0}, verinfo = {verdef = 0x0, vertree = 0x0}, vtable =
> 0x0}
> (gdb) p h->root.u.def.section->owner->filename
> $31 = 0x110e8c0 "saxparser.ltrans1.ltrans.o"
> (gdb) c
> Continuing.
> [Inferior 1 (process 21141) exited normally]
> (gdb)
> 
> -- 
> Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
> ------- You are receiving this mail because: -------
> You reported the bug.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



reply via email to

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