https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83879

--- Comment #2 from Nathan Sidwell <nathan at gcc dot gnu.org> ---
The multiple definitions of gcov_master should not be a problem.  The (ELF)
semantics of shared libraries are such that the definition in the main program
preempts the defiitions in the libraries.  The libraries' GOT entry for that
symbol should point at the main program's instance.  That's the design intent,
IIRC.

It looks like the shared objects are built with PIC libgcov:
0000000000000000 <__gcov_dump_int>:
   0:   48 8b 05 00 00 00 00    mov    0x0(%rip),%rax        # 7
<__gcov_dump_int+0x7>
                        3: R_X86_64_REX_GOTPCRELX       __gcov_master-0x4
   7:   53                      push   %rbx
   8:   48 8d 1d 00 00 00 00    lea    0x0(%rip),%rbx        # f
<__gcov_dump_int+0xf>
                        b: R_X86_64_PC32        __gcov_root-0x4
   f:   81 38 52 32 37 41       cmpl   $0x41373252,(%rax)

So I presume that during loading the shared objects, they're not linking
themselves into the gcov list.

Reply via email to