Bug#328183: #328183: no-tls-direct-seg-refs
> > Anyway, look at configure flags for basic libc in debian/sysdeps/i386.mk:
> >
> > libc_extra_config_options = $(extra_config_options) --with-tls --without-__thread
> >
> > It doesn't use TLS internally, there is no .tbss ot .tdata segment in libc.so.
>
> There is:
>
> $ objdump -T libc-2.3.5.so | grep -e "\(tbss\|tdata\)"
> 001315e0 l d .tdata 00000000 .tdata
> 001315e8 l d .tbss 00000000 .tbss
> 00000008 g D .tbss 00000004 GLIBC_PRIVATE errno
> 0000001c g D .tbss 00000004 GLIBC_PRIVATE h_errno
> 00000004 g D .tdata 00000004 GLIBC_PRIVATE __resp
>
> Please also look at how syscall() sets errno:
> 0x000cd863 <syscall+67>: mov %edx,%gs:(%ecx)
It is in optimized one:
Package: libc6-i686
Architecture: i386
Source: glibc
Version: 2.3.5-11
$ objdump -T /lib/tls/i686/cmov/libc-2.3.5.so | grep -e "\(tbss\|tdata\)" | wc
5 33 267
But not in the basic one:
$ dpkg -s libc6
Package: libc6
Architecture: i386
Source: glibc
Version: 2.3.5-11
$ objdump -T /lib/libc-2.3.5.so | grep -e "\(tbss\|tdata\)" | wc
0 0 0
Petr
Reply to: