On Wed, 11 Sep 2013, Kai Tietz wrote: > This change fixes a quirk happening for relocated toolchains. Driver > remembers original-build directory
The original *build* directory should never be known to the driver; only the *configured* prefix. This area is complicated and subtle; you need to be very careful and precise in the analysis included in any patch submission related to it. Get things absolutely clear in your head and then write a complete, careful, precise self-contained explanation of everything relevant in GCC, as if for an audience not at all familiar with the code in question. > in std_prefix variable for being able later to modify path. Sadly > this std_prefix variable gets modified > later on, and so update_path can't work any longer as desired. This You don't say what "as desired" is. prefix.c contains a long description of *what* the path updates are, but no explanation of *why* or any overall design; it appears to be something Windows-specific. update_path should, as I understand it, always be called with PATH being a relocated path (one that has had the configured prefix converted to the prefix where the toolchain is in fact installed, using make_relative_prefix, or that doesn't need any relocation, e.g. a path passed with a -B option). In incpath.c, for example, you see how a path is computed using make_relative_prefix before update_path is called. Thus, it is correct for std_prefix to be the relocated prefix rather than the unrelocated one. If there is a bug, I'd say it's in whatever code is calling update_path without having first done the make_relative_prefix relocation on the path being passed to update_path. Thus, it is that caller that you need to fix. -- Joseph S. Myers jos...@codesourcery.com