https://sourceware.org/bugzilla/show_bug.cgi?id=24449

            Bug ID: 24449
           Summary: Gold linker doesn't work as expected with indirectly
                    linked libraries with rpath.
           Product: binutils
           Version: 2.25
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: gold
          Assignee: ccoutant at gmail dot com
          Reporter: amitarya2187 at gmail dot com
                CC: ian at airs dot com
  Target Milestone: ---

Gold linker doesn't seeem to respect rpath for indirectly linked libraries. I 
use
rpath to link against libraries found in crosstool.

So building a file main.cpp looks like the following.

BUILD
======
/usr/local/scaligent/toolchain/crosstool/v4/x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu-g++
\
        -o dns \
       
-B/usr/local/scaligent/toolchain/crosstool/v4/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/bin.gold
\
       
-Wl,--dynamic-linker=/usr/local/scaligent/toolchain/crosstool/v4/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/sysroot/lib/ld-linux-x86-64.so.2
\
       
-Wl,-rpath=/usr/local/scaligent/toolchain/crosstool/v4/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/sysroot/lib
\
        main.cpp \

Filtering libnss* and libresolv.so in strace.
==============================================
% strace -e open ./main |& grep -E "nss.*so|resolv.*so" | grep -v "= -1"        
open("/lib64/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libnss_mdns4_minimal.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libnss_dns.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libnss_myhostname.so.2", O_RDONLY|O_CLOEXEC) = 3

Meanwhile with standard linker.
===============================

% strace -e open ./dns |& grep -E "nss.*so|resolv.*so" | grep -v "= -1"
open("/usr/local/scaligent/toolchain/crosstool/v4/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/sysroot/lib/libnss_files.so.2",
O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libnss_mdns4_minimal.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/usr/local/scaligent/toolchain/crosstool/v4/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/sysroot/lib/libnss_dns.so.2",
O_RDONLY|O_CLOEXEC) = 3
open("/usr/local/scaligent/toolchain/crosstool/v4/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/sysroot/lib/libresolv.so.2",
O_RDONLY|O_CLOEXEC) = 3

The problem is resolved when I provided "-lnss_files -lnss_dns -lresolv" in the
build command, but this behavior seems confusing.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to