Changeset 1ea99cc in mainline for uspace/lib
- Timestamp:
- 2009-08-20T20:47:35Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- b50b5af2
- Parents:
- 24edc18
- Location:
- uspace/lib
- Files:
-
- 43 added
- 11 edited
-
libc/Makefile (modified) (7 diffs)
-
libc/Makefile.app (added)
-
libc/arch/ia32/src/syscall.S (modified) (2 diffs)
-
libc/arch/ia32/src/tls.c (modified) (2 diffs)
-
libc/arch/mips32/src/tls.c (modified) (1 diff)
-
libc/arch/ppc32/src/tls.c (modified) (3 diffs)
-
libc/generic/async.c (modified) (1 diff)
-
libc/generic/dlfcn.c (added)
-
libc/generic/libc.c (modified) (2 diffs)
-
libc/generic/time.c (modified) (1 diff)
-
libc/include/as.h (modified) (1 diff)
-
libc/include/dlfcn.h (added)
-
libc/include/loader/pcb.h (modified) (1 diff)
-
libc/rtld/arch/ia32/Makefile.inc (added)
-
libc/rtld/arch/ia32/include/dynamic.h (added)
-
libc/rtld/arch/ia32/include/elf_dyn.h (added)
-
libc/rtld/arch/ia32/src/dynamic.c (added)
-
libc/rtld/arch/ia32/src/reloc.c (added)
-
libc/rtld/arch/mips32/Makefile.inc (added)
-
libc/rtld/arch/mips32/include/dynamic.h (added)
-
libc/rtld/arch/mips32/include/elf_dyn.h (added)
-
libc/rtld/arch/mips32/src/dynamic.c (added)
-
libc/rtld/arch/mips32/src/reloc.c (added)
-
libc/rtld/arch/ppc32/Makefile.inc (added)
-
libc/rtld/arch/ppc32/include/dynamic.h (added)
-
libc/rtld/arch/ppc32/include/elf_dyn.h (added)
-
libc/rtld/arch/ppc32/src/dynamic.c (added)
-
libc/rtld/arch/ppc32/src/reloc.c (added)
-
libc/rtld/dynamic.c (added)
-
libc/rtld/elf_load.c (added)
-
libc/rtld/include/dynamic.h (added)
-
libc/rtld/include/elf_dyn.h (added)
-
libc/rtld/include/module.h (added)
-
libc/rtld/include/rtld.h (added)
-
libc/rtld/include/rtld_arch.h (added)
-
libc/rtld/include/symbol.h (added)
-
libc/rtld/module.c (added)
-
libc/rtld/rtld.c (added)
-
libc/rtld/symbol.c (added)
-
libc/shared/Makefile (added)
-
libc/shared/arch/ia32/_lib.ld.in (added)
-
libc/shared/arch/ia32/_link.ld.in (added)
-
libc/shared/arch/mips32/_lib.ld.in (added)
-
libc/shared/arch/mips32/_link.ld.in (added)
-
libc/shared/arch/ppc32/_lib.ld.in (added)
-
libc/shared/arch/ppc32/_link.ld.in (added)
-
libtest/Makefile (added)
-
libtest/arch/ia32/_link.ld.in (added)
-
libtest/arch/mips32/_link.ld.in (added)
-
libtest/arch/ppc32/_link.ld.in (added)
-
libtest/libtest.c (added)
-
libtest/libtest.h (added)
-
libtest/libtest.so.0 (added)
-
softint/Makefile (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/libc/Makefile
r24edc18 r1ea99cc 1 1 # 2 2 # Copyright (c) 2005 Martin Decky 3 # Copyright (c) 2008 Jiri Svoboda 3 4 # All rights reserved. 4 5 # … … 38 39 39 40 include $(LIBC_PREFIX)/Makefile.toolchain 41 -include rtld/arch/$(UARCH)/Makefile.inc 40 42 43 CFLAGS += -Irtld/include -I../../srv/loader/include -D__32_BITS__ 44 PIC_CFLAGS := $(CFLAGS) -fPIC -D__IN_SHARED_LIBC__ 41 45 42 46 ## Sources … … 74 78 generic/ipc.c \ 75 79 generic/async.c \ 80 generic/dlfcn.c \ 76 81 generic/loader.c \ 77 82 generic/getopt.c \ … … 84 89 generic/udebug.c \ 85 90 generic/vfs/vfs.c \ 86 generic/vfs/canonify.c 91 generic/vfs/canonify.c \ 92 rtld/rtld.c \ 93 rtld/elf_load.c \ 94 rtld/dynamic.c \ 95 rtld/module.c \ 96 rtld/symbol.c 97 87 98 88 99 ARCH_SOURCES += \ … … 93 104 ARCH_OBJECTS := $(addsuffix .o,$(basename $(ARCH_SOURCES))) 94 105 OBJECTS := $(GENERIC_OBJECTS) $(ARCH_OBJECTS) 106 PIC_OBJECTS := $(addsuffix .pio,$(basename $(OBJECTS))) 107 108 OUTPUT := libc.a 109 110 ifeq ($(CONFIG_BUILD_SHARED_LIBC), y) 111 OUTPUT += libc.pic.a 112 endif 95 113 96 114 .PHONY: all clean depend kerninc 97 115 98 all: kerninc libc.aarch/$(UARCH)/_link.ld116 all: kerninc $(OUTPUT) arch/$(UARCH)/_link.ld 99 117 100 118 kerninc: … … 102 120 ln -sfn kernel/arch include/arch 103 121 ln -sfn ../arch/$(UARCH)/include include/libarch 122 ln -sfn ../arch/$(UARCH)/include rtld/include/arch 104 123 105 124 -include Makefile.depend 106 125 107 126 clean: 108 -rm -f include/kernel include/arch include/libarch libc.a arch/$(UARCH)/_link.ld Makefile.depend109 find generic/ arch/$(UARCH)/ -name '*.o'-follow -exec rm \{\} \;127 -rm -f include/kernel include/arch include/libarch rtld/include/arch libc.a libc.pic.a arch/$(UARCH)/_link.ld Makefile.depend 128 find . \( -name '*.o' -o -name '*.pio' \) -follow -exec rm \{\} \; 110 129 111 130 depend: kerninc 112 131 -makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(ARCH_SOURCES) $(GENERIC_SOURCES) > Makefile.depend 2> /dev/null 132 -makedepend $(DEFS) $(PIC_CFLAGS) -o.pio -f - $(ARCH_SOURCES) $(GENERIC_SOURCES) >> Makefile.depend 2> /dev/null 113 133 114 libc.a: depend $(ARCH_OBJECTS) $(GENERIC_OBJECTS) 115 $(AR) rc libc.a $(LIBS) $(ARCH_OBJECTS) $(GENERIC_OBJECTS) 134 libc.a: depend $(OBJECTS) 135 $(AR) rc $@ $(LIBS) $(OBJECTS) 136 137 libc.pic.a: depend $(PIC_OBJECTS) 138 $(AR) rc $@ $(LIBS) $(PIC_OBJECTS) 116 139 117 140 arch/$(UARCH)/_link.ld: arch/$(UARCH)/_link.ld.in … … 126 149 %.o: %.c 127 150 $(CC) $(DEFS) $(CFLAGS) -c $< -o $@ 151 152 %.pio: %.S 153 $(CC) $(DEFS) $(AFLAGS) $(CFLAGS) -D__ASM__ -c $< -o $@ 154 155 %.pio: %.s 156 $(AS) $(AFLAGS) $< -o $@ 157 158 %.pio: %.c 159 $(CC) $(DEFS) $(PIC_CFLAGS) -c $< -o $@ -
uspace/lib/libc/arch/ia32/src/syscall.S
r24edc18 r1ea99cc 65 65 */ 66 66 .global __syscall_sysenter 67 .type __syscall_sysenter, @function 68 67 69 __syscall_sysenter: 68 70 pushl %ebx … … 89 91 popl %ebx 90 92 ret 93 94 .size __syscall_sysenter, . - __syscall_sysenter -
uspace/lib/libc/arch/ia32/src/tls.c
r24edc18 r1ea99cc 37 37 #include <tls.h> 38 38 #include <sys/types.h> 39 #include <align.h> 39 40 40 41 tcb_t * __alloc_tls(void **data, size_t size) … … 48 49 } 49 50 51 //#ifdef __SHARED__ 52 53 typedef struct { 54 unsigned long int ti_module; 55 unsigned long int ti_offset; 56 } tls_index; 57 58 void __attribute__ ((__regparm__ (1))) 59 *___tls_get_addr(tls_index *ti); 60 61 void __attribute__ ((__regparm__ (1))) 62 *___tls_get_addr(tls_index *ti) 63 { 64 size_t tls_size; 65 uint8_t *tls; 66 67 /* Calculate size of TLS block */ 68 tls_size = ALIGN_UP(&_tbss_end - &_tdata_start, &_tls_alignment); 69 70 /* The TLS block is just before TCB */ 71 tls = (uint8_t *)__tcb_get() - tls_size; 72 73 return tls + ti->ti_offset; 74 } 75 76 //#endif 77 50 78 /** @} 51 79 */ -
uspace/lib/libc/arch/mips32/src/tls.c
r24edc18 r1ea99cc 47 47 } 48 48 49 typedef struct { 50 unsigned long ti_module; 51 unsigned long ti_offset; 52 } tls_index; 53 54 void *__tls_get_addr(tls_index *ti); 55 56 /* mips32 uses TLS variant 1 */ 57 void *__tls_get_addr(tls_index *ti) 58 { 59 uint8_t *tls; 60 uint32_t v; 61 62 tls = (uint8_t *)__tcb_get() + sizeof(tcb_t); 63 64 /* Hopefully this is right. No docs found. */ 65 v = (uint32_t) (tls + ti->ti_offset + 0x8000); 66 return (void *) v; 67 } 68 49 69 /** @} 50 70 */ -
uspace/lib/libc/arch/ppc32/src/tls.c
r24edc18 r1ea99cc 1 1 /* 2 2 * Copyright (c) 2006 Ondrej Palkovsky 3 * Copyright (c) 2008 Jiri Svoboda 3 4 * All rights reserved. 4 5 * … … 34 35 35 36 #include <tls.h> 37 #include <align.h> 36 38 #include <sys/types.h> 37 39 … … 46 48 } 47 49 50 static void kputint(unsigned i) 51 { 52 asm volatile ( 53 "mr %%r3, %0\n" 54 "li %%r9, 32\n" 55 "sc\n" 56 : 57 : "r" (i) 58 : "%r3","%r9" 59 ) ; 60 } 61 62 typedef struct { 63 unsigned long int ti_module; 64 unsigned long int ti_offset; 65 } tls_index; 66 67 void *__tls_get_addr(tls_index *ti); 68 69 /* ppc32 uses TLS variant 1 */ 70 void *__tls_get_addr(tls_index *ti) 71 { 72 uint8_t *tls; 73 74 /* The TLS section is just after TCB */ 75 tls = (uint8_t *)__tcb_get() + sizeof(tcb_t); 76 77 /* Hopefully this is right. No docs found. */ 78 return tls + ti->ti_offset + 32768; 79 } 80 48 81 /** @} 49 82 */ -
uspace/lib/libc/generic/async.c
r24edc18 r1ea99cc 175 175 176 176 /** Identifier of the incoming connection handled by the current fibril. */ 177 fibril_local connection_t *FIBRIL_connection;177 static fibril_local connection_t *FIBRIL_connection; 178 178 179 179 static void default_client_connection(ipc_callid_t callid, ipc_call_t *call); -
uspace/lib/libc/generic/libc.c
r24edc18 r1ea99cc 53 53 #include <loader/pcb.h> 54 54 55 /* From librtld. */ 56 #include <rtld.h> 57 #include <string.h> 58 55 59 extern int main(int argc, char *argv[]); 56 60 … … 75 79 char **argv; 76 80 81 #ifdef __IN_SHARED_LIBC__ 82 if (__pcb != NULL && __pcb->rtld_runtime != NULL) { 83 runtime_env = (runtime_env_t *) __pcb->rtld_runtime; 84 } 85 #endif 86 77 87 if (__pcb == NULL) { 78 88 argc = 0; -
uspace/lib/libc/generic/time.c
r24edc18 r1ea99cc 148 148 if (res) { 149 149 printf("Failed to initialize timeofday memarea\n"); 150 printf("Address was 0x%x\n", (unsigned)mapping); 150 151 _exit(1); 151 152 } -
uspace/lib/libc/include/as.h
r24edc18 r1ea99cc 43 43 extern void *as_area_create(void *address, size_t size, int flags); 44 44 extern int as_area_resize(void *address, size_t size, int flags); 45 externint as_area_change_flags(void *address, int flags);45 int as_area_change_flags(void *address, int flags); 46 46 extern int as_area_destroy(void *address); 47 47 extern void *set_maxheapsize(size_t mhs); -
uspace/lib/libc/include/loader/pcb.h
r24edc18 r1ea99cc 69 69 /** Pointer to ELF dynamic section of the program. */ 70 70 void *dynamic; 71 /** Pointer to dynamic linker state structure (runtime_env_t). */ 72 void *rtld_runtime; 71 73 } pcb_t; 72 74 -
uspace/lib/softint/Makefile
r24edc18 r1ea99cc 1 1 # 2 2 # Copyright (c) 2005 Martin Decky 3 # Copyright (c) 2008 Jiri Svoboda 3 4 # All rights reserved. 4 5 # … … 38 39 39 40 CFLAGS += -Iinclude 41 PIC_CFLAGS := $(CFLAGS) -fPIC -D__PIC__ 40 42 41 43 ## Sources … … 49 51 GENERIC_OBJECTS := $(addsuffix .o,$(basename $(GENERIC_SOURCES))) 50 52 53 OBJECTS := $(GENERIC_OBJECTS) 54 PIC_OBJECTS := $(addsuffix .pio,$(basename $(OBJECTS))) 55 51 56 .PHONY: all clean depend 52 57 53 all: libsoftint.a 58 all: libsoftint.a libsoftint.pic.a 54 59 55 60 -include Makefile.depend 56 61 57 62 clean: 58 -rm -f libsoftint.a Makefile.depend59 find generic/ -name '*.o'-follow -exec rm \{\} \;63 -rm -f libsoftint.a libsoftint.pic.a Makefile.depend 64 find generic/ \( -name '*.o' -o -name '*.pio' \) -follow -exec rm \{\} \; 60 65 61 66 depend: 62 67 -makedepend -f - -- $(DEPEMD_DEFS) $(CFLAGS) -- $(GENERIC_SOURCES) > Makefile.depend 2> /dev/null 68 -makedepend $(DEFS) $(PIC_CFLAGS) -o.pio -f - $(GENERIC_SOURCES) >> Makefile.depend 2> /dev/null 63 69 64 libsoftint.a: depend $(ARCH_OBJECTS) $(GENERIC_OBJECTS) 65 $(AR) rc libsoftint.a $(ARCH_OBJECTS) $(GENERIC_OBJECTS) 70 libsoftint.a: depend $(OBJECTS) 71 $(AR) rc $@ $(OBJECTS) 72 73 libsoftint.pic.a: depend $(PIC_OBJECTS) 74 $(AR) rc $@ $(PIC_OBJECTS) 66 75 67 76 %.o: %.S … … 73 82 %.o: %.c 74 83 $(CC) $(DEFS) $(CFLAGS) -c $< -o $@ 84 85 %.pio: %.S 86 $(CC) $(DEFS) $(AFLAGS) $(CFLAGS) -D__ASM__ -c $< -o $@ 87 88 %.pio: %.s 89 $(AS) $(AFLAGS) $< -o $@ 90 91 %.pio: %.c 92 $(CC) $(DEFS) $(PIC_CFLAGS) -c $< -o $@
Note:
See TracChangeset
for help on using the changeset viewer.
