binutils: Add --enable-new-dtags

This option makes ld use DT_RUNPATH instead of DT_RPATH.  DT_RPATH is
generally considered bad because it takes precedence over
LD_LIBRARY_PATH.  For example, eog is linked with -rpath /usr/lib/eog,
and with DT_RPATH if an old eog is already installed we are basically
impossible to debug a new eog build w/o overwriting the system
installation first or explicitly using "ld.so --inhibit-rpath" to
invoke it.

This "new" actually means "new in 2000," it's 24 years ago and all other
distros has enabled it.  Thus I guess some unexplainable "test suite
uses installed library instead of the just built one" issues in BLFS are
actually caused by this difference: the package author just assumes
everyone is using DT_RUNPATH thus they just set LD_LIBRARY_PATH and
consider it enough to test with the just built libraries, but DT_RPATH
breaks this expectation.

Let's eliminate the difference as it seems not doing anything good and
doing so just takes one switch.
This commit is contained in:
Poltern 2024-08-06 21:07:39 +05:00
parent e88e84f858
commit 77512d60a7
3 changed files with 14 additions and 0 deletions

View File

@ -74,6 +74,7 @@ cd build</userinput></screen>
--disable-nls \
--enable-gprofng=no \
--disable-werror \
--enable-new-dtags \
--enable-default-hash-style=gnu</userinput></screen>
<variablelist>
@ -130,6 +131,17 @@ cd build</userinput></screen>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-new-dtags</parameter></term>
<listitem>
<para>Этот параметр заставляет компоновщик использовать тег <quote>runpath</quote>
для встраивания путей поиска библиотек в исполняемые файлы и общие библиотеки
вместо традиционного тега <quote>rpath</quote>. Это упрощает отладку динамически
подключаемых исполняемых файлов и устраняет потенциальные проблемы в наборах тестов
некоторых пакетов.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-default-hash-style=gnu</parameter></term>
<listitem>

View File

@ -73,6 +73,7 @@ cd build</userinput></screen>
--enable-gprofng=no \
--disable-werror \
--enable-64-bit-bfd \
--enable-new-dtags \
--enable-default-hash-style=gnu</userinput></screen>
<variablelist>

View File

@ -57,6 +57,7 @@ cd build</userinput></screen>
--enable-shared \
--disable-werror \
--enable-64-bit-bfd \
--enable-new-dtags \
--with-system-zlib \
--enable-default-hash-style=gnu</userinput></screen>