[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: dlerror sets errno to ENOSYS
From: |
Diego Nieto Cid |
Subject: |
Re: dlerror sets errno to ENOSYS |
Date: |
Mon, 7 Mar 2016 20:45:59 -0300 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
Hi
Here's another iteration of the patch. __libc_getspecific now
considers the case were pthread is not loaded except when the
containing file is being compiled for the loader.
The test case, when built without pthread, now works
approprietly:
diego@hird:~/src/test-cases/dlopen-error$ ./main.nopthread
0x1271b30
shobj: (nil)
dlerror: ./non-existent.so: cannot open shared object file: No such file or
directory
errno1: [40000002] No such file or directory
errno2: [40000002] No such file or directory
However, when linked with it, dlerror still modifies the errno
variable:
diego@hird:~/src/test-cases/dlopen-error$ ./main.pthread
0x128d688
shobj: (nil)
dlerror: ./non-existent.so: cannot open shared object file: No such file or
directory
errno1: [40000002] No such file or directory
errno2: [4000004e] Function not implemented
And breaking with gdb in cthread_getspecific I can confirm the
implementation provided by pthread is not being called:
diego@hird:~/src/test-cases/dlopen-error$ gdb ./main.pthread
GNU gdb (Debian 7.10-1+b1) 7.10
...
Reading symbols from ./main.pthread...done.
(gdb) break cthread_getspecific
Function "cthread_getspecific" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (cthread_getspecific) pending.
(gdb) run
Starting program: /home/diego/src/test-cases/dlopen-error/main.pthread
0x128d688
[New Thread 17594.5]
Breakpoint 1, cthread_getspecific (key=-1, pval=0x2003c9c)
at ../sysdeps/mach/hurd/cthreads.c:42
42 *pval = NULL;
(gdb) bt
#0 cthread_getspecific (key=-1, pval=0x2003c9c)
at ../sysdeps/mach/hurd/cthreads.c:42
#1 0x0109068a in __libc_getspecific (key=-1)
at ../sysdeps/mach/hurd/cthreads.c:69
#2 0x01034218 in __dlerror () at dlerror.c:74
#3 0x080486ae in main (argc=1, argv=0x2003d84) at main.c:17
(gdb)
I'm not sure what's going on. I've made some simple tests trying
to imitate the setup but weak symbols were correctly overriden.
Regards,
Diego
unsubmitted-conditional-key-fns.diff
Description: Text Data