@@ -2820,6 +2820,8 @@ for_each_path (const struct path_prefix *paths,
{
len = paths->max_len + extra_space + 1;
len += MAX (MAX (suffix_len, multi_os_dir_len), multiarch_len);
+ /* triplet prefix for as, ld. */
+ len += MAX (strlen (DEFAULT_REAL_TARGET_MACHINE), multiarch_len) + 2;
path = XNEWVEC (char, len);
}
@@ -3033,6 +3035,17 @@ file_at_path (char *path, void *data)
struct file_at_path_info *info = (struct file_at_path_info *) data;
size_t len = strlen (path);
+ /* search for the <triple>-as / -ld / objcopy first. */
+ if (! strcmp (info->name, "as") || ! strcmp (info->name, "ld")
+ || ! strcmp (info->name, "objcopy"))
+ {
+ struct file_at_path_info prefix_info = *info;
+ prefix_info.name = concat (DEFAULT_REAL_TARGET_MACHINE, "-",
+ info->name, NULL);
+ prefix_info.name_len = strlen (prefix_info.name);
+ if (file_at_path (path, &prefix_info))
+ return path;
+ }
memcpy (path + len, info->name, info->name_len);
len += info->name_len;