ladybird/Userland/Libraries/LibC/bits/dlfcn_integration.h
Fabian Dellwing 36a26d7fa8 Userland: Fix wrong signature of dladdr
This function is supposed to take a `const void *addr` as first
parameter, but we took a `void *addr`.

https://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/baselib-dladdr-3.html
2023-05-05 02:19:05 +02:00

40 lines
1 KiB
C

/*
* Copyright (c) 2021, Gunnar Beutner <gunnar@beutner.name>
* Copyright (c) 2022, the SerenityOS developers.
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/DeprecatedString.h>
#include <AK/Result.h>
struct DlErrorMessage {
DlErrorMessage(DeprecatedString&& other)
: text(move(other))
{
}
// The virtual destructor is required because we're passing this
// struct to the dynamic loader - whose operator delete differs
// from the one in libc.so
virtual ~DlErrorMessage() = default;
DeprecatedString text;
};
struct __Dl_info;
typedef struct __Dl_info Dl_info;
typedef Result<void, DlErrorMessage> (*DlCloseFunction)(void*);
typedef Result<void*, DlErrorMessage> (*DlOpenFunction)(char const*, int);
typedef Result<void*, DlErrorMessage> (*DlSymFunction)(void*, char const*);
typedef Result<void, DlErrorMessage> (*DlAddrFunction)(void const*, Dl_info*);
extern "C" {
extern DlCloseFunction __dlclose;
extern DlOpenFunction __dlopen;
extern DlSymFunction __dlsym;
extern DlAddrFunction __dladdr;
}