Thread overview
[Issue 17375] copy relocated ModuleInfos end up getting detected as duplicates
[Issue 17375] colliding modules detected with binutils 2.28 linker and shared libraries
May 06
https://issues.dlang.org/show_bug.cgi?id=17375

greensunny12@gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |greensunny12@gmail.com

--
May 06
https://issues.dlang.org/show_bug.cgi?id=17375

Vladimir Panteleev <thecybershadow@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |thecybershadow@gmail.com

--
May 06
https://issues.dlang.org/show_bug.cgi?id=17375

--- Comment #1 from Vladimir Panteleev <thecybershadow@gmail.com> ---
On Arch Linux, this is reproducible with binutils 2.28.0, but not reproducible with 2.27.

--
May 07
https://issues.dlang.org/show_bug.cgi?id=17375

--- Comment #2 from Vladimir Panteleev <thecybershadow@gmail.com> ---
Bisecting binutils points to:

9acc85a62eb76c270724bba15c889d2d05567b6a is the first bad commit
commit 9acc85a62eb76c270724bba15c889d2d05567b6a
Author: Alan Modra <amodra@gmail.com>
Date:   Wed Dec 28 17:04:15 2016 +1030

    Use dynrelro for symbols in relro sections too

            PR ld/20995
    bfd/
            * elflink.c (elf_link_add_object_symbols): Mark relro sections
            in dynamic objects SEC_READONLY.
    ld/
            * testsuite/ld-elf/pr20995c.s: New test file.
            * testsuite/ld-elf/pr20995-2so.r: Likewise.
            * testsuite/ld-elf/elf.exp: Run it.

:040000 040000 decd212336814caf0562835700a42a8f6d3e5e34
8f7d306bf5df00e27fa208f6dc66e345ca5064e8 M      bfd
:040000 040000 c101f8812c1c65893d81807818e3bfb8acd3ae1e
decd54f18574d1b7d39c8888ff551cbde3d3cbe0 M      ld

--
May 08
https://issues.dlang.org/show_bug.cgi?id=17375

Martin Nowak <code@dawg.eu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|copy relocated ModuleInfos  |colliding modules detected
                   |end up getting detected as  |with binutils 2.28 linker
                   |duplicates                  |and shared libraries
           Severity|enhancement                 |critical

--
May 08
https://issues.dlang.org/show_bug.cgi?id=17375

--- Comment #3 from Martin Nowak <code@dawg.eu> ---
Also see https://sourceware.org/bugzilla/show_bug.cgi?id=20995 and
http://sourceware-org.1504.n7.nabble.com/dynrelro-section-for-read-only-dynamic-symbols-copied-into-executable-td429858.html
for more info on the binutils change.

As a workaround, also compile the executable with -fPIC (PIE). This will avoid the necessity for copy relocation. We made PIE the default in a recent release.

--
May 09
https://issues.dlang.org/show_bug.cgi?id=17375

--- Comment #4 from Vladimir Panteleev <thecybershadow@gmail.com> ---
Workaround for Arch Linux:

Grab the 2.27 package from https://archive.archlinux.org/packages/b/binutils/binutils-2.27-1-x86_64.pkg.tar.xz, unpack it somewhere, then prefix $PATH with that package's "bin" directory and $LD_LIBRARY_PATH with that package's "lib" directory.

--
May 18
https://issues.dlang.org/show_bug.cgi?id=17375

--- Comment #5 from Martin Nowak <code@dawg.eu> ---
The PIE (-fPIC) workaround seems a lot simpler. It should be made default on Arch anyhow after we've switched with 2.072.2 http://forum.dlang.org/post/o3sr68$2shj$1@digitalmars.com.

--
May 18
https://issues.dlang.org/show_bug.cgi?id=17375

--- Comment #6 from Vladimir Panteleev <thecybershadow@gmail.com> ---
(In reply to Martin Nowak from comment #5)
> The PIE (-fPIC) workaround seems a lot simpler.

Sorry, yeah, I meant when modifying the build command is not feasible (e.g. when bisecting / doing regression testing).

Do you think you could submit a PR to fix the Druntime and Phobos Makefiles? I'd also like to make Digger apply that patch automatically so it's possible to run tests of older versions of D with newer binutils.

--