Changeset 17341d4 in mainline for uspace/lib/c/include/rtld


Ignore:
Timestamp:
2016-04-20T17:25:48Z (9 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
dc0d8b52
Parents:
13dfa3f9
Message:

Move rtld internals out of loader. Stop misusing rtld instance from current environment for loading dynamically linked executables.

Location:
uspace/lib/c/include/rtld
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/include/rtld/module.h

    r13dfa3f9 r17341d4  
    3939#include <rtld/dynamic.h>
    4040#include <adt/list.h>
     41#include <types/rtld/module.h>
     42#include <types/rtld/rtld.h>
    4143
    42 typedef struct module {
    43         dyn_info_t dyn;
    44         size_t bias;
     44extern void module_process_relocs(module_t *);
     45extern module_t *module_find(rtld_t *, const char *);
     46extern module_t *module_load(rtld_t *, const char *);
     47extern void module_load_deps(module_t *);
    4548
    46         /** Array of pointers to directly dependent modules */
    47         struct module **deps;
    48         /** Number of fields in deps */
    49         size_t n_deps;
    50 
    51         /** True iff relocations have already been processed in this module. */
    52         bool relocated;
    53 
    54         /** Link to list of all modules in runtime environment */
    55         link_t modules_link;
    56 
    57         /** Link to BFS queue. Only used when doing a BFS of the module graph */
    58         link_t queue_link;
    59         /** Tag for modules already processed during a BFS */
    60         bool bfs_tag;
    61 } module_t;
    62 
    63 void module_process_relocs(module_t *m);
    64 module_t *module_find(const char *name);
    65 module_t *module_load(const char *name);
    66 void module_load_deps(module_t *m);
    67 
    68 void modules_process_relocs(module_t *start);
    69 void modules_untag(void);
     49extern void modules_process_relocs(rtld_t *, module_t *);
     50extern void modules_untag(rtld_t *);
    7051
    7152#endif
  • uspace/lib/c/include/rtld/rtld.h

    r13dfa3f9 r17341d4  
    3636#define LIBC_RTLD_H_
    3737
     38#include <adt/list.h>
     39#include <elf/elf_mod.h>
    3840#include <sys/types.h>
    39 #include <adt/list.h>
    4041
    4142#include <rtld/dynamic.h>
    42 #include <rtld/module.h>
     43#include <types/rtld/rtld.h>
    4344
    44 typedef struct {
    45         elf_dyn_t *rtld_dynamic;
    46         module_t rtld;
    47 
    48         module_t *program;
    49 
    50         /** List of all loaded modules including rtld and the program */
    51         list_t modules;
    52 
    53         /** Temporary hack to place each module at different address. */
    54         uintptr_t next_bias;
    55 } runtime_env_t;
    56 
    57 extern runtime_env_t *runtime_env;
     45extern rtld_t *runtime_env;
    5846
    5947extern void rtld_init_static(void);
     48extern int rtld_prog_process(elf_finfo_t *, rtld_t **);
    6049
    6150#endif
  • uspace/lib/c/include/rtld/rtld_debug.h

    r13dfa3f9 r17341d4  
    3636#define LIBC_RTLD_RTLD_DEBUG_H_
    3737
     38#include <stdio.h>
     39
    3840/* Define to enable debugging mode. */
    3941#undef RTLD_DEBUG
Note: See TracChangeset for help on using the changeset viewer.