[Bug driver/91629] New: gcc-ar assumes that GCC_EXEC_PREFIX is ${bindir}, but it is ${libdir}/gcc
sjc at immunant dot com
gcc-bugzilla@gcc.gnu.org
Sat Aug 31 17:17:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91629
Bug ID: 91629
Summary: gcc-ar assumes that GCC_EXEC_PREFIX is ${bindir}, but
it is ${libdir}/gcc
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: driver
Assignee: unassigned at gcc dot gnu.org
Reporter: sjc at immunant dot com
Target Milestone: ---
Created attachment 46795
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46795&action=edit
Proposed fix to handle GCC_EXEC_PATH correctly
If available, gcc-ar grabs its binary path (self) from the GCC_EXEC_PREFIX. It
then constructs a relative path difference between standard_bin_prefix and
standard_exec_prefix to make self_exec_prefix:
self_exec_prefix = make_relative_prefix (self,
standard_bin_prefix,
standard_exec_prefix);
The gcc frontend sets GCC_EXEC_PREFIX to the exec_prefix, not the bin_prefix:
gcc_exec_prefix = get_relative_prefix (decoded_options[0].arg,
standard_bindir_prefix,
standard_exec_prefix);
gcc_libexec_prefix = get_relative_prefix (decoded_options[0].arg,
standard_bindir_prefix,
standard_libexec_prefix);
if (gcc_exec_prefix)
xputenv (concat ("GCC_EXEC_PREFIX=", gcc_exec_prefix, NULL));
Normally this just happens to work, but if libdir and bindir were set to custom
paths in configure, then this can break.
I've attached a proposed fix, although I haven't had a chance to test it in the
environment I found this (a yocto build environment).
More information about the Gcc-bugs
mailing list