[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
documentation / behavior discrepancy with lt_dlopenext
From: |
Andy Wingo |
Subject: |
documentation / behavior discrepancy with lt_dlopenext |
Date: |
Wed, 30 Mar 2011 19:19:18 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) |
Hello list,
The ltdl docs say:
— Function: lt_dlhandle lt_dlopenext (const char *filename)
The same as lt_dlopen, except that it tries to append different file
name extensions to the file name. If the file with the file name
FILENAME cannot be found libltdl tries to append the following
extensions: [...]
However, there are cases in which lt_dlopenext does not look for a bare
filename. Specifically the code does:
if (!filename
|| !advise
|| !advise->try_ext
|| has_library_ext (filename))
try the bare file
else if (filename && *filename)
try extensions...
So, we see that if has_library_ext is FALSE, we don't try the bare
file. But that check fails for full paths, like
"/usr/lib64/libSDL-1.2.so.0.11.3".
$ strace guile -c '(dynamic-link "/usr/lib64/libSDL-1.2.so.0.11.3")'
[...]
open("/usr/lib64/libSDL-1.2.so.0.11.3.la", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/usr/lib64/libSDL-1.2.so.0.11.3.so", O_RDONLY) = -1 ENOENT (No such
file or directory)
[...]
The documentation and the code do not agree. I propose that we fix the
code, to add another `stat' (I know) -- of the bare file name, before
trying to add extensions, in the dlopenext case.
What do you think?
Andy
--
http://wingolog.org/
- documentation / behavior discrepancy with lt_dlopenext,
Andy Wingo <=