Commit 58691d4a by Olivier Hainque Committed by Olivier Hainque

getenv_spec_function to prepend / to value for undef var

So the value can be used in places where an absolute path
is expected.

2018-07-31  Olivier Hainque  <hainque@adacore.com>

        * gcc.c (getenv_spec_function): Prepend '/' to value for
	allowed undefined variables.

From-SVN: r263081
parent c89b64d7
2018-07-31 Olivier Hainque <hainque@adacore.com>
* gcc.c (getenv_spec_function): Prepend '/' to value for allowed
undefined variables.
2018-07-30 Segher Boessenkool <segher@kernel.crashing.org> 2018-07-30 Segher Boessenkool <segher@kernel.crashing.org>
PR target/86640 PR target/86640
......
...@@ -9244,7 +9244,11 @@ print_multilib_info (void) ...@@ -9244,7 +9244,11 @@ print_multilib_info (void)
Returns the value of the environment variable given by its first argument, Returns the value of the environment variable given by its first argument,
concatenated with the second argument. If the variable is not defined, a concatenated with the second argument. If the variable is not defined, a
fatal error is issued unless such undefs are internally allowed, in which fatal error is issued unless such undefs are internally allowed, in which
case the variable name is used as the variable value. */ case the variable name prefixed by a '/' is used as the variable value.
The leading '/' allows using the result at a spot where a full path would
normally be expected and when the actual value doesn't really matter since
undef vars are allowed. */
static const char * static const char *
getenv_spec_function (int argc, const char **argv) getenv_spec_function (int argc, const char **argv)
...@@ -9262,8 +9266,15 @@ getenv_spec_function (int argc, const char **argv) ...@@ -9262,8 +9266,15 @@ getenv_spec_function (int argc, const char **argv)
varname = argv[0]; varname = argv[0];
value = env.get (varname); value = env.get (varname);
/* If the variable isn't defined and this is allowed, craft our expected
return value. Assume variable names used in specs strings don't contain
any active spec character so don't need escaping. */
if (!value && spec_undefvar_allowed) if (!value && spec_undefvar_allowed)
value = varname; {
result = XNEWVAR (char, strlen(varname) + 2);
sprintf (result, "/%s", varname);
return result;
}
if (!value) if (!value)
fatal_error (input_location, fatal_error (input_location,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment