return def;
}
-hidden ptrdiff_t __tlsdesc_static(), __tlsdesc_dynamic();
-
static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stride)
{
unsigned char *base = dso->base;
return ret;
}
-hidden void __dl_vseterr(const char *, va_list);
-
static void error(const char *fmt, ...)
{
va_list ap;
#include <features.h>
#include <elf.h>
#include <stdint.h>
+#include <stddef.h>
+#include "libc.h"
#if UINTPTR_MAX == 0xffffffff
typedef Elf32_Ehdr Ehdr;
typedef void (*stage2_func)(unsigned char *, size_t *);
typedef _Noreturn void (*stage3_func)(size_t *);
+hidden void *__dlsym(void *restrict, const char *restrict, void *restrict);
+
+hidden void __dl_seterr(const char *, ...);
+hidden int __dl_invalid_handle(void *);
+hidden void __dl_vseterr(const char *, va_list);
+
+hidden ptrdiff_t __tlsdesc_static(), __tlsdesc_dynamic();
+
#endif
#include <dlfcn.h>
+#include "dynlink.h"
#include "libc.h"
-hidden void __dl_seterr(const char *, ...);
-
static void *stub_dlsym(void *restrict p, const char *restrict s, void *restrict ra)
{
__dl_seterr("Symbol not found: %s", s);
#include <dlfcn.h>
+#include "dynlink.h"
#include "libc.h"
-hidden int __dl_invalid_handle(void *);
-
int dlclose(void *p)
{
return __dl_invalid_handle(p);
#include <stdlib.h>
#include <stdarg.h>
#include "pthread_impl.h"
+#include "dynlink.h"
#include "libc.h"
char *dlerror()
va_end(ap);
}
-hidden int __dl_invalid_handle(void *);
-
static int stub_invalid_handle(void *h)
{
__dl_seterr("Invalid library handle %p", (void *)h);
#define _GNU_SOURCE
#include <dlfcn.h>
+#include "dynlink.h"
#include "libc.h"
-hidden int __dl_invalid_handle(void *);
-
-hidden void __dl_seterr(const char *, ...);
-
int dlinfo(void *dso, int req, void *res)
{
if (__dl_invalid_handle(dso)) return -1;
#include <dlfcn.h>
+#include "dynlink.h"
#include "libc.h"
-hidden void __dl_seterr(const char *, ...);
-
static void *stub_dlopen(const char *file, int mode)
{
__dl_seterr("Dynamic loading not supported");
#include <dlfcn.h>
-
-void *__dlsym(void *restrict, const char *restrict, void *restrict);
+#include "dynlink.h"
void *dlsym(void *restrict p, const char *restrict s)
{
#include <stddef.h>
+#include <dynlink.h>
#include "libc.h"
-hidden ptrdiff_t __tlsdesc_static(), __tlsdesc_dynamic();
-
ptrdiff_t __tlsdesc_static()
{
return 0;