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

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: