Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/rtld/rtld.c

    rb83c5e4 rf215c6ef  
    4343
    4444rtld_t *runtime_env;
    45 static rtld_t rt_env_static;
    4645
    4746/** Initialize the runtime linker for use in a statically-linked executable. */
    48 errno_t rtld_init_static(void)
    49 {
     47errno_t rtld_init_static(elf_finfo_t *finfo, rtld_t **rre)
     48{
     49        rtld_t *env;
    5050        errno_t rc;
    5151
    52         runtime_env = &rt_env_static;
    53         list_initialize(&runtime_env->modules);
    54         list_initialize(&runtime_env->imodules);
    55         runtime_env->program = NULL;
    56         runtime_env->next_id = 1;
    57 
    58         rc = module_create_static_exec(runtime_env, NULL);
     52        env = calloc(1, sizeof(rtld_t));
     53        if (env == NULL)
     54                return ENOMEM;
     55
     56        list_initialize(&env->modules);
     57        list_initialize(&env->imodules);
     58        env->program = NULL;
     59        env->next_id = 1;
     60
     61        rc = module_create_static_exec(finfo->base, env);
    5962        if (rc != EOK)
    6063                return rc;
    6164
    62         modules_process_tls(runtime_env);
    63 
     65        modules_process_tls(env);
     66
     67        *rre = env;
    6468        return EOK;
    6569}
     
    127131        errno_t rc = module_load_deps(prog, 0);
    128132        if (rc != EOK) {
     133                free(prog);
     134                free(env);
    129135                return rc;
    130136        }
Note: See TracChangeset for help on using the changeset viewer.