Changeset e2f26002 in mainline
- Timestamp:
- 2016-05-17T17:15:13Z (9 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- d2bb25e7
- Parents:
- bab0f42
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
abi/include/abi/elf.h
rbab0f42 re2f26002 157 157 #define STT_SECTION 3 158 158 #define STT_FILE 4 159 #define STT_TLS 6 159 160 #define STT_LOPROC 13 160 161 #define STT_HIPROC 15 -
uspace/app/dltest/dltest.c
rbab0f42 re2f26002 581 581 582 582 printf("Got %d, expected %d... ", val, dl_private_fib_var_val); 583 if (val != dl_private_ var_val) {583 if (val != dl_private_fib_var_val) { 584 584 printf("FAILED\n"); 585 585 return false; -
uspace/lib/c/arch/ia32/src/tls.c
rbab0f42 re2f26002 69 69 *___tls_get_addr(tls_index *ti) 70 70 { 71 size_t tls_size;72 71 uint8_t *tls; 73 74 /* Calculate size of TLS block */75 tls_size = tls_get_size();76 77 /* The TLS block is just before TCB */78 tls = (uint8_t *)__tcb_get() - tls_size;79 72 80 73 #ifdef CONFIG_RTLD 81 74 if (runtime_env != NULL) { 82 return rtld_tls_get_addr(runtime_env, t ls, ti->ti_module,75 return rtld_tls_get_addr(runtime_env, ti->ti_module, 83 76 ti->ti_offset); 84 77 } 85 78 #endif 79 /* Get address of static TLS block */ 80 tls = tls_get(); 86 81 return tls + ti->ti_offset; 87 82 } -
uspace/lib/c/generic/rtld/rtld.c
rbab0f42 re2f26002 187 187 } 188 188 189 void *rtld_tls_get_addr(rtld_t *rtld, void *tls,unsigned long mod_id,189 void *rtld_tls_get_addr(rtld_t *rtld, unsigned long mod_id, 190 190 unsigned long offset) 191 191 { 192 192 module_t *m; 193 uint8_t *tls; 193 194 194 195 m = module_by_id(rtld, mod_id); 195 196 assert(m != NULL); 196 197 198 if (!link_used(&m->imodules_link)) { 199 printf("module '%s' is not initial. aborting.\n", 200 m->dyn.soname); 201 abort(); 202 } 203 204 tls = tls_get(); 197 205 return tls + m->ioffs + offset; 198 206 } -
uspace/lib/c/generic/rtld/symbol.c
rbab0f42 re2f26002 251 251 void *symbol_get_addr(elf_symbol_t *sym, module_t *m) 252 252 { 253 if (sym->st_shndx == SHN_ABS) { 253 if (ELF_ST_TYPE(sym->st_info) == STT_TLS) { 254 return rtld_tls_get_addr(m->rtld, m->id, sym->st_value); 255 } else if (sym->st_shndx == SHN_ABS) { 254 256 /* Do not add bias to absolute symbols */ 255 257 return (void *) sym->st_value; -
uspace/lib/c/generic/tls.c
rbab0f42 re2f26002 52 52 #endif 53 53 return &_tbss_end - &_tdata_start; 54 } 55 56 /** Get address of static TLS block */ 57 void *tls_get(void) 58 { 59 #ifdef CONFIG_TLS_VARIANT_1 60 return (uint8_t *)__tcb_get() + sizeof(tcb_t); 61 #else /* CONFIG_TLS_VARIANT_2 */ 62 return (uint8_t *)__tcb_get() - tls_get_size(); 63 #endif 54 64 } 55 65 -
uspace/lib/c/include/rtld/rtld.h
rbab0f42 re2f26002 50 50 extern tcb_t *rtld_tls_make(rtld_t *); 51 51 extern unsigned long rtld_get_next_id(rtld_t *); 52 extern void *rtld_tls_get_addr(rtld_t *, void *,unsigned long, unsigned long);52 extern void *rtld_tls_get_addr(rtld_t *, unsigned long, unsigned long); 53 53 54 54 #endif -
uspace/lib/c/include/tls.h
rbab0f42 re2f26002 53 53 extern void tls_free_arch(tcb_t *, size_t); 54 54 extern size_t tls_get_size(void); 55 extern void *tls_get(void); 55 56 56 57 #ifdef CONFIG_TLS_VARIANT_1 -
uspace/lib/dltest/libdltest.h
rbab0f42 re2f26002 43 43 dl_private_var_val = 220022, 44 44 dl_public_var_val = 330033, 45 dl_private_fib_var_val = 220022,46 dl_public_fib_var_val = 33003345 dl_private_fib_var_val = 440044, 46 dl_public_fib_var_val = 550055 47 47 }; 48 48
Note:
See TracChangeset
for help on using the changeset viewer.