6bfa42218d
gcc provides wrappers for binutils' ar, nm and ranlib executables, which must be used instead when using link-time optimisation. See also: http://manpages.ubuntu.com/manpages/zesty/man1/aarch64-linux-gnu-gcc-ar-5.1.html The upstream version of avr-gcc-ar searches in paths passed to the configure script for the avr-ar binary that it wraps, falling back to searching PATH instead. Thus currently avr-gcc-ar works on Nix, but only if avrbinutils is already in the environment. This change bakes the path to avr-ar into avr-gcc-ar, since its path is known at compile time. It also no longer searches PATH, meaning the user's local environment won't override this path. Note that avr-gcc-nm and avr-gcc-ranlib are compiled from the same source file as avr-gcc-ar, just with different compiler flags. Testing on master (without avrbinutils in the environment): $ nix-build -A avrgcc $ result/bin/avr-gcc-ar --version result/bin/avr-gcc-ar: Cannot find binary 'avr-ar' Testing on branch with this fix: $ nix-build -A avrgcc $ result/bin/avr-gcc-ar --version GNU ar (GNU Binutils) 2.26.20160125 ...
15 lines
427 B
Diff
15 lines
427 B
Diff
diff --git a/gcc/gcc-ar.c b/gcc/gcc-ar.c
|
|
index 838ebc2..3ac4ee7 100644
|
|
--- a/gcc/gcc-ar.c
|
|
+++ b/gcc/gcc-ar.c
|
|
@@ -118,8 +118,8 @@ setup_prefixes (const char *exec_path)
|
|
dir_separator, NULL);
|
|
prefix_from_string (self_libexec_prefix, &target_path);
|
|
|
|
- /* Add path as a last resort. */
|
|
- prefix_from_env ("PATH", &path);
|
|
+ /* Add path to avrbinutils. */
|
|
+ prefix_from_string ("@avrbinutils@/bin", &path);
|
|
}
|
|
|
|
int
|