blob: 3a32fdd3b71fa9c1eb3739038db157e20baa3790 [file] [log] [blame]
Elliott Hughes13da6002025-02-03 10:42:13 -08001// Copyright (C) 2017 The Android Open Source Project
2// SPDX-License-Identifier: BSD-2-Clause
Elliott Hughes21b56eb2017-10-20 17:57:17 -07003
4#include <dlfcn.h>
5
6#include "header_checks.h"
7
8static void dlfcn_h() {
9 MACRO(RTLD_LAZY);
10 MACRO(RTLD_NOW);
11 MACRO(RTLD_GLOBAL);
12 MACRO(RTLD_LOCAL);
13
Elliott Hughesf4d57ac2025-01-28 14:22:12 -080014#if !defined(__GLIBC__) // Our glibc is too old.
15 TYPE(Dl_info);
16 STRUCT_MEMBER(Dl_info, const char*, dli_fname);
17 STRUCT_MEMBER(Dl_info, void*, dli_fbase);
18 STRUCT_MEMBER(Dl_info, const char*, dli_sname);
19 STRUCT_MEMBER(Dl_info, void*, dli_saddr);
20#endif
21
22#if !defined(__GLIBC__) // Our glibc is too old.
23 FUNCTION(dladdr, int (*f)(const void*, Dl_info*));
24#endif
Elliott Hughes21b56eb2017-10-20 17:57:17 -070025 FUNCTION(dlclose, int (*f)(void*));
26 FUNCTION(dlerror, char* (*f)(void));
27 FUNCTION(dlopen, void* (*f)(const char*, int));
28 FUNCTION(dlsym, void* (*f)(void*, const char*));
29}