From 160a9278c9b7837423a4440f8fd8d42859752871 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sun, 16 Nov 2025 19:13:35 +0200 Subject: [PATCH] LibC: Fix RTLD_* definitions --- userspace/libraries/LibC/include/dlfcn.h | 11 +++++++---- userspace/programs/DynamicLoader/main.cpp | 6 ++++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/userspace/libraries/LibC/include/dlfcn.h b/userspace/libraries/LibC/include/dlfcn.h index 9522ecba..efc7da73 100644 --- a/userspace/libraries/LibC/include/dlfcn.h +++ b/userspace/libraries/LibC/include/dlfcn.h @@ -7,10 +7,13 @@ __BEGIN_DECLS -#define RTLD_LAZY 1 -#define RTLD_NOW 2 -#define RTLD_GLOBAL 3 -#define RTLD_LOCAL 4 +#define RTLD_LAZY 0x0 +#define RTLD_NOW 0x1 +#define RTLD_GLOBAL 0x0 +#define RTLD_LOCAL 0x2 + +#define _RTLD_LAZY_NOW_MASK 0x1 +#define _RTLD_GLOBAL_LOCAL_MASK 0x2 #define RTLD_NEXT ((void*)-1) #define RTLD_DEFAULT ((void*) 0) diff --git a/userspace/programs/DynamicLoader/main.cpp b/userspace/programs/DynamicLoader/main.cpp index fcf11281..26b09bfc 100644 --- a/userspace/programs/DynamicLoader/main.cpp +++ b/userspace/programs/DynamicLoader/main.cpp @@ -1506,9 +1506,11 @@ char* __dlerror(void) void* __dlopen(const char* file, int mode) { - const bool lazy = !(mode & RTLD_NOW); + const bool lazy = (mode & _RTLD_LAZY_NOW_MASK) == RTLD_LAZY; + const bool local = (mode & _RTLD_GLOBAL_LOCAL_MASK) == RTLD_LOCAL; - // FIXME: RTLD_{LOCAL,GLOBAL} + if (local) + print(STDDBG_FILENO, "local dlopen is not supported, loading as global\n"); if (file == nullptr) return &s_loaded_files[0];