Bug 234076
Summary: | 'gcc -m32 -print-file-name=include' reports wrong path | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Bernie Innocenti <bernie+fedora> | ||||||
Component: | gcc | Assignee: | Jakub Jelinek <jakub> | ||||||
Status: | CLOSED NOTABUG | QA Contact: | |||||||
Severity: | medium | Docs Contact: | |||||||
Priority: | medium | ||||||||
Version: | rawhide | ||||||||
Target Milestone: | --- | ||||||||
Target Release: | --- | ||||||||
Hardware: | x86_64 | ||||||||
OS: | Linux | ||||||||
Whiteboard: | |||||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||||
Doc Text: | Story Points: | --- | |||||||
Clone Of: | Environment: | ||||||||
Last Closed: | 2007-03-27 19:51:24 UTC | Type: | --- | ||||||
Regression: | --- | Mount Type: | --- | ||||||
Documentation: | --- | CRM: | |||||||
Verified Versions: | Category: | --- | |||||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
Cloudforms Team: | --- | Target Upstream Version: | |||||||
Embargoed: | |||||||||
Attachments: |
|
Description
Bernie Innocenti
2007-03-26 21:31:29 UTC
Can't reproduce: gcc --version; gcc -print-file-name=include; gcc -m32 -print-file-name=include; gcc -print-file-name=include -m32 gcc (GCC) 4.1.2 20070317 (Red Hat 4.1.2-5) Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. /usr/lib/gcc/x86_64-redhat-linux/4.1.2/include /usr/lib/gcc/x86_64-redhat-linux/4.1.2/include /usr/lib/gcc/x86_64-redhat-linux/4.1.2/include (nor can I reproduce this with FC6 or RHEL5 gcc). I'm puzzled... attaching strace output for: gcc -print-file-name=include gcc -m32 -print-file-name=include Created attachment 151071 [details]
output of gcc -m32 -print-file-name=include
Created attachment 151073 [details]
output of strace gcc -print-file-name=include
Diffing the two traces, I see gcc is looking for /usr/lib/gcc/x86_64-redhat-linux/4.1.2/32/include, which doesn't exist. Then it tries all kinds of fancy paths and eventually finds that silly result. You have /lib/../lib/include file or directory, that isn't supposed to exist and in that case it would soon find what you expect. The GCC file search algorithm is quite complicated, but /lib is one of the tool dirs and ../lib is the -m32 on x86_64 multi-os-directory. Not sure if you have /lib as a symlink or have /include file/directory, in any case this isn't a gcc bug. Oh, gosh! The problem is that I really *had* /lib/include in my system since 1999. That's why you couldn't reproduce it. But I'd still consider it a bug: gcc built from svn trunk doesn't fall in the trap. Maybe it's RedHat specific, maybe not. Maybe it has something to do with --prefix=/usr ? I read somewhare that /usr is special in some packages such as glibc because it also implies / as a search path. Yes, --prefix=/usr is special, this is nothing Red Hat specific. I think we can leave this alone, then. For the record, the 4.3 search path appears very different: bender:/# gcc -m32 -print-search-dirs install: /usr/lib/gcc/x86_64-redhat-linux/4.1.2/ programs: =/usr/libexec/gcc/x86_64-redhat-linux/4.1.2/:/usr/libexec/gcc/x86_64-redhat-linux/4.1.2/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/:/usr/libexec/gcc/x86_64-redhat-linux/4.1.2/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../x86_64-redhat-linux/bin/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../x86_64-redhat-linux/bin/ libraries: =/usr/lib/gcc/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../x86_64-redhat-linux/lib/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../x86_64-redhat-linux/lib/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../:/lib/x86_64-redhat-linux/4.1.2/:/lib/:/usr/lib/x86_64-redhat-linux/4.1.2/:/usr/lib/ bender:# /usr/local/src/gcc/x86_64-linux-HEAD-install/bin/gcc -m32 -print-search-dirs install: /usr/local/src/gcc/x86_64-linux-HEAD-install/lib/gcc/x86_64-unknown-linux-gnu/4.3.0/ programs: =/usr/local/src/gcc/x86_64-linux-HEAD-install/libexec/gcc/x86_64-unknown-linux-gnu/4.3.0/:/usr/local/src/gcc/x86_64-linux-HEAD-install/libexec/gcc/x86_64-unknown-linux-gnu/4.3.0/:/usr/local/src/gcc/x86_64-linux-HEAD-install/libexec/gcc/x86_64-unknown-linux-gnu/:/usr/local/src/gcc/x86_64-linux-HEAD-install/lib/gcc/x86_64-unknown-linux-gnu/4.3.0/:/usr/local/src/gcc/x86_64-linux-HEAD-install/lib/gcc/x86_64-unknown-linux-gnu/:/usr/libexec/gcc/x86_64-unknown-linux-gnu/4.3.0/:/usr/libexec/gcc/x86_64-unknown-linux-gnu/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.3.0/:/usr/lib/gcc/x86_64-unknown-linux-gnu/:/usr/local/src/gcc/x86_64-linux-HEAD-install/lib/gcc/x86_64-unknown-linux-gnu/4.3.0/../../../../x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu/4.3.0/:/usr/local/src/gcc/x86_64-linux-HEAD-install/lib/gcc/x86_64-unknown-linux-gnu/4.3.0/../../../../x86_64-unknown-linux-gnu/bin/ libraries: =/usr/local/src/gcc/x86_64-linux-HEAD-install/lib/gcc/x86_64-unknown-linux-gnu/4.3.0/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.3.0/:/usr/local/src/gcc/x86_64-linux-HEAD-install/lib/gcc/x86_64-unknown-linux-gnu/4.3.0/../../../../x86_64-unknown-linux-gnu/lib/x86_64-unknown-linux-gnu/4.3.0/:/usr/local/src/gcc/x86_64-linux-HEAD-install/lib/gcc/x86_64-unknown-linux-gnu/4.3.0/../../../../x86_64-unknown-linux-gnu/lib/../lib/:/usr/local/src/gcc/x86_64-linux-HEAD-install/lib/gcc/x86_64-unknown-linux-gnu/4.3.0/../../../x86_64-unknown-linux-gnu/4.3.0/:/usr/local/src/gcc/x86_64-linux-HEAD-install/lib/gcc/x86_64-unknown-linux-gnu/4.3.0/../../../../lib/:/lib/x86_64-unknown-linux-gnu/4.3.0/:/lib/../lib/:/usr/lib/x86_64-unknown-linux-gnu/4.3.0/:/usr/lib/../lib/:/usr/local/src/gcc/x86_64-linux-HEAD-install/lib/gcc/x86_64-unknown-linux-gnu/4.3.0/../../../../x86_64-unknown-linux-gnu/lib/:/usr/local/src/gcc/x86_64-linux-HEAD-install/lib/gcc/x86_64-unknown-linux-gnu/4.3.0/../../../:/lib/:/usr/lib/ |