Bug 19856 - GCC_EXEC_PREFIX used wrong
Summary: GCC_EXEC_PREFIX used wrong
Status: WAITING
Alias: None
Product: gcc
Classification: Unclassified
Component: driver (show other bugs)
Version: 3.4.3
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-02-09 16:59 UTC by Bryan Henderson
Modified: 2020-12-07 23:04 UTC (History)
4 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2020-04-13 00:00:00


Attachments
strace of failure to find cc1 (1.29 KB, text/plain)
2005-02-09 17:06 UTC, Bryan Henderson
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Bryan Henderson 2005-02-09 16:59:27 UTC
GCC_EXEC_PREFIX behavior doesn't match the manual or reason and several ways.

The manual says GCC_EXEC_PREFIX is a prefix for the program name, which means 
'gcc' should look for 'cc1' as GCC_EXEC_PREFIX/cc1.  But Strace indicates that 
'gcc' looks at GCC_EXEC_PREFIX/MACHINE/VERSION/../../../..
MACHINE/bin/MACHINE/VERSION/cc1.
This is a rather strange path.

The manual says gcc looks using GCC_EXEC_PREFIX first, and then the usual 
places.  That would be normal.  For me, it looks in a bunch of places unrelated 
to GCC_EXEC_PREFIX, then the path described above, then gives up.

The "bunch of places" mentioned above starts with something that is apparently 
based on the path by which 'gcc' was invoked, but has too many .. in it:  
MY_GCC_INSTALL_DIRECTORY/lib/../../lbiexec/gcc/MACHINE/VERSION/cc1.

On the other hand, if I don't set GCC_EXEC_PREFIX, it properly looks at 
MY_GCC_INSTALL_DIRECTORY/bin/../libexec/gcc/MACHINE/VERSION/cc1.

The manual says GCC_EXEC_PREFIX is used for finding subprograms and linker 
files, but it is apparently also used for the specs file -- 
GCC_EXEC_PREFIX/MACHINE/VERSION/specs .

The manual says the default for GCC_EXEC_PREFIX is PREFIX/lib/gcc .  But it also 
says when GCC_EXEC_PREFIX is not set, gcc searches based on the pathname with 
which it was invoked.  The latter matches what the program does for me.

(For clarity, I have written the above as if gcc add a slash after 
GCC_EXEC_PREFIX; as documented, it doesn't).

Note that in these experiments, I built gcc with PREFIX = nonexistent directory 
to ensure no built-in path gets used.

Finally, if someone works on the manual section, I highly recommend moving the 
environment variable section out of the "Gcc Command Options" section.  It 
doesn't fit there; I had a hard time finding it.
Comment 1 Bryan Henderson 2005-02-09 17:06:43 UTC
Created attachment 8157 [details]
strace of failure to find cc1

In this run, PREFIX is /home/bryanh/gcc .  

GCC_EXEC_PREFIX is /tmp2/gcc-3.4.3/lib/gcc//  .

/tmp2 is a symlink to /mp/hdb2	.

Gcc, in the form created by 'make install', is installed in /tmp2/gcc-3.4.3 --
i.e. 'make install' created the tree at /home/bryanh/gcc and I moved it to
/tmp2/gcc-3.4.3.
Comment 2 Andrew Pinski 2005-02-09 19:07:49 UTC
I think this related to PR 14435.  But reading the docs (there is a section in there which is useful to 
read):
In addition, the prefix is used in an unusual way in finding the directories to search for header files. For 
each of the standard directories whose name normally begins with /usr/local/lib/gcc (more precisely, 
with the value of GCC_INCLUDE_DIR), GCC tries replacing that beginning with the specified prefix to 
produce an alternate directory name. Thus, with -Bfoo/, GCC will search foo/bar where it would 
normally search /usr/local/lib/bar. These alternate directories are searched first; the standard 
directories come next. 
Comment 3 Bryan Henderson 2005-02-09 19:43:06 UTC
Subject: Re:  GCC_EXEC_PREFIX used wrong

I don't see the relevance of that paragraph to either of the problem
reports, since there is no search for header files involved.

I don't know anything about the Gcc bug fixing process, but I see that
PR 14435 is 11 months old.  Has anything been changed because of it?  Will
it be?

If code or doc needs to be written, I'd be happy to do it, but if
someone else has to figure out what GCC_EXEC_PREFIX should do, that
would be premature.

Comment 4 Martin Sebor 2020-04-13 20:10:15 UTC
I this (still) a problem today (if so, let's confirm it), otherwise let's resolve it one way or the other.
Comment 5 Bryan Henderson 2020-04-15 03:51:37 UTC
A quick check of the latest manual shows the same description, and a quick strace of GCC 6.3 shows the same behavior, so my guess is no one has touched this area.