Changeset a949f4a in mainline
- Timestamp:
- 2019-07-16T15:07:01Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 2cc569a3, 9fb280c
- Parents:
- fa603e99
- git-author:
- Jiri Svoboda <jiri@…> (2019-07-15 17:03:31)
- git-committer:
- Jiri Svoboda <jiri@…> (2019-07-16 15:07:01)
- Files:
-
- 5 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
HelenOS.config
rfa603e99 ra949f4a 612 612 613 613 % Dynamic linking support 614 ! [PLATFORM=amd64|PLATFORM=arm32|PLATFORM=ia32|PLATFORM= ppc32|PLATFORM=sparc64] CONFIG_RTLD (y/n)615 ! [PLATFORM=abs32le|PLATFORM=arm64|PLATFORM= ia64|PLATFORM=mips32|PLATFORM=riscv64] CONFIG_RTLD (n)614 ! [PLATFORM=amd64|PLATFORM=arm32|PLATFORM=ia32|PLATFORM=ia64|PLATFORM=ppc32|PLATFORM=sparc64] CONFIG_RTLD (y/n) 615 ! [PLATFORM=abs32le|PLATFORM=arm64|PLATFORM=mips32|PLATFORM=riscv64] CONFIG_RTLD (n) 616 616 617 617 % Build shared libraries -
uspace/lib/c/arch/amd64/src/rtld/reloc.c
rfa603e99 ra949f4a 234 234 } 235 235 236 /** Get the adress of a function. 237 * 238 * @param sym Symbol 239 * @param m Module in which the symbol is located 240 * @return Address of function 241 */ 242 void *func_get_addr(elf_symbol_t *sym, module_t *m) 243 { 244 return symbol_get_addr(sym, m, __tcb_get()); 245 } 246 236 247 /** @} 237 248 */ -
uspace/lib/c/arch/arm32/src/rtld/reloc.c
rfa603e99 ra949f4a 216 216 } 217 217 218 /** Get the adress of a function. 219 * 220 * @param sym Symbol 221 * @param m Module in which the symbol is located 222 * @return Address of function 223 */ 224 void *func_get_addr(elf_symbol_t *sym, module_t *m) 225 { 226 return symbol_get_addr(sym, m, __tcb_get()); 227 } 228 218 229 /** @} 219 230 */ -
uspace/lib/c/arch/ia32/src/rtld/reloc.c
rfa603e99 ra949f4a 216 216 } 217 217 218 /** Get the adress of a function. 219 * 220 * @param sym Symbol 221 * @param m Module in which the symbol is located 222 * @return Address of function 223 */ 224 void *func_get_addr(elf_symbol_t *sym, module_t *m) 225 { 226 return symbol_get_addr(sym, m, __tcb_get()); 227 } 228 218 229 /** @} 219 230 */ -
uspace/lib/c/arch/ia64/Makefile.inc
rfa603e99 ra949f4a 35 35 arch/$(UARCH)/src/ddi.c \ 36 36 arch/$(UARCH)/src/stacktrace.c \ 37 arch/$(UARCH)/src/stacktrace_asm.S 37 arch/$(UARCH)/src/stacktrace_asm.S \ 38 arch/$(UARCH)/src/rtld/dynamic.c \ 39 arch/$(UARCH)/src/rtld/reloc.c 38 40 39 41 ARCH_AUTOCHECK_HEADERS = \ -
uspace/lib/c/arch/ia64/include/libarch/tls.h
rfa603e99 ra949f4a 42 42 /* This structure must be exactly 16 bytes long */ 43 43 typedef struct { 44 void * dtv; /* unused in static linking*/44 void **dtv; 45 45 void *fibril_data; 46 46 } tcb_t; -
uspace/lib/c/arch/ia64/src/thread_entry.S
rfa603e99 ra949f4a 34 34 # 35 35 # 36 SYMBOL (__thread_entry)36 SYMBOL_BEGIN(__thread_entry) 37 37 alloc loc0 = ar.pfs, 0, 1, 1, 0 38 38 39 #ifndef CONFIG_RTLD 40 # XXX This does not work in a shared library 39 41 movl gp = __gp 42 #endif 40 43 41 44 # … … 44 47 45 48 mov out0 = r8 ;; 49 # XXX br.call.sptk.many b0 = FUNCTION_REF(__thread_main) 46 50 br.call.sptk.many b0 = __thread_main 47 51 … … 50 54 # 51 55 56 SYMBOL_END(__thread_entry) -
uspace/lib/c/arch/ia64/src/tls.c
rfa603e99 ra949f4a 1 1 /* 2 * Copyright (c) 2019 Jiri Svoboda 2 3 * Copyright (c) 2006 Ondrej Palkovsky 3 4 * All rights reserved. … … 37 38 #include <tls.h> 38 39 40 #ifdef CONFIG_RTLD 41 #include <rtld/rtld.h> 42 #endif 43 39 44 tcb_t *tls_alloc_arch(size_t size, size_t align) 40 45 { … … 47 52 } 48 53 54 /* 55 * Rtld TLS support 56 */ 57 58 typedef struct { 59 unsigned long int ti_module; 60 unsigned long int ti_offset; 61 } tls_index; 62 63 void *__tls_get_addr(tls_index *ti); 64 65 void *__tls_get_addr(tls_index *ti) 66 { 67 uint8_t *tls; 68 69 #ifdef CONFIG_RTLD 70 if (runtime_env != NULL) { 71 return rtld_tls_get_addr(runtime_env, __tcb_get(), 72 ti->ti_module, ti->ti_offset); 73 } 74 #endif 75 /* Get address of static TLS block */ 76 tls = tls_get(); 77 return tls + ti->ti_offset; 78 } 79 49 80 /** @} 50 81 */ -
uspace/lib/c/arch/ppc32/src/rtld/reloc.c
rfa603e99 ra949f4a 418 418 } 419 419 420 /** Get the adress of a function. 421 * 422 * @param sym Symbol 423 * @param m Module in which the symbol is located 424 * @return Address of function 425 */ 426 void *func_get_addr(elf_symbol_t *sym, module_t *m) 427 { 428 return symbol_get_addr(sym, m, __tcb_get()); 429 } 430 420 431 /** @} 421 432 */ -
uspace/lib/c/arch/sparc64/src/rtld/reloc.c
rfa603e99 ra949f4a 299 299 } 300 300 301 /** Get the adress of a function. 302 * 303 * @param sym Symbol 304 * @param m Module in which the symbol is located 305 * @return Address of function 306 */ 307 void *func_get_addr(elf_symbol_t *sym, module_t *m) 308 { 309 return symbol_get_addr(sym, m, __tcb_get()); 310 } 311 301 312 /** @} 302 313 */ -
uspace/lib/c/generic/dlfcn.c
rfa603e99 ra949f4a 45 45 #include <rtld/module.h> 46 46 #include <rtld/rtld.h> 47 #include <rtld/rtld_arch.h> 47 48 #include <rtld/symbol.h> 48 49 … … 79 80 sd = symbol_bfs_find(sym_name, (module_t *) mod, &sm); 80 81 if (sd != NULL) { 81 return symbol_get_addr(sd, sm, __tcb_get()); 82 if (elf_st_type(sd->st_info) == STT_FUNC) 83 return func_get_addr(sd, sm); 84 else 85 return symbol_get_addr(sd, sm, __tcb_get()); 82 86 } 83 87 -
uspace/lib/c/include/rtld/rtld_arch.h
rfa603e99 ra949f4a 43 43 void rel_table_process(module_t *m, elf_rel_t *rt, size_t rt_size); 44 44 void rela_table_process(module_t *m, elf_rela_t *rt, size_t rt_size); 45 void *func_get_addr(elf_symbol_t *, module_t *); 45 46 46 47 void program_run(void *entry, pcb_t *pcb);
Note:
See TracChangeset
for help on using the changeset viewer.