driver: run ${target}-as as a last resort
As of now the driver tries to locate `as` (and `ld`) somethere in $PATH if nothing was found in libsubdir and tooldir. This is a bad idea for a cross-compiler. Use DEFAULT_TARGET_MACHINE-{as,ld} instead. Note that `collect2` already behaves that way (which is a good thing).
This commit is contained in:
parent
3e238594dd
commit
39afecc492
27
crossgcc-target-as-ld.patch
Normal file
27
crossgcc-target-as-ld.patch
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
diff -Nru gcc-8.4.1-20200305.orig/gcc/gcc.c gcc-8.4.1-20200305/gcc/gcc.c
|
||||||
|
--- gcc-8.4.1-20200305.orig/gcc/gcc.c 2020-03-10 11:34:46.000000000 +0000
|
||||||
|
+++ gcc-8.4.1-20200305/gcc/gcc.c 2021-06-11 20:54:35.938336123 +0000
|
||||||
|
@@ -2771,6 +2771,7 @@
|
||||||
|
bool do_multi)
|
||||||
|
{
|
||||||
|
struct file_at_path_info info;
|
||||||
|
+ char *path = NULL;
|
||||||
|
|
||||||
|
#ifdef DEFAULT_ASSEMBLER
|
||||||
|
if (! strcmp (name, "as") && access (DEFAULT_ASSEMBLER, mode) == 0)
|
||||||
|
@@ -2798,9 +2799,14 @@
|
||||||
|
info.suffix_len = strlen (info.suffix);
|
||||||
|
info.mode = mode;
|
||||||
|
|
||||||
|
- return (char*) for_each_path (pprefix, do_multi,
|
||||||
|
+ path = (char*) for_each_path (pprefix, do_multi,
|
||||||
|
info.name_len + info.suffix_len,
|
||||||
|
file_at_path, &info);
|
||||||
|
+#ifdef CROSS_DIRECTORY_STRUCTURE
|
||||||
|
+ if (! path && (! strcmp (name, "as") || ! strcmp (name, "ld")))
|
||||||
|
+ path = concat (DEFAULT_TARGET_MACHINE "-", name, NULL);
|
||||||
|
+#endif
|
||||||
|
+ return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ranking of prefixes in the sort list. -B prefixes are put before
|
Loading…
Reference in New Issue
Block a user