In article <3991194news.pl@xxxxxxxxxxxxxxxxxxxxxxxxx>
kono@xxxxxxxxxxxxxxxxx (Shinji KONO) writes:
> $BIaDL$O!"(Bthread local $B$JNN0h$K(Berrno$B$KAjEv$9$k$b$N$r:n$k(B
> $B$H;W$&!#(B
$B$O$$!#IaDL!"(Berrno $B$O!"(BTSD (Thread Specific Data) $B$G$9!#(BLinux
$B$G$b(B Solaris $B$G$b!#(BTSD $B$H$$$&$H!"(Bpthread_getspecific() $B$H(B
$B$9$k$N$,$=$&$J$s$@$1$I!"(Berrno $B$@$1$OFCJL07$$$N(B TSD $B$G$9!#(B
$B$?$H$($P!"$3$s$J%W%m%0%i%`$N>l9g!"(B
------------------------------------------------------------
% cat errno.c
#include <errno.h>
main()
{
printf("%d\n",errno);
}
------------------------------------------------------------
Linux $B$@$H!"$3$s$J46$8!#(B
------------------------------------------------------------
% gcc -E errno.c | sed -e '/#/d' -e '/^[ ]*$/d'
extern int *__errno_location (void) __attribute__ ((__const__));
main()
{
printf("%d\n",(*__errno_location ()));
}
%
------------------------------------------------------------
$B4X?t(B __errno_location() $B$,(B TSD $B$NHVCO$rJV$7$^$9!#(B
$B$-$C$H%f!<%6%l%Y%k$N%9%l%C%I9=B$BN$N$I$3$+$G$7$g$&!#(B
Solaris $B$@$H!"$3$s$J46$8!#(B
------------------------------------------------------------
% gcc -E errno.c | sed -e '/#/d' -e '/^[ ]*$/d'
extern int errno;
main()
{
printf("%d\n",errno);
}
% gcc -D_REENTRANT -E errno.c | sed -e '/#/d' -e '/^[ ]*$/d'
extern int *___errno();
main()
{
printf("%d\n",(*(___errno())) );
}
%
------------------------------------------------------------
Solaris $B$@$H!"(B-D_REENTRANT $B$rIU$1$l$P!"%^%k%A%9%l%C%IBP1~$K(B
$B$J$j$^$9$,!"IU$1$J$$$H@NIw$G$9!#(B
$B$D$$$G$K!"(BMacOSX$B!#(B
------------------------------------------------------------
% gcc -E errno.c | sed -e '/#/d' -e '/^[ ]*$/d'
extern int * __error (void);
main()
{
printf("%d\n",(*__error()));
}
%
------------------------------------------------------------
> Subject: Re: Incorrectly built binary which accesses errno or h_errno directly. Needs to be fixed. $B$r>C$9$K(B $B$O(B?
$B$3$N%a%C%;!<%8!"(B__errno() $B$,EG$$$F$$$k$s$G$9$+$M!#F0E*%j%s%/(B
$B$N%j%s%+$+$J$"!#(B
Linux $B$N(B Pthread $B$N<BAu$b!"$$$m$$$m$b$a$F$F!"7k6I!":#$I$&$J$C(B
$B$F$$$k$N$+NI$/J,$+$i$J$$$1$I!"(BPthread $B$N0[$J$k<BAu$r:.$<$?$H(B
$B$$$&$3$H$J$s$G$9$+$M!#(Bstdout $B$K%(%i!<EG$/$N$O$?$7$+$K$*$+$7$$!#(B
$B!@!@!!?7>k!!Lw!!!J$7$s$8$g$&!!$d$9$7!K!!!@!@(B
$B!@!@!!C^GHBg3X!!EE;R!&>pJs!!!!!!!!!!!!!!!@!@(B
Follow-Ups: References:
- Prev by Date: [fol] Re: Incorrectly built binary which accesses errno or h_errno directly. Needs to be fixed. を消すに は?
- Next by Date: [fol] Re: Incorrectly built binary which accesses errno or h_errno directly. Needs to be fixed. を消すに は?
- Previous by thread: [fol] Re: Incorrectly built binary which accesses errno or h_errno directly. Needs to be fixed. を消すに は?
- Next by thread: [fol] Re: Incorrectly built binary which accesses errno or h_errno directly. Needs to be fixed. を消すに は?
- Indexes:[Main][Thread]