aboutsummaryrefslogtreecommitdiffstats
path: root/src/rtld/rtld.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/rtld/rtld.h')
-rw-r--r--src/rtld/rtld.h337
1 files changed, 0 insertions, 337 deletions
diff --git a/src/rtld/rtld.h b/src/rtld/rtld.h
deleted file mode 100644
index 8c6d395..0000000
--- a/src/rtld/rtld.h
+++ /dev/null
@@ -1,337 +0,0 @@
-#ifndef _LD_LIBS_H
-#define _LD_LIBS_H
-
-#include <stdlib.h>
-
-#include "prelinktab.h"
-
-#include <elf.h>
-
-#if !defined (__linux__)
-#define DT_VERSIONTAGNUM 16
-#endif
-
-#define link_map ldlibs_link_map
-
-struct needed_list
-{
- struct dso_list *ent;
- struct needed_list *next;
-};
-
-struct dso_list
-{
- DSO *dso;
- struct link_map *map;
- struct dso_list *next, *prev;
- struct needed_list *needed, *needed_tail;
- const char *name;
- struct dso_list *loader;
- const char *canon_filename;
- int err_no;
-};
-
-/* A data structure for a simple single linked list of strings. */
-struct libname_list
- {
- const char *name; /* Name requested (before search). */
- struct libname_list *next; /* Link to next name for this object. */
- };
-
-struct link_map;
-
-struct r_scope_elem
-{
- struct link_map **r_list;
- unsigned int r_nlist;
-};
-
-struct r_found_version
- {
- const char *name;
- Elf64_Word hash;
-
- int hidden;
- const char *filename;
- };
-
-struct unique_sym_table
- {
- struct unique_sym
- {
- uint32_t hashval;
- const char *name;
- const void *sym;
- const struct link_map *map;
- } *entries;
- size_t size;
- size_t n_elements;
- void (*free) (void *);
- };
-
-extern struct unique_sym_table * _ns_unique_sym_table;
-
-/* The size of entries in .hash. Only Alpha and 64-bit S/390 use 64-bit
- entries; those are not currently supported. */
-typedef uint32_t Elf_Symndx;
-
-/* Mimic libc/include/link.h struct link_map */
-
-struct link_map
- {
- int elfclass;
-
- const char *l_name;
-
- struct libname_list *l_libname;
-
-#undef DT_THISPROCNUM
-#define DT_THISPROCNUM 0
-
- void *l_info[DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGNUM
- + DT_EXTRANUM + DT_VALNUM + DT_ADDRNUM];
-
- /* Array with vesion names. */
- struct r_found_version *l_versions;
- unsigned int l_nversions;
-
- /* Symbol hash table. */
- Elf_Symndx l_nbuckets;
- /* Begin PPC64 workaround */
- void *l_buckets_start;
- void *l_buckets_end;
- /* end workaround */
- Elf32_Word l_gnu_bitmask_idxbits;
- Elf32_Word l_gnu_shift;
- void *l_gnu_bitmask;
- union
- {
- const Elf32_Word *l_gnu_buckets;
- const Elf_Symndx *l_chain;
- };
- union
- {
- const Elf32_Word *l_gnu_chain_zero;
- const Elf_Symndx *l_buckets;
- };
-
- enum /* Where this object came from. */
- {
- lt_executable, /* The main executable program. */
- lt_library, /* Library needed by main executable. */
- lt_loaded /* Extra run-time loaded shared object. */
- } l_type:2;
-
- /* Pointer to the version information if available. */
- Elf64_Versym *l_versyms;
-
- /* Start and finish of memory map for this object. l_map_start
- need not be the same as l_addr. */
- Elf64_Addr l_map_start;
-
- /* A similar array, this time only with the local scope. This is
- used occasionally. */
- struct r_scope_elem *l_local_scope[2];
-
- /* Thread-local storage related info. */
-
- /* Size of the TLS block. */
- uint64_t l_tls_blocksize;
- /* Alignment requirement of the TLS block. */
- uint64_t l_tls_align;
- /* Offset of first byte module alignment. */
- uint64_t l_tls_firstbyte_offset;
-
- /* For objects present at startup time: offset in the static TLS block. */
- uint64_t l_tls_offset;
- /* Index of the module in the dtv array. */
- uint64_t l_tls_modid;
-
- Elf64_Addr sym_base;
- const char *filename;
-
- Elf64_Half machine;
- };
-
-#define ELF_RTYPE_CLASS_COPY 2
-#define ELF_RTYPE_CLASS_PLT 1
-
-int elf_machine_type_class(int type, int machine);
-
-int extern_protected_data(int machine);
-#define ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA(machine) extern_protected_data(machine)
-
-int machine_no_rela(int machine);
-#define ELF_MACHINE_NO_RELA(machine) machine_no_rela(machine)
-
-int machine_no_rel(int machine);
-#define ELF_MACHINE_NO_REL(machine) machine_no_rel(machine)
-
-#define GL(x) _##x
-#define GLRO(x) _##x
-#define INTUSE(x) x
-
-#define D_PTR(MAP,MEM) MAP->MEM
-#define VERSYMIDX(sym) (DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGIDX (sym))
-
-extern unsigned int _dl_debug_mask;
-extern unsigned int _dl_dynamic_weak;
-
-extern const char *rtld_progname;
-
-/* This is an optional value before the ':' when debuging is enabled. */
-/* Typically glibc sets this to a number of spaces and the pid of the process*/
-#ifndef RTLD_DEBUG_PID
-# define RTLD_DEBUG_PID " "
-#endif
-#define _dl_debug_printf(...) printf( RTLD_DEBUG_PID ":\t" __VA_ARGS__)
-
-#define _dl_debug_printf_c printf
-
-#define __rtld_lock_lock_recursive(NAME)
-#define __rtld_lock_unlock_recursive(NAME)
-
-/* glibc-2.23: sysdeps/generic/ldsodefs.h */
-/* The filename itself, or the main program name, if available. */
-#define DSO_FILENAME(name) ((name)[0] ? (name) \
- : (rtld_progname ?: "<main program>"))
-
-#define RTLD_PROGNAME (rtld_progname ?: "<program name unknown>")
-
-/* glibc-2.23: sysdeps/generic/ldsodefs.h */
-#define DL_DEBUG_LIBS (1 << 0)
-#define DL_DEBUG_IMPCALLS (1 << 1)
-#define DL_DEBUG_BINDINGS (1 << 2)
-#define DL_DEBUG_SYMBOLS (1 << 3)
-#define DL_DEBUG_VERSIONS (1 << 4)
-#define DL_DEBUG_RELOC (1 << 5)
-#define DL_DEBUG_FILES (1 << 6)
-#define DL_DEBUG_STATISTICS (1 << 7)
-#define DL_DEBUG_UNUSED (1 << 8)
-#define DL_DEBUG_SCOPES (1 << 9)
-/* These two are used only internally. */
-#define DL_DEBUG_HELP (1 << 10)
-#define DL_DEBUG_PRELINK (1 << 11)
-
-#define _dl_trace_prelink_map requested_map
-
-extern struct link_map *requested_map;
-
-#ifndef __glibc_unlikely
-#define __glibc_unlikely(a) (a)
-#endif
-
-#ifndef __glibc_likely
-#define __glibc_likely(a) (a)
-#endif
-
-/* dl-load.c */
-
-#define _dl_new_object rtld_new_object
-
-struct link_map * _dl_new_object (const char *realname, const char *libname, int type);
-
-/* dl-lookup.c */
-
-#define lookup_t struct link_map *
-#define LOOKUP_VALUE(map) map
-
-/* Search loaded objects' symbol tables for a definition of the symbol
- referred to by UNDEF. *SYM is the symbol table entry containing the
- reference; it is replaced with the defining symbol, and the base load
- address of the defining object is returned. SYMBOL_SCOPE is a
- null-terminated list of object scopes to search; each object's
- l_searchlist (i.e. the segment of the dependency tree starting at that
- object) is searched in turn. REFERENCE_NAME should name the object
- containing the reference; it is used in error messages.
- TYPE_CLASS describes the type of symbol we are looking for. */
-enum
- {
- /* If necessary add dependency between user and provider object. */
- DL_LOOKUP_ADD_DEPENDENCY = 1,
- /* Return most recent version instead of default version for
- unversioned lookup. */
- DL_LOOKUP_RETURN_NEWEST = 2,
- /* Set if dl_lookup* called with GSCOPE lock held. */
- DL_LOOKUP_GSCOPE_LOCK = 4,
- };
-
-#define _dl_setup_hash rtld_setup_hash
-void _dl_setup_hash (struct link_map *map);
-
-#define _dl_lookup_symbol_x32 rtld_lookup_symbol_x32
-#define _dl_lookup_symbol_x64 rtld_lookup_symbol_x64
-
-/* Lookup versioned symbol. */
-lookup_t _dl_lookup_symbol_x32 (const char *undef,
- struct link_map *undef_map,
- const Elf32_Sym **sym,
- struct r_scope_elem *symbol_scope[],
- const struct r_found_version *version,
- int type_class, int flags,
- struct link_map *skip_map);
-
-/* Lookup versioned symbol. */
-lookup_t _dl_lookup_symbol_x64 (const char *undef,
- struct link_map *undef_map,
- const Elf64_Sym **sym,
- struct r_scope_elem *symbol_scope[],
- const struct r_found_version *version,
- int type_class, int flags,
- struct link_map *skip_map);
-
-/* dl-version.c */
-
-#define _dl_check_map_versions rtld_check_map_versions
-int _dl_check_map_versions (struct link_map *map, int verbose, int trace_mode);
-
-#define _dl_name_match_p rtld_name_match_p
-int _dl_name_match_p (const char *name, const struct link_map *map);
-
-/* Error handling */
-
-#include <error.h>
-#include <errno.h>
-
-/* Mimic the behavior and output of _dl_signal_error */
-#define rtld_signal_error(errcode, objname, occation, errstring, status) \
- error(status, errcode, "%s: %s%s%s", \
- occation ?: "error while loading shared libraries", \
- objname ?: "", (objname && *(char *)objname) ? ": " : "", \
- errstring ?: "DYNAMIC LINKER BUG!!!")
-
-#define _dl_signal_error(errcode, objname, occation, errstring) rtld_signal_error(errcode, objname, occation, errstring, 1)
-#define _dl_signal_cerror(errcode, objname, occation, errstring) rtld_signal_error(errcode, objname, occation, errstring, 0)
-#define _dl_fatal_printf(errstring) rtld_signal_error(EINVAL, NULL, NULL, errstring, 1)
-
-/* dl-load.c */
-
-extern void create_map_object_from_dso_ent (struct dso_list *);
-
-/* dl-open.c */
-#define _dl_show_scope rtld_show_scope
-extern void _dl_show_scope (struct link_map *l, int from);
-
-/* dl-tls.c */
-
-void rtld_determine_tlsoffsets (int e_machine, struct r_scope_elem *search_list);
-
-#define _dl_determine_tlsoffsets rtld_determine_tlsoffsets
-
-/* dl-misc.c */
-
-#define _dl_name_match_p rtld_name_match_p
-#define _dl_higher_prime_number rtld_higher_prime_number
-
-extern int _dl_name_match_p (const char *name, const struct link_map *map);
-extern unsigned long int _dl_higher_prime_number (unsigned long int n);
-
-
-#if defined(__MINGW32__)
-# define HOST_LONG_LONG_FORMAT "I64"
-#else
-# define HOST_LONG_LONG_FORMAT "ll"
-#endif
-
-#endif
-