diff options
| author | Elliott Hughes <enh@google.com> | 2012-11-01 22:59:19 -0700 |
|---|---|---|
| committer | Elliott Hughes <enh@google.com> | 2012-11-01 22:59:19 -0700 |
| commit | 6971fe4ca52ebdaa85ba676a044412b01d2ef1bf (patch) | |
| tree | 0d2b4800e7b56894d7b46bb9cd9c57809f59804a /linker/linker.cpp | |
| parent | e3c7b5192e65eeb0bd90bf884d3435ed9adfad0e (diff) | |
| download | bionic-6971fe4ca52ebdaa85ba676a044412b01d2ef1bf.zip bionic-6971fe4ca52ebdaa85ba676a044412b01d2ef1bf.tar.gz bionic-6971fe4ca52ebdaa85ba676a044412b01d2ef1bf.tar.bz2 | |
Allow dlopen("egl/blah.so").
NVIDIA binary blobs construct strings to pass to dlopen(3) that
contain '/' but require that we fall back to LD_LIBRARY_PATH.
Change-Id: Iad831899986baace6962f4b335eeb288250a1e22
Diffstat (limited to 'linker/linker.cpp')
| -rw-r--r-- | linker/linker.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/linker/linker.cpp b/linker/linker.cpp index 99cd92b..40f29a2 100644 --- a/linker/linker.cpp +++ b/linker/linker.cpp @@ -634,7 +634,11 @@ static int open_library(const char* name) { // If the name contains a slash, we should attempt to open it directly and not search the paths. if (strchr(name, '/') != NULL) { - return TEMP_FAILURE_RETRY(open(name, O_RDONLY | O_CLOEXEC)); + int fd = TEMP_FAILURE_RETRY(open(name, O_RDONLY | O_CLOEXEC)); + if (fd != -1) { + return fd; + } + // ...but nvidia binary blobs (at least) rely on this behavior, so fall through for now. } // Otherwise we try LD_LIBRARY_PATH first, and fall back to the built-in well known paths. |
