[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[fol] Re: Incorrectly built binary which accesses errno or h_errno directly. Needs to be fixed. を消すに は?


kono@xxxxxxxxxxxxxxxxx (Shinji KONO) writes:

> > 最近はgccで、
> >     extern int __thread errno;
> > という表記法がサポートされて、
...
> > ... 従ってライブラリ
> > がグローバルなerrnoを見に行くようにはできなくなった、という事のようで
> > す。
> 
> なるほど、このあたりが元凶なのね。でも、それでも、errno っていう
> 大域ラベルとは干渉しないはずですよね。

extern の errno といえば一意に決まります。__threadがあろうとなかろうと。
プログラムのある場所で
   extern int errno;
と書いて、別の場所で
   extern __thread int errno;
と書くのはエラーです。(まあ、そうなっちゃうでしょうね。)

> > # まあ、「errnoを変数と思っちゃダメ」になってから15年も経つのだから、
> > # いいかげん直ってるだろ、と。
> 
> Linux 的に閉じた話なら、それでもいいんだろうけど... 

いえいえ「errnoを変数と思っちゃダメ」はLinuxと関係ないC言語の話です。
また、glibcでは以前から変数じゃなかったわけです(*__errno_location())。

最近のglibcに限った話でも、glibc (3.2.2以降) を使うシステムなら、Linux
以外でも似た状況だと思いますけど。

> このSynopsys toolって2003年6月の版でも、そうなんで、直す気は
> ないみたいですね。そもそも、この手のCADツールは、専用にSun買
> って動かすのが当り前みたいなところがあるので、Linux 側の対処
> が手薄なのは仕方がない。まだ、動くから許せるってところですね。

へえ。新しいLinuxは全部動かないんですか? RedHat (Fedra) でも?

				前田敦司

$B$3$N>pJs$,$"$J$?$NC5$7$F$$?$b$N$+$I$&$+A*Br$7$F$/$@$5$!#(B
yes/$B$^$5$K$3$l$@!*(B   no/$B0c$&$J$!(B   part/$B0lIt8+$D$+$C$?(B   try/$B$3$l$G;n$7$F$_$k(B

$B$"$J$?$,C5$7$F$$?>pJs$O$I$N$h$&$J$3$H$+!"$4<+M3$K5-F~2<$5$!#FC$K!V$^$5$K$3$l$@!*!W$H8@$&>l9g$O5-F~$r$*4j$$7$^$9!#(B
$BNc(B:$B!VJ#?t$N%^%7%s$+$i(BCATV$B7PM3$G(Bipmasquerade$B$rMxMQ$7$F(BWeb$B$r;2>H$7$?$>l9g$N@_Dj$K$D$$F!W(B
Follow-Ups: References: