Ticket #2114 (new defect)

Opened 1 year ago

Last modified 1 month ago

gcc -print-search-dirs gives directories outside /tools directory

Reported by: mfonseca Assigned to: lfs-book@linuxfromscratch.org
Priority: normal Milestone: 7.0
Component: Book Version: 6.3
Severity: normal Keywords:
Cc:

Description

While creating a x86 toolchain using lfs as a guideline, I noticed that a "gcc -print-search-dirs" on my temporary toolchain printed out some undesirable results. It contained references to /usr/... and others that I had assumed was handled by the gcc 4.1.2 spec patch.

I dug in a little and found that gcc/gcc.c still had explicit hardcoded values for standard_exec_prefix_1 and standard_exec_prefix_2. Additionally STANDARD_STARTFILE_PREFIX_1 and STANDARD_STARTFILE_PREFIX_2 were also hardcoded although these were predicated on some conditional. I found changing these references to "" removed the references to outside the /tool directory.

Change History

10/05/08 14:35:02 changed by bdubbs@linuxfromscratch.org

  • milestone changed from 7.0 to 6.4.

10/08/08 18:42:37 changed by dj@linuxfromscratch.org

  • owner changed from lfs-book@linuxfromscratch.org to dj@linuxfromscratch.org.
  • status changed from new to assigned.

root:/sources# /tools/bin/gcc --print-search-dirs install: /tools/lib/gcc/i686-pc-linux-gnu/4.3.2/ programs: =/tools/libexec/gcc/i686-pc-linux-gnu/4.3.2/:/tools/libexec/gcc/i686-pc-linux-gnu/4.3.2/:/tools/libexec/gcc/i686-pc-linux-gnu/:/tools/lib/gcc/i686-pc-linux-gnu/4.3.2/:/tools/lib/gcc/i686-pc-linux-gnu/:/usr/libexec/gcc/i686-pc-linux-gnu/4.3.2/:/usr/libexec/gcc/i686-pc-linux-gnu/:/usr/lib/gcc/i686-pc-linux-gnu/4.3.2/:/usr/lib/gcc/i686-pc-linux-gnu/:/tools/lib/gcc/i686-pc-linux-gnu/4.3.2/../../../../i686-pc-linux-gnu/bin/i686-pc-linux-gnu/4.3.2/:/tools/lib/gcc/i686-pc-linux-gnu/4.3.2/../../../../i686-pc-linux-gnu/bin/ libraries: =/tools/lib/gcc/i686-pc-linux-gnu/4.3.2/:/usr/lib/gcc/i686-pc-linux-gnu/4.3.2/:/tools/lib/gcc/i686-pc-linux-gnu/4.3.2/../../../../i686-pc-linux-gnu/lib/i686-pc-linux-gnu/4.3.2/:/tools/lib/gcc/i686-pc-linux-gnu/4.3.2/../../../../i686-pc-linux-gnu/lib/:/usr/lib/i686-pc-linux-gnu/4.3.2/:/usr/lib/ root:/sources#

Confirmed.

If the OP's analysis is correct, this will be the fix:

sed -i -e 's@/usr/libexec/gcc@@' \
       -e 's@/usr/lib/gcc@@' \
       gcc/gcc.c

I'll drop it in tonight and report back tomorrow.

10/11/08 21:40:14 changed by dj@linuxfromscratch.org

Okay..not enough.

[dj@name25 BOOK]# /tools/bin/gcc --print-search-dirs install: /media/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.3.2/ programs: =/media/lfs/tools/bin/../libexec/gcc/i686-pc-linux-gnu/4.3.2/:/media/lfs/tools/bin/../libexec/gcc/:/i686-pc-linux-gnu/4.3.2/:/i686-pc-linux-gnu/:/i686-pc-linux-gnu/4.3.2/:/i686-pc-linux-gnu/:/media/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.3.2/../../../../i686-pc-linux-gnu/bin/i686-pc-linux-gnu/4.3.2/:/media/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.3.2/../../../../i686-pc-linux-gnu/bin/ libraries: =/media/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.3.2/:/media/lfs/tools/bin/../lib/gcc/:/i686-pc-linux-gnu/4.3.2/:/media/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.3.2/../../../../i686-pc-linux-gnu/lib/i686-pc-linux-gnu/4.3.2/:/media/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.3.2/../../../../i686-pc-linux-gnu/lib/:/media/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.3.2/../../../i686-pc-linux-gnu/4.3.2/:/media/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.3.2/../../../:/lib/i686-pc-linux-gnu/4.3.2/:/lib/:/usr/lib/i686-pc-linux-gnu/4.3.2/:/usr/lib/

To 'fix' all is:

sed -i -e 's@/usr/libexec/gcc@/tools/libexec/gcc@' \
       -e 's@/usr/lib/gcc@/tools/lib/gcc@' \
       -e 's@"/usr/lib/"@"/tools/lib/"@' \
       -e 's@"/lib/"@"/tools/lib/"@' \
       gcc/gcc.c

10/12/08 13:12:08 changed by dj@linuxfromscratch.org

The above changes give this:

[dj@name25 source-archive]# /tools/bin/gcc --print-search-dirs install: /media/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.3.2/ programs: =/media/lfs/tools/bin/../libexec/gcc/i686-pc-linux-gnu/4.3.2/:/media/lfs/tools/bin/../libexec/gcc/:/i686-pc-linux-gnu/4.3.2/:/i686-pc-linux-gnu/:/i686-pc-linux-gnu/4.3.2/:/i686-pc-linux-gnu/:/media/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.3.2/../../../../i686-pc-linux-gnu/bin/i686-pc-linux-gnu/4.3.2/:/media/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.3.2/../../../../i686-pc-linux-gnu/bin/ libraries: =/media/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.3.2/:/media/lfs/tools/bin/../lib/gcc/:/i686-pc-linux-gnu/4.3.2/:/media/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.3.2/../../../../i686-pc-linux-gnu/lib/i686-pc-linux-gnu/4.3.2/:/media/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.3.2/../../../../i686-pc-linux-gnu/lib/:/usr/lib/i686-pc-linux-gnu/4.3.2/:/usr/lib/

It is not only coming from gcc/gcc.c.

10/20/08 23:40:00 changed by dj@linuxfromscratch.org

  • owner changed from dj@linuxfromscratch.org to lfs-book@linuxfromscratch.org.
  • status changed from assigned to new.
  • milestone changed from 6.4 to 7.0.

I'm at a loss for the moment. I'm also concerned about changing too much in our temporary tools this close to release. Pushing it off for 7.0. I'm not sure what the impact is if we adopt the cross-tools method for 7.0. Ideally, it should never get that far, however...