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: amodra at gmail dot com
Subject: [Bug ld/15516] GNU LD is confused when linker plugin turns COMDAT symbol into static w/o renaming.
Date: Fri, 24 May 2013 09:54:14 +0000

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

Alan Modra <amodra at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |WORKSFORME

--- Comment #3 from Alan Modra <amodra at gmail dot com> 2013-05-24 09:54:14 
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.
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 are on the CC list for the bug.



reply via email to

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