mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
Update.
* intl/finddomain.c: Likewise. * intl/gettextP.h: Likewise. * intl/loadmsgcat.c: Likewise.
This commit is contained in:
@ -25,6 +25,9 @@
|
|||||||
* elf/dlerror.c: Likewise.
|
* elf/dlerror.c: Likewise.
|
||||||
* sysdeps/generic/dl-sysdep.c: Likewise.
|
* sysdeps/generic/dl-sysdep.c: Likewise.
|
||||||
* sysdeps/i386/dl-machine.h: Likewise.
|
* sysdeps/i386/dl-machine.h: Likewise.
|
||||||
|
* intl/finddomain.c: Likewise.
|
||||||
|
* intl/gettextP.h: Likewise.
|
||||||
|
* intl/loadmsgcat.c: Likewise.
|
||||||
|
|
||||||
1998-04-01 17:38 Ulrich Drepper <drepper@cygnus.com>
|
1998-04-01 17:38 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
|
internal_function
|
||||||
_dl_addr (const void *address, Dl_info *info)
|
_dl_addr (const void *address, Dl_info *info)
|
||||||
{
|
{
|
||||||
const ElfW(Addr) addr = (ElfW(Addr)) address;
|
const ElfW(Addr) addr = (ElfW(Addr)) address;
|
||||||
|
@ -34,6 +34,7 @@ __libc_lock_define (extern, _dl_load_lock)
|
|||||||
#define LOSE(s) _dl_signal_error (0, map->l_name, s)
|
#define LOSE(s) _dl_signal_error (0, map->l_name, s)
|
||||||
|
|
||||||
void
|
void
|
||||||
|
internal_function
|
||||||
_dl_close (struct link_map *map)
|
_dl_close (struct link_map *map)
|
||||||
{
|
{
|
||||||
struct link_map **list;
|
struct link_map **list;
|
||||||
|
@ -31,6 +31,7 @@ struct r_debug _r_debug;
|
|||||||
_r_debug.r_ldbase. Returns the address of _r_debug. */
|
_r_debug.r_ldbase. Returns the address of _r_debug. */
|
||||||
|
|
||||||
struct r_debug *
|
struct r_debug *
|
||||||
|
internal_function
|
||||||
_dl_debug_initialize (ElfW(Addr) ldbase)
|
_dl_debug_initialize (ElfW(Addr) ldbase)
|
||||||
{
|
{
|
||||||
if (_r_debug.r_brk == 0)
|
if (_r_debug.r_brk == 0)
|
||||||
|
@ -80,6 +80,7 @@ struct list
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
|
internal_function
|
||||||
_dl_map_object_deps (struct link_map *map,
|
_dl_map_object_deps (struct link_map *map,
|
||||||
struct link_map **preloads, unsigned int npreloads,
|
struct link_map **preloads, unsigned int npreloads,
|
||||||
int trace_mode)
|
int trace_mode)
|
||||||
|
@ -46,6 +46,7 @@ static receiver_fct receiver;
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
|
internal_function
|
||||||
_dl_signal_error (int errcode,
|
_dl_signal_error (int errcode,
|
||||||
const char *objname,
|
const char *objname,
|
||||||
const char *errstring)
|
const char *errstring)
|
||||||
@ -94,6 +95,7 @@ _dl_signal_error (int errcode,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
internal_function
|
||||||
_dl_catch_error (char **errstring,
|
_dl_catch_error (char **errstring,
|
||||||
void (*operate) (void *),
|
void (*operate) (void *),
|
||||||
void *args)
|
void *args)
|
||||||
@ -125,6 +127,7 @@ _dl_catch_error (char **errstring,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
internal_function
|
||||||
_dl_receive_error (receiver_fct fct, void (*operate) (void *), void *args)
|
_dl_receive_error (receiver_fct fct, void (*operate) (void *), void *args)
|
||||||
{
|
{
|
||||||
struct catch *old_catch;
|
struct catch *old_catch;
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include <elf/ldsodefs.h>
|
#include <elf/ldsodefs.h>
|
||||||
|
|
||||||
void
|
void
|
||||||
|
internal_function
|
||||||
_dl_fini (void)
|
_dl_fini (void)
|
||||||
{
|
{
|
||||||
struct link_map *l;
|
struct link_map *l;
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
order (that is, leaf nodes first). */
|
order (that is, leaf nodes first). */
|
||||||
|
|
||||||
ElfW(Addr)
|
ElfW(Addr)
|
||||||
|
internal_function
|
||||||
_dl_init_next (struct link_map *map)
|
_dl_init_next (struct link_map *map)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
@ -303,6 +303,7 @@ decompose_rpath (const char *rpath, size_t additional_room,
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
|
internal_function
|
||||||
_dl_init_paths (const char *llp)
|
_dl_init_paths (const char *llp)
|
||||||
{
|
{
|
||||||
static const char *system_dirs[] =
|
static const char *system_dirs[] =
|
||||||
@ -979,6 +980,7 @@ open_path (const char *name, size_t namelen, int preloaded,
|
|||||||
/* Map in the shared object file NAME. */
|
/* Map in the shared object file NAME. */
|
||||||
|
|
||||||
struct link_map *
|
struct link_map *
|
||||||
|
internal_function
|
||||||
_dl_map_object (struct link_map *loader, const char *name, int preloaded,
|
_dl_map_object (struct link_map *loader, const char *name, int preloaded,
|
||||||
int type, int trace_mode)
|
int type, int trace_mode)
|
||||||
{
|
{
|
||||||
|
@ -210,6 +210,7 @@ do_lookup (const char *undef_name, unsigned long int hash,
|
|||||||
UNDEF_NAME. */
|
UNDEF_NAME. */
|
||||||
|
|
||||||
ElfW(Addr)
|
ElfW(Addr)
|
||||||
|
internal_function
|
||||||
_dl_lookup_symbol (const char *undef_name, const ElfW(Sym) **ref,
|
_dl_lookup_symbol (const char *undef_name, const ElfW(Sym) **ref,
|
||||||
struct link_map *symbol_scope[],
|
struct link_map *symbol_scope[],
|
||||||
const char *reference_name,
|
const char *reference_name,
|
||||||
@ -257,6 +258,7 @@ _dl_lookup_symbol (const char *undef_name, const ElfW(Sym) **ref,
|
|||||||
object. If there are more search lists the object described by
|
object. If there are more search lists the object described by
|
||||||
SKIP_MAP is only skipped. */
|
SKIP_MAP is only skipped. */
|
||||||
ElfW(Addr)
|
ElfW(Addr)
|
||||||
|
internal_function
|
||||||
_dl_lookup_symbol_skip (const char *undef_name, const ElfW(Sym) **ref,
|
_dl_lookup_symbol_skip (const char *undef_name, const ElfW(Sym) **ref,
|
||||||
struct link_map *symbol_scope[],
|
struct link_map *symbol_scope[],
|
||||||
const char *reference_name,
|
const char *reference_name,
|
||||||
@ -305,6 +307,7 @@ _dl_lookup_symbol_skip (const char *undef_name, const ElfW(Sym) **ref,
|
|||||||
|
|
||||||
XXX We'll see whether we need this separate function. */
|
XXX We'll see whether we need this separate function. */
|
||||||
ElfW(Addr)
|
ElfW(Addr)
|
||||||
|
internal_function
|
||||||
_dl_lookup_versioned_symbol (const char *undef_name, const ElfW(Sym) **ref,
|
_dl_lookup_versioned_symbol (const char *undef_name, const ElfW(Sym) **ref,
|
||||||
struct link_map *symbol_scope[],
|
struct link_map *symbol_scope[],
|
||||||
const char *reference_name,
|
const char *reference_name,
|
||||||
@ -369,6 +372,7 @@ _dl_lookup_versioned_symbol (const char *undef_name, const ElfW(Sym) **ref,
|
|||||||
/* Similar to _dl_lookup_symbol_skip but takes an additional argument
|
/* Similar to _dl_lookup_symbol_skip but takes an additional argument
|
||||||
with the version we are looking for. */
|
with the version we are looking for. */
|
||||||
ElfW(Addr)
|
ElfW(Addr)
|
||||||
|
internal_function
|
||||||
_dl_lookup_versioned_symbol_skip (const char *undef_name,
|
_dl_lookup_versioned_symbol_skip (const char *undef_name,
|
||||||
const ElfW(Sym) **ref,
|
const ElfW(Sym) **ref,
|
||||||
struct link_map *symbol_scope[],
|
struct link_map *symbol_scope[],
|
||||||
@ -429,6 +433,7 @@ _dl_lookup_versioned_symbol_skip (const char *undef_name,
|
|||||||
/* Cache the location of MAP's hash table. */
|
/* Cache the location of MAP's hash table. */
|
||||||
|
|
||||||
void
|
void
|
||||||
|
internal_function
|
||||||
_dl_setup_hash (struct link_map *map)
|
_dl_setup_hash (struct link_map *map)
|
||||||
{
|
{
|
||||||
ElfW(Symndx) *hash;
|
ElfW(Symndx) *hash;
|
||||||
|
@ -31,6 +31,7 @@ struct link_map *_dl_default_scope[5];
|
|||||||
and enter it into the _dl_loaded list. */
|
and enter it into the _dl_loaded list. */
|
||||||
|
|
||||||
struct link_map *
|
struct link_map *
|
||||||
|
internal_function
|
||||||
_dl_new_object (char *realname, const char *libname, int type)
|
_dl_new_object (char *realname, const char *libname, int type)
|
||||||
{
|
{
|
||||||
struct link_map *new = malloc (sizeof *new);
|
struct link_map *new = malloc (sizeof *new);
|
||||||
|
@ -51,6 +51,7 @@ __libc_lock_define_initialized_recursive (, _dl_load_lock)
|
|||||||
|
|
||||||
|
|
||||||
struct link_map *
|
struct link_map *
|
||||||
|
internal_function
|
||||||
_dl_open (const char *file, int mode)
|
_dl_open (const char *file, int mode)
|
||||||
{
|
{
|
||||||
struct link_map *new, *l;
|
struct link_map *new, *l;
|
||||||
|
@ -187,6 +187,7 @@ static int s_scale;
|
|||||||
/* Set up profiling data to profile object desribed by MAP. The output
|
/* Set up profiling data to profile object desribed by MAP. The output
|
||||||
file is found (or created) in OUTPUT_DIR. */
|
file is found (or created) in OUTPUT_DIR. */
|
||||||
void
|
void
|
||||||
|
internal_function
|
||||||
_dl_start_profile (struct link_map *map, const char *output_dir)
|
_dl_start_profile (struct link_map *map, const char *output_dir)
|
||||||
{
|
{
|
||||||
char *filename;
|
char *filename;
|
||||||
@ -437,6 +438,7 @@ _dl_start_profile (struct link_map *map, const char *output_dir)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
|
internal_function
|
||||||
_dl_mcount (ElfW(Addr) frompc, ElfW(Addr) selfpc)
|
_dl_mcount (ElfW(Addr) frompc, ElfW(Addr) selfpc)
|
||||||
{
|
{
|
||||||
uint16_t *topcindex;
|
uint16_t *topcindex;
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
|
internal_function
|
||||||
_dl_relocate_object (struct link_map *l, struct link_map *scope[], int lazy)
|
_dl_relocate_object (struct link_map *l, struct link_map *scope[], int lazy)
|
||||||
{
|
{
|
||||||
if (l->l_relocated)
|
if (l->l_relocated)
|
||||||
|
@ -31,6 +31,7 @@ struct link_map **_dl_global_scope_end = &_dl_default_scope[3];
|
|||||||
_dl_global_scope that should be passed to _dl_lookup_symbol for symbol
|
_dl_global_scope that should be passed to _dl_lookup_symbol for symbol
|
||||||
references made in the object L's relocations. */
|
references made in the object L's relocations. */
|
||||||
inline struct link_map **
|
inline struct link_map **
|
||||||
|
internal_function
|
||||||
_dl_object_relocation_scope (struct link_map *l)
|
_dl_object_relocation_scope (struct link_map *l)
|
||||||
{
|
{
|
||||||
if (l->l_info[DT_SYMBOLIC])
|
if (l->l_info[DT_SYMBOLIC])
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
/* Look up symbol NAME in MAP's scope and return its run-time address. */
|
/* Look up symbol NAME in MAP's scope and return its run-time address. */
|
||||||
|
|
||||||
ElfW(Addr)
|
ElfW(Addr)
|
||||||
|
internal_function
|
||||||
_dl_symbol_value (struct link_map *map, const char *name)
|
_dl_symbol_value (struct link_map *map, const char *name)
|
||||||
{
|
{
|
||||||
ElfW(Addr) loadbase;
|
ElfW(Addr) loadbase;
|
||||||
|
@ -71,6 +71,7 @@ find_needed (const char *name, struct link_map *map)
|
|||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
internal_function
|
||||||
match_symbol (const char *name, ElfW(Word) hash, const char *string,
|
match_symbol (const char *name, ElfW(Word) hash, const char *string,
|
||||||
struct link_map *map, int verbose, int weak)
|
struct link_map *map, int verbose, int weak)
|
||||||
{
|
{
|
||||||
@ -156,6 +157,7 @@ no version information available (required by ",
|
|||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
|
internal_function
|
||||||
_dl_check_map_versions (struct link_map *map, int verbose)
|
_dl_check_map_versions (struct link_map *map, int verbose)
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result = 0;
|
||||||
@ -351,6 +353,7 @@ _dl_check_map_versions (struct link_map *map, int verbose)
|
|||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
|
internal_function
|
||||||
_dl_check_all_versions (struct link_map *map, int verbose)
|
_dl_check_all_versions (struct link_map *map, int verbose)
|
||||||
{
|
{
|
||||||
struct link_map *l;
|
struct link_map *l;
|
||||||
|
@ -87,6 +87,7 @@ dlerror (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
internal_function
|
||||||
_dlerror_run (void (*operate) (void *), void *args)
|
_dlerror_run (void (*operate) (void *), void *args)
|
||||||
{
|
{
|
||||||
__libc_once_define (static, once);
|
__libc_once_define (static, once);
|
||||||
|
@ -196,7 +196,8 @@ extern int _dl_secure;
|
|||||||
problem. */
|
problem. */
|
||||||
extern void _dl_signal_error (int errcode,
|
extern void _dl_signal_error (int errcode,
|
||||||
const char *object,
|
const char *object,
|
||||||
const char *errstring);
|
const char *errstring)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
/* Call OPERATE, catching errors from `dl_signal_error'. If there is no
|
/* Call OPERATE, catching errors from `dl_signal_error'. If there is no
|
||||||
error, *ERRSTRING is set to null. If there is an error, *ERRSTRING is
|
error, *ERRSTRING is set to null. If there is an error, *ERRSTRING is
|
||||||
@ -206,21 +207,24 @@ extern void _dl_signal_error (int errcode,
|
|||||||
ARGS is passed as argument to OPERATE. */
|
ARGS is passed as argument to OPERATE. */
|
||||||
extern int _dl_catch_error (char **errstring,
|
extern int _dl_catch_error (char **errstring,
|
||||||
void (*operate) (void *),
|
void (*operate) (void *),
|
||||||
void *args);
|
void *args)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
/* Call OPERATE, receiving errors from `dl_signal_error'. Unlike
|
/* Call OPERATE, receiving errors from `dl_signal_error'. Unlike
|
||||||
`_dl_catch_error' the operation is resumed after the OPERATE
|
`_dl_catch_error' the operation is resumed after the OPERATE
|
||||||
function returns.
|
function returns.
|
||||||
ARGS is passed as argument to OPERATE. */
|
ARGS is passed as argument to OPERATE. */
|
||||||
extern void _dl_receive_error (receiver_fct fct, void (*operate) (void *),
|
extern void _dl_receive_error (receiver_fct fct, void (*operate) (void *),
|
||||||
void *args);
|
void *args)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
|
|
||||||
/* Helper function for <dlfcn.h> functions. Runs the OPERATE function via
|
/* Helper function for <dlfcn.h> functions. Runs the OPERATE function via
|
||||||
_dl_catch_error. Returns zero for success, nonzero for failure; and
|
_dl_catch_error. Returns zero for success, nonzero for failure; and
|
||||||
arranges for `dlerror' to return the error details.
|
arranges for `dlerror' to return the error details.
|
||||||
ARGS is passed as argument to OPERATE. */
|
ARGS is passed as argument to OPERATE. */
|
||||||
extern int _dlerror_run (void (*operate) (void *), void *args);
|
extern int _dlerror_run (void (*operate) (void *), void *args)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
|
|
||||||
/* Open the shared object NAME and map in its segments.
|
/* Open the shared object NAME and map in its segments.
|
||||||
@ -230,7 +234,8 @@ extern int _dlerror_run (void (*operate) (void *), void *args);
|
|||||||
value to allow additional security checks. */
|
value to allow additional security checks. */
|
||||||
extern struct link_map *_dl_map_object (struct link_map *loader,
|
extern struct link_map *_dl_map_object (struct link_map *loader,
|
||||||
const char *name, int preloaded,
|
const char *name, int preloaded,
|
||||||
int type, int trace_mode);
|
int type, int trace_mode)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
/* Call _dl_map_object on the dependencies of MAP, and set up
|
/* Call _dl_map_object on the dependencies of MAP, and set up
|
||||||
MAP->l_searchlist. PRELOADS points to a vector of NPRELOADS previously
|
MAP->l_searchlist. PRELOADS points to a vector of NPRELOADS previously
|
||||||
@ -238,19 +243,22 @@ extern struct link_map *_dl_map_object (struct link_map *loader,
|
|||||||
but before its dependencies. */
|
but before its dependencies. */
|
||||||
extern void _dl_map_object_deps (struct link_map *map,
|
extern void _dl_map_object_deps (struct link_map *map,
|
||||||
struct link_map **preloads,
|
struct link_map **preloads,
|
||||||
unsigned int npreloads, int trace_mode);
|
unsigned int npreloads, int trace_mode)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
/* Cache the locations of MAP's hash table. */
|
/* Cache the locations of MAP's hash table. */
|
||||||
extern void _dl_setup_hash (struct link_map *map);
|
extern void _dl_setup_hash (struct link_map *map) internal_function;
|
||||||
|
|
||||||
|
|
||||||
/* Open the shared object NAME, relocate it, and run its initializer if it
|
/* Open the shared object NAME, relocate it, and run its initializer if it
|
||||||
hasn't already been run. MODE is as for `dlopen' (see <dlfcn.h>). If
|
hasn't already been run. MODE is as for `dlopen' (see <dlfcn.h>). If
|
||||||
the object is already opened, returns its existing map. */
|
the object is already opened, returns its existing map. */
|
||||||
extern struct link_map *_dl_open (const char *name, int mode);
|
extern struct link_map *_dl_open (const char *name, int mode)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
/* Close an object previously opened by _dl_open. */
|
/* Close an object previously opened by _dl_open. */
|
||||||
extern void _dl_close (struct link_map *map);
|
extern void _dl_close (struct link_map *map)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
|
|
||||||
/* Search loaded objects' symbol tables for a definition of the symbol
|
/* Search loaded objects' symbol tables for a definition of the symbol
|
||||||
@ -268,7 +276,8 @@ extern ElfW(Addr) _dl_lookup_symbol (const char *undef,
|
|||||||
const ElfW(Sym) **sym,
|
const ElfW(Sym) **sym,
|
||||||
struct link_map *symbol_scope[],
|
struct link_map *symbol_scope[],
|
||||||
const char *reference_name,
|
const char *reference_name,
|
||||||
int reloc_type);
|
int reloc_type)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
/* Lookup versioned symbol. */
|
/* Lookup versioned symbol. */
|
||||||
extern ElfW(Addr) _dl_lookup_versioned_symbol (const char *undef,
|
extern ElfW(Addr) _dl_lookup_versioned_symbol (const char *undef,
|
||||||
@ -276,14 +285,16 @@ extern ElfW(Addr) _dl_lookup_versioned_symbol (const char *undef,
|
|||||||
struct link_map *symbol_scope[],
|
struct link_map *symbol_scope[],
|
||||||
const char *reference_name,
|
const char *reference_name,
|
||||||
const struct r_found_version *version,
|
const struct r_found_version *version,
|
||||||
int reloc_type);
|
int reloc_type)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
/* For handling RTLD_NEXT we must be able to skip shared objects. */
|
/* For handling RTLD_NEXT we must be able to skip shared objects. */
|
||||||
extern ElfW(Addr) _dl_lookup_symbol_skip (const char *undef,
|
extern ElfW(Addr) _dl_lookup_symbol_skip (const char *undef,
|
||||||
const ElfW(Sym) **sym,
|
const ElfW(Sym) **sym,
|
||||||
struct link_map *symbol_scope[],
|
struct link_map *symbol_scope[],
|
||||||
const char *reference_name,
|
const char *reference_name,
|
||||||
struct link_map *skip_this);
|
struct link_map *skip_this)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
/* For handling RTLD_NEXT with versioned symbols we must be able to
|
/* For handling RTLD_NEXT with versioned symbols we must be able to
|
||||||
skip shared objects. */
|
skip shared objects. */
|
||||||
@ -292,13 +303,16 @@ extern ElfW(Addr) _dl_lookup_versioned_symbol_skip (const char *undef,
|
|||||||
struct link_map *symbol_scope[],
|
struct link_map *symbol_scope[],
|
||||||
const char *reference_name,
|
const char *reference_name,
|
||||||
const struct r_found_version *version,
|
const struct r_found_version *version,
|
||||||
struct link_map *skip_this);
|
struct link_map *skip_this)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
/* Locate shared object containing the given address. */
|
/* Locate shared object containing the given address. */
|
||||||
extern int _dl_addr (const void *address, Dl_info *info);
|
extern int _dl_addr (const void *address, Dl_info *info)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
/* Look up symbol NAME in MAP's scope and return its run-time address. */
|
/* Look up symbol NAME in MAP's scope and return its run-time address. */
|
||||||
extern ElfW(Addr) _dl_symbol_value (struct link_map *map, const char *name);
|
extern ElfW(Addr) _dl_symbol_value (struct link_map *map, const char *name)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
|
|
||||||
/* Structure describing the dynamic linker itself. */
|
/* Structure describing the dynamic linker itself. */
|
||||||
@ -329,38 +343,41 @@ extern size_t _dl_global_scope_alloc; /* Number of slots malloc'd. */
|
|||||||
/* Hack _dl_global_scope[0] and [1] as necessary, and return a pointer into
|
/* Hack _dl_global_scope[0] and [1] as necessary, and return a pointer into
|
||||||
_dl_global_scope that should be passed to _dl_lookup_symbol for symbol
|
_dl_global_scope that should be passed to _dl_lookup_symbol for symbol
|
||||||
references made in the object MAP's relocations. */
|
references made in the object MAP's relocations. */
|
||||||
extern struct link_map **_dl_object_relocation_scope (struct link_map *map);
|
extern struct link_map **_dl_object_relocation_scope (struct link_map *map)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
|
|
||||||
/* Allocate a `struct link_map' for a new object being loaded,
|
/* Allocate a `struct link_map' for a new object being loaded,
|
||||||
and enter it into the _dl_loaded list. */
|
and enter it into the _dl_loaded list. */
|
||||||
extern struct link_map *_dl_new_object (char *realname, const char *libname,
|
extern struct link_map *_dl_new_object (char *realname, const char *libname,
|
||||||
int type);
|
int type) internal_function;
|
||||||
|
|
||||||
/* Relocate the given object (if it hasn't already been).
|
/* Relocate the given object (if it hasn't already been).
|
||||||
SCOPE is passed to _dl_lookup_symbol in symbol lookups.
|
SCOPE is passed to _dl_lookup_symbol in symbol lookups.
|
||||||
If LAZY is nonzero, don't relocate its PLT. */
|
If LAZY is nonzero, don't relocate its PLT. */
|
||||||
extern void _dl_relocate_object (struct link_map *map,
|
extern void _dl_relocate_object (struct link_map *map,
|
||||||
struct link_map *scope[],
|
struct link_map *scope[],
|
||||||
int lazy);
|
int lazy) internal_function;
|
||||||
|
|
||||||
/* Check the version dependencies of all objects available through
|
/* Check the version dependencies of all objects available through
|
||||||
MAP. If VERBOSE print some more diagnostics. */
|
MAP. If VERBOSE print some more diagnostics. */
|
||||||
extern int _dl_check_all_versions (struct link_map *map, int verbose);
|
extern int _dl_check_all_versions (struct link_map *map, int verbose)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
/* Check the version dependencies for MAP. If VERBOSE print some more
|
/* Check the version dependencies for MAP. If VERBOSE print some more
|
||||||
diagnostics. */
|
diagnostics. */
|
||||||
extern int _dl_check_map_versions (struct link_map *map, int verbose);
|
extern int _dl_check_map_versions (struct link_map *map, int verbose)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
/* Return the address of the next initializer function for MAP or one of
|
/* Return the address of the next initializer function for MAP or one of
|
||||||
its dependencies that has not yet been run. When there are no more
|
its dependencies that has not yet been run. When there are no more
|
||||||
initializers to be run, this returns zero. The functions are returned
|
initializers to be run, this returns zero. The functions are returned
|
||||||
in the order they should be called. */
|
in the order they should be called. */
|
||||||
extern ElfW(Addr) _dl_init_next (struct link_map *map);
|
extern ElfW(Addr) _dl_init_next (struct link_map *map) internal_function;
|
||||||
|
|
||||||
/* Call the finalizer functions of all shared objects whose
|
/* Call the finalizer functions of all shared objects whose
|
||||||
initializer functions have completed. */
|
initializer functions have completed. */
|
||||||
extern void _dl_fini (void);
|
extern void _dl_fini (void) internal_function;
|
||||||
|
|
||||||
/* The dynamic linker calls this function before and having changing
|
/* The dynamic linker calls this function before and having changing
|
||||||
any shared object mappings. The `r_state' member of `struct r_debug'
|
any shared object mappings. The `r_state' member of `struct r_debug'
|
||||||
@ -371,31 +388,35 @@ extern void _dl_debug_state (void);
|
|||||||
/* Initialize `struct r_debug' if it has not already been done. The
|
/* Initialize `struct r_debug' if it has not already been done. The
|
||||||
argument is the run-time load address of the dynamic linker, to be put
|
argument is the run-time load address of the dynamic linker, to be put
|
||||||
in the `r_ldbase' member. Returns the address of the structure. */
|
in the `r_ldbase' member. Returns the address of the structure. */
|
||||||
extern struct r_debug *_dl_debug_initialize (ElfW(Addr) ldbase);
|
extern struct r_debug *_dl_debug_initialize (ElfW(Addr) ldbase)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
/* Initialize the basic data structure for the search paths. */
|
/* Initialize the basic data structure for the search paths. */
|
||||||
extern void _dl_init_paths (const char *library_path);
|
extern void _dl_init_paths (const char *library_path) internal_function;
|
||||||
|
|
||||||
/* Gather the information needed to install the profiling tables and start
|
/* Gather the information needed to install the profiling tables and start
|
||||||
the timers. */
|
the timers. */
|
||||||
extern void _dl_start_profile (struct link_map *map, const char *output_dir);
|
extern void _dl_start_profile (struct link_map *map, const char *output_dir)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
/* The actual functions used to keep book on the calls. */
|
/* The actual functions used to keep book on the calls. */
|
||||||
extern void _dl_mcount (ElfW(Addr) frompc, ElfW(Addr) selfpc);
|
extern void _dl_mcount (ElfW(Addr) frompc, ElfW(Addr) selfpc)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
|
|
||||||
/* Show the members of the auxiliary array passed up from the kernel. */
|
/* Show the members of the auxiliary array passed up from the kernel. */
|
||||||
extern void _dl_show_auxv (void);
|
extern void _dl_show_auxv (void) internal_function;
|
||||||
|
|
||||||
/* Return all environment variables starting with `LD_', one after the
|
/* Return all environment variables starting with `LD_', one after the
|
||||||
other. */
|
other. */
|
||||||
extern char *_dl_next_ld_env_entry (char ***position);
|
extern char *_dl_next_ld_env_entry (char ***position) internal_function;
|
||||||
|
|
||||||
/* Return an array with the names of the important hardware capabilities. */
|
/* Return an array with the names of the important hardware capabilities. */
|
||||||
extern const struct r_strlenpair *_dl_important_hwcaps (const char *platform,
|
extern const struct r_strlenpair *_dl_important_hwcaps (const char *platform,
|
||||||
size_t paltform_len,
|
size_t paltform_len,
|
||||||
size_t *sz,
|
size_t *sz,
|
||||||
size_t *max_capstrlen);
|
size_t *max_capstrlen)
|
||||||
|
internal_function;
|
||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Handle list of needed message catalogs
|
/* Handle list of needed message catalogs
|
||||||
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||||
Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
|
Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
|
||||||
|
|
||||||
This file is part of the GNU C Library. Its master source is NOT part of
|
This file is part of the GNU C Library. Its master source is NOT part of
|
||||||
@ -74,6 +74,7 @@ static struct loaded_l10nfile *_nl_loaded_domains;
|
|||||||
the DOMAINNAME and CATEGORY parameters with respect to the currently
|
the DOMAINNAME and CATEGORY parameters with respect to the currently
|
||||||
established bindings. */
|
established bindings. */
|
||||||
struct loaded_l10nfile *
|
struct loaded_l10nfile *
|
||||||
|
internal_function
|
||||||
_nl_find_domain (dirname, locale, domainname)
|
_nl_find_domain (dirname, locale, domainname)
|
||||||
const char *dirname;
|
const char *dirname;
|
||||||
char *locale;
|
char *locale;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Header describing internals of gettext library
|
/* Header describing internals of gettext library
|
||||||
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||||
Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
|
Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -32,6 +32,10 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef internal_function
|
||||||
|
# define internal_function
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef W
|
#ifndef W
|
||||||
# define W(flag, data) ((flag) ? SWAP (data) : (data))
|
# define W(flag, data) ((flag) ? SWAP (data) : (data))
|
||||||
#endif
|
#endif
|
||||||
@ -69,9 +73,12 @@ struct binding
|
|||||||
|
|
||||||
struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname,
|
struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname,
|
||||||
char *__locale,
|
char *__locale,
|
||||||
const char *__domainname));
|
const char *__domainname))
|
||||||
void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain));
|
internal_function;
|
||||||
void _nl_unload_domain PARAMS ((struct loaded_domain *__domain));
|
void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain))
|
||||||
|
internal_function;
|
||||||
|
void _nl_unload_domain PARAMS ((struct loaded_domain *__domain))
|
||||||
|
internal_function;
|
||||||
|
|
||||||
/* @@ begin of epilog @@ */
|
/* @@ begin of epilog @@ */
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Load needed message catalogs.
|
/* Load needed message catalogs.
|
||||||
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of the GNU C Library. Its master source is NOT part of
|
This file is part of the GNU C Library. Its master source is NOT part of
|
||||||
the C library, however.
|
the C library, however.
|
||||||
@ -64,6 +64,7 @@ int _nl_msg_cat_cntr = 0;
|
|||||||
/* Load the message catalogs specified by FILENAME. If it is no valid
|
/* Load the message catalogs specified by FILENAME. If it is no valid
|
||||||
message catalog do nothing. */
|
message catalog do nothing. */
|
||||||
void
|
void
|
||||||
|
internal_function
|
||||||
_nl_load_domain (domain_file)
|
_nl_load_domain (domain_file)
|
||||||
struct loaded_l10nfile *domain_file;
|
struct loaded_l10nfile *domain_file;
|
||||||
{
|
{
|
||||||
@ -208,6 +209,7 @@ _nl_load_domain (domain_file)
|
|||||||
|
|
||||||
#ifdef _LIBC
|
#ifdef _LIBC
|
||||||
void
|
void
|
||||||
|
internal_function
|
||||||
_nl_unload_domain (domain)
|
_nl_unload_domain (domain)
|
||||||
struct loaded_domain *domain;
|
struct loaded_domain *domain;
|
||||||
{
|
{
|
||||||
|
@ -171,6 +171,7 @@ _dl_sysdep_start_cleanup (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
internal_function
|
||||||
_dl_show_auxv (void)
|
_dl_show_auxv (void)
|
||||||
{
|
{
|
||||||
char buf[64];
|
char buf[64];
|
||||||
@ -252,6 +253,7 @@ _dl_show_auxv (void)
|
|||||||
/* Walk through the environment of the process and return all entries
|
/* Walk through the environment of the process and return all entries
|
||||||
starting with `LD_'. */
|
starting with `LD_'. */
|
||||||
char *
|
char *
|
||||||
|
internal_function
|
||||||
_dl_next_ld_env_entry (char ***position)
|
_dl_next_ld_env_entry (char ***position)
|
||||||
{
|
{
|
||||||
char **current = *position;
|
char **current = *position;
|
||||||
@ -277,6 +279,7 @@ _dl_next_ld_env_entry (char ***position)
|
|||||||
|
|
||||||
/* Return an array of useful/necessary hardware capability names. */
|
/* Return an array of useful/necessary hardware capability names. */
|
||||||
const struct r_strlenpair *
|
const struct r_strlenpair *
|
||||||
|
internal_function
|
||||||
_dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
|
_dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
|
||||||
size_t *max_capstrlen)
|
size_t *max_capstrlen)
|
||||||
{
|
{
|
||||||
|
@ -224,11 +224,10 @@ _dl_start_user:\n\
|
|||||||
# Push _dl_default_scope[2] as argument in _dl_init_next call below.\n\
|
# Push _dl_default_scope[2] as argument in _dl_init_next call below.\n\
|
||||||
movl _dl_default_scope@GOT(%ebx), %eax\n\
|
movl _dl_default_scope@GOT(%ebx), %eax\n\
|
||||||
movl 8(%eax), %esi\n\
|
movl 8(%eax), %esi\n\
|
||||||
0: pushl %esi\n\
|
0: movl %esi,%eax\n\
|
||||||
# Call _dl_init_next to return the address of an initializer\n\
|
# Call _dl_init_next to return the address of an initializer\n\
|
||||||
# function to run.\n\
|
# function to run.\n\
|
||||||
call _dl_init_next@PLT\n\
|
call _dl_init_next@PLT\n\
|
||||||
addl $4, %esp # Pop argument.\n\
|
|
||||||
# Check for zero return, when out of initializers.\n\
|
# Check for zero return, when out of initializers.\n\
|
||||||
testl %eax, %eax\n\
|
testl %eax, %eax\n\
|
||||||
jz 1f\n\
|
jz 1f\n\
|
||||||
|
Reference in New Issue
Block a user