nixpkgs/pkgs/development/tools/misc/binutils
sternenseemann ca9be0511b binutils-unwrapped: force targetPrefix if cross compiling
The binutils build system checks by itself if it is building a cross
toolchain or not and prepends or omits a targetPrefix accordingly. This
means that we can always pass target via configureTargets.

However the binutils build system and our bintools wrapper disagree over
whether we are building a cross toolchain or not sometimes since cross
compilation can be relatively subtle in nixpkgs. For example every use
of crossOverlays will make nixpkgs build a cross toolchain even though
localSystem == crossSystem. The cross infrastructure is also used to
build native binaries with a different stdenv (musl instead of glibc,
clang instead of gcc). In all of these cases stdenv.hostPlatform.config
== stdenv.targetPlatform.config, causing binutils to not prepend a
target prefix. At the same time stdenv.hostPlatform !=
stdenv.targetPlatform causing the bintools wrapper to expect a target
prefix, thus building an incomplete set of bintools. This is why
currently pkgsCross.gnu64 and pkgsCross.musl64 aren't working.

The solution is quite simple however: If we detect that we are building
a cross toolchain in the binutils-unwrapped expression, we force the
targetPrefix with --programprefix and fulfill the expectations of the
bintools wrapper at the same time.

Tested (on x86_64-linux):

* pkgsCross.musl64.hello
* pkgsCross.aarch64-multiplatform.hello
* pkgs.hello

Still not working is pkgsCross.gnu64, since
x86_64-unknown-linux-gnu-stage-final-gcc gets confused about targets
now, so bootstrapping the stdenv fails. Since this wasn't working
previously anyways, it's proably fine to fix this separately.
2021-04-16 17:12:45 +02:00
..
always-search-rpath.patch Revert commits on binutils for OpenRISC 1000 2020-12-28 08:43:31 +01:00
build-components-separately.patch Revert "Revert "Revert "Revert "libbfd: fix build"""" 2020-12-28 08:43:32 +01:00
CVE-2020-35448.patch binutils, libbfd: Patch CVE-2020-35448 2021-03-22 07:22:33 -07:00
default.nix binutils-unwrapped: force targetPrefix if cross compiling 2021-04-16 17:12:45 +02:00
deterministic.patch Revert commits on binutils for OpenRISC 1000 2020-12-28 08:43:31 +01:00
disambiguate-arm-targets.patch Revert commits on binutils for OpenRISC 1000 2020-12-28 08:43:31 +01:00
R_ARM_COPY.patch binutils: patch to fix https://sourceware.org/bugzilla/show_bug.cgi?id=16177 2020-11-28 20:19:05 +08:00
support-ios.patch