ld: set --enable-new-dtags by default (#2255)
authorBuck Evan <buck@yelp.com>
Sun, 18 Mar 2018 19:51:06 +0000 (12:51 -0700)
committerFredrik Fornwall <fredrik@fornwall.net>
Sun, 18 Mar 2018 19:51:06 +0000 (20:51 +0100)
commit6b9879af0eb4bb0dd6c4e55e4b82df805f824509
tree7ef9afa52b6a0376eeab302cd1e7e1c8cc38413a
parenteb8ef11b5483615267e0c55c4143e77b5624a731
ld: set --enable-new-dtags by default (#2255)

The --enable-new-dtags option to ld causes it to emit a RUNPATH rather than RPATH entry in the elf header. Because the Android linker supports RUNPATH but not RPATH, this means many things can now Just Work. This should (eventually) eliminate the need to set LD_LIBRARY_PATH.

Prior art:

This [became the default for Linux in 2013](https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=822b8bf) but I think termux isn't getting it because it reports "Android" instead of "Linux"? Or maybe the way it works changed since then. Regardless, [Debian has been using RUNPATH by default since December 2016.](https://sources.debian.org/src/binutils/2.27.90.20161231-1/debian/patches/ld-new-dtags-by-default.diff/?hl=27#L27) Their [newest configuration](https://sources.debian.org/src/binutils/2.30-7/debian/rules/#L362) uses the newer configuration option seen in this patch. The [suse and gentoo](https://web.archive.org/web/20160101182307/http://comments.gmane.org/gmane.comp.gnu.binutils/57379) maintainers said they did the same in 2004 and 2005, respectively. So it seems well battle-tested, to me.

For the curious:
This came up because I'm working on [getting Homebrew working under Termux](https://github.com/Linuxbrew/brew/pull/621).
packages/binutils/build.sh