diff options
author | Eric Anholt <[email protected]> | 2014-01-30 10:30:57 -0800 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2014-02-01 10:08:36 -0800 |
commit | 63546b8e3d217d81a67f6f291fab48b3f381a9ca (patch) | |
tree | 6d4b746327620ef1e78dad780d55f1fd3fe8593a /src/loader/loader.c | |
parent | dc00ec154bda15672861d1b508aa4aacdb306f68 (diff) |
dri: Also support the loader with libudev.so.0.
As far as I know, this should be safe. If not, we have to decide whether
to have variable lookup of the functions, or just drop support for .so.0
(which is a year and a half old it looks like)
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=74127
Reviewed-by: Matt Turner <[email protected]>
Diffstat (limited to 'src/loader/loader.c')
-rw-r--r-- | src/loader/loader.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/loader/loader.c b/src/loader/loader.c index 626046a232b..5d258994308 100644 --- a/src/loader/loader.c +++ b/src/loader/loader.c @@ -102,6 +102,16 @@ udev_dlopen_handle(void) { if (!udev_handle) { udev_handle = dlopen("libudev.so.1", RTLD_LOCAL | RTLD_LAZY); + + if (!udev_handle) { + /* libudev.so.1 changed the return types of the two unref functions + * from voids to pointers. We don't use those return values, and the + * only ABI I've heard that cares about this kind of change (calling + * a function with a void * return that actually only returns void) + * might be ia64. + */ + udev_handle = dlopen("libudev.so.0", RTLD_LOCAL | RTLD_LAZY); + } } return udev_handle; |