Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 217852 - _gcc-install-dir() in toolchain-funcs.eclass is not language-safe
Summary: _gcc-install-dir() in toolchain-funcs.eclass is not language-safe
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Eclasses (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Gentoo Toolchain Maintainers
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-04-15 20:14 UTC by Xake
Modified: 2008-04-16 14:17 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Xake 2008-04-15 20:14:02 UTC
This function does not find what it awk's for if the gcc-output is localized.

I do not really know if that many people that does not use kevquinns overlay has got bitten by this yet, but this is the reason why "filter-flags -fPIE" broke for a lot of us using it.


Proposed fix:
_gcc-install-dir() {
-        echo "$($(tc-getCC) -print-search-dirs 2> /dev/null |\
+        echo "$(LC_ALL="C" $(tc-getCC) -print-search-dirs 2> /dev/null |\
                awk '$1=="install:" {print $2}')"
Comment 1 Xake 2008-04-16 07:06:43 UTC
Nope, it is not only kevquinns overlay that got this issue.

I will leave this as "RESOLVE LATER" becouse I think only hardened uses function '_gcc-install-dir()' and as there is no hardened gcc-4 in portage user of portages toolchain will not get bitten by this currently.

BUT this is breakage that exist in portage/eclass/toolchain-funcs.eclass and that is that it does not respect localization (in this case always expect "install:" in the output to be "install:").

Why people in kevquinns overlay got bitten by this is becouse gcc-4 has not the same output as gcc-3 whith at least LC_ALL="sv_SE" (have checked with LC_ALL="C" and that output is the same for both versions) as shown here (output of intrest prefixed with "@@"):

gcc-4 from unchanged stage3-x86 2008_beta:
# gcc -print-search-dirs
@@installation: /usr/lib/gcc/i486-pc-linux-gnu/4.1.2/
program: =/usr/libexec/gcc/i486-pc-linux-gnu/4.1.2/:/usr/libexec/gcc/i486-pc-linux-gnu/4.1.2/:/usr/libexec/gcc/i486-pc-linux-gnu/:/usr/lib/gcc/i486-pc-linux-gnu/4.1.2/:/usr/lib/gcc/i486-pc-linux-gnu/:/usr/libexec/gcc/i486-pc-linux-gnu/4.1.2/:/usr/libexec/gcc/i486-pc-linux-gnu/:/usr/lib/gcc/i486-pc-linux-gnu/4.1.2/:/usr/lib/gcc/i486-pc-linux-gnu/:/usr/lib/gcc/i486-pc-linux-gnu/4.1.2/../../../../i486-pc-linux-gnu/bin/i486-pc-linux-gnu/4.1.2/:/usr/lib/gcc/i486-pc-linux-gnu/4.1.2/../../../../i486-pc-linux-gnu/bin/
bibliotek: =/usr/lib/gcc/i486-pc-linux-gnu/4.1.2/:/usr/lib/gcc/i486-pc-linux-gnu/4.1.2/:/usr/lib/gcc/i486-pc-linux-gnu/4.1.2/../../../../i486-pc-linux-gnu/lib/i486-pc-linux-gnu/4.1.2/:/usr/lib/gcc/i486-pc-linux-gnu/4.1.2/../../../../i486-pc-linux-gnu/lib/:/usr/lib/gcc/i486-pc-linux-gnu/4.1.2/../../../i486-pc-linux-gnu/4.1.2/:/usr/lib/gcc/i486-pc-linux-gnu/4.1.2/../../../:/lib/i486-pc-linux-gnu/4.1.2/:/lib/:/usr/lib/i486-pc-linux-gnu/4.1.2/:/usr/lib/

gcc-3.4 from unchanged hardened stage3-i686 2008_beta1:
# gcc -print-search-dirs
@@install: /usr/lib/gcc/i686-pc-linux-gnu/3.4.6/
program: =/usr/libexec/gcc/i686-pc-linux-gnu/3.4.6/:/usr/libexec/gcc/i686-pc-linux-gnu/3.4.6/:/usr/libexec/gcc/i686-pc-linux-gnu/:/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/:/usr/lib/gcc/i686-pc-linux-gnu/:/usr/libexec/gcc/i686-pc-linux-gnu/3.4.6/:/usr/libexec/gcc/i686-pc-linux-gnu/:/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/:/usr/lib/gcc/i686-pc-linux-gnu/:/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../../i686-pc-linux-gnu/bin/i686-pc-linux-gnu/3.4.6/:/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../../i686-pc-linux-gnu/bin/
bibliotek: =/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/:/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/:/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../../i686-pc-linux-gnu/lib/i686-pc-linux-gnu/3.4.6/:/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../../i686-pc-linux-gnu/lib/:/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../i686-pc-linux-gnu/3.4.6/:/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../:/lib/i686-pc-linux-gnu/3.4.6/:/lib/:/usr/lib/i686-pc-linux-gnu/3.4.6/:/usr/lib/
Comment 2 SpanKY gentoo-dev 2008-04-16 14:15:23 UTC
i was looking at toolchain.eclass, not toolchain-funcs.eclass ...