This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug dynamic-link/14370] ld.so crashes on mismatched TLS/non-TLS symbols
- From: "hjl.tools at gmail dot com" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sources dot redhat dot com
- Date: Tue, 04 Sep 2012 21:32:31 +0000
- Subject: [Bug dynamic-link/14370] ld.so crashes on mismatched TLS/non-TLS symbols
- Auto-submitted: auto-generated
- References: <bug-14370-131@http.sourceware.org/bugzilla/>
http://sourceware.org/bugzilla/show_bug.cgi?id=14370
--- Comment #17 from H.J. Lu <hjl.tools at gmail dot com> 2012-09-04 21:32:31 UTC ---
Created attachment 6624
--> http://sourceware.org/bugzilla/attachment.cgi?id=6624
A patch
With the patch, I got
[hjl@gnu-6 pr14370]$ LD_TRACE_LOADED_OBJECTS=1 LD_WARN=yes LD_BIND_NOW=yes
LD_LIBRARY_VERSION=6 ./ld.so ./pr14370.so
linux-gate.so.1 (0xf7ffd000)
libsds_server.so => not found
libxtor_threads_boost.so => not found
libaldecpli.so => not found
libsvdpi_exp.so => not found
libstdc++.so.6 => /lib/libstdc++.so.6 (0xf7e57000)
libsce_mi.so => not found
libScemiDpiBridgeApi.so => not found
libm.so.6 => /lib/libm.so.6 (0xf7e2c000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xf7e0f000)
libc.so.6 => /lib/libc.so.6 (0xf7c5c000)
./ld.so (0x56555000)
TLS definition `errno' mismatches non-TLS reference in ./pr14370.so
(/lib/libm.so.6)
undefined symbol: svSetScope (./pr14370.so)
undefined symbol: svGetScope (./pr14370.so)
undefined symbol: svGetCallerInfo (./pr14370.so)
undefined symbol: svGetNameFromScope (./pr14370.so)
undefined symbol: svGetScopeFromName (./pr14370.so)
undefined symbol: DpiApiSetCallerInfo (./pr14370.so)
undefined symbol: DpiApiSvSetScope (./pr14370.so)
undefined symbol: CloseServerSession (./pr14370.so)
undefined symbol: DpiApiAddImportXtor (./pr14370.so)
undefined symbol: DpiApiRegisterSynchronizationEventXtor (./pr14370.so)
undefined symbol: DpiApiSvGetUserData (./pr14370.so)
undefined symbol: _ZN11xtorThreads9PostEventEPv (./pr14370.so)
undefined symbol: DpiApiRegisterGroupingImportXtor (./pr14370.so)
undefined symbol: _ZN11xtorThreads13InitThreadLibENS_8thread_tE
(./pr14370.so)
undefined symbol: DpiApiSvGetScopeFromName (./pr14370.so)
undefined symbol: DpiApiSetSvScalarVal (./pr14370.so)
undefined symbol: DpiApiExitHardwareSide (./pr14370.so)
undefined symbol: DpiApiGetSvBitVecVal (./pr14370.so)
undefined symbol: DpiApiGetSvScalarVal (./pr14370.so)
undefined symbol: DpiApiSvGetCallerInfo (./pr14370.so)
undefined symbol: DpiApiEnterHardwareSide (./pr14370.so)
undefined symbol: DpiApiInitialize (./pr14370.so)
undefined symbol: InitialiseDebugAndTrace (./pr14370.so)
undefined symbol: StopConnectionManager (./pr14370.so)
undefined symbol: _ZN11xtorThreads11CreateEventEPPvNS_8thread_tE
(./pr14370.so)
undefined symbol: StartConnectionManager (./pr14370.so)
undefined symbol: DpiApiSvPutUserData (./pr14370.so)
undefined symbol: DpiApiRunExportXtor (./pr14370.so)
undefined symbol: DpiApiAddScopePath (./pr14370.so)
undefined symbol: DpiApiRegisterExportXtor (./pr14370.so)
undefined symbol: DpiApiSvGetNameFromScope (./pr14370.so)
undefined symbol: DpiApiSvGetScope (./pr14370.so)
undefined symbol: OpenServerSession (./pr14370.so)
undefined symbol: DpiApiRegisterSynchronizationXtor (./pr14370.so)
undefined symbol: _ZN11xtorThreads9WaitEventEPv (./pr14370.so)
undefined symbol: DpiApiSetSvBitVecVal (./pr14370.so)
[hjl@gnu-6 pr14370]$ cat x.c
#if 0
#include <errno.h>
#else
int errno = 3;
#endif
int
bar (void)
{
errno = 4;
return errno;
}
[hjl@gnu-6 pr14370]$ cat main.c
#include <stdio.h>
#include <dlfcn.h>
int
main ()
{
void *handle;
int (*func)();
handle = dlopen ("./libfoo.so", RTLD_LAZY);
if (!handle)
{
fprintf (stderr, "%s\n", dlerror());
return 1;
}
func = dlsym (handle, "bar");
if (func == NULL)
{
fprintf (stderr, "%s\n", dlerror());
return 1;
}
printf ("errno: %d\n", func ());
dlclose (handle);
return 0;
}
[hjl@gnu-6 pr14370]$ make run.dynamic
gcc -m32 -c -o main.o main.c
gcc -m32 -L. -nostdlib -nostartfiles -o dynamic \
-Wl,-dynamic-linker=/export/build/gnu/glibc-32bit/build-i686-linux/elf/ld-linux.so.2
\
-Wl,-z,nocombreloc \
/export/build/gnu/glibc-32bit/build-i686-linux/csu/crt1.o
/export/build/gnu/glibc-32bit/build-i686-linux/csu/crti.o \
`gcc -m32 --print-file-name=crtbegin.o` \
main.o /export/build/gnu/glibc-32bit/build-i686-linux/dlfcn/libdl.so
-Wl,-rpath,. \
-Wl,-rpath=/export/build/gnu/glibc-32bit/build-i686-linux:/export/build/gnu/glibc-32bit/build-i686-linux/dlfcn:/export/build/gnu/glibc-32bit/build-i686-linux/rt:/export/build/gnu/glibc-32bit/build-i686-linux/nptl
\
/export/build/gnu/glibc-32bit/build-i686-linux/elf/ld-linux.so.2 \
/export/build/gnu/glibc-32bit/build-i686-linux/libc.so.6
/export/build/gnu/glibc-32bit/build-i686-linux/libc_nonshared.a \
-lgcc -lgcc_eh `gcc -m32 --print-file-name=crtend.o` \
/export/build/gnu/glibc-32bit/build-i686-linux/csu/crtn.o
gcc -m32 -c -o x.o x.c
./ld -m elf_i386 -shared -o libfoo.so x.o
./dynamic
./libfoo.so: non-TLS definition `errno' mismatches TLS reference in
/export/build/gnu/glibc-32bit/build-i686-linux/libc.so.6
make: *** [run.dynamic] Error 1
[hjl@gnu-6 pr14370]$
Here are before and after timings of "make all" and "make check".
1. On x32;
Before:
598.89user 101.05system 2:26.71elapsed 477%CPU (0avgtext+0avgdata
113240maxresident)k
986.60user 556.24system 22:57.75elapsed 111%CPU (0avgtext+0avgdata
1048804maxresident)k
After:
608.99user 99.81system 2:17.10elapsed 516%CPU (0avgtext+0avgdata
113240maxresident)k
988.58user 553.93system 22:56.45elapsed 112%CPU (0avgtext+0avgdata
1048832maxresident)k
2. On x86-64:
Before
526.71user 93.03system 2:15.57elapsed 457%CPU (0avgtext+0avgdata
116028maxresident)k
974.58user 544.92system 23:13.73elapsed 109%CPU (0avgtext+0avgdata
1048760maxresident)k
After:
533.58user 91.94system 2:05.10elapsed 500%CPU (0avgtext+0avgdata
116028maxresident)k
977.58user 547.24system 23:05.13elapsed 110%CPU (0avgtext+0avgdata
1048920maxresident)k
3. On ia32,
Before
458.18user 84.22system 1:59.10elapsed 455%CPU (0avgtext+0avgdata
119016maxresident)k
921.42user 522.70system 21:57.64elapsed 109%CPU (0avgtext+0avgdata
1048888maxresident)k
After
465.45user 85.70system 1:53.79elapsed 484%CPU (0avgtext+0avgdata
119016maxresident)k
920.35user 525.40system 21:57.62elapsed 109%CPU (0avgtext+0avgdata
1048904maxresident)k
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.