Changes in / [b50b5af2:a71c158] in mainline


Ignore:
Files:
58 deleted
39 edited

Legend:

Unmodified
Added
Removed
  • HelenOS.config

    rb50b5af2 ra71c158  
    480480! [PLATFORM=sparc64] CONFIG_RD_EXTERNAL (y/n)
    481481
    482 % Build shared C library
    483 ! CONFIG_BUILD_SHARED_LIBC (y/n)
    484 
    485 % Link against shared C library
    486 ! [CONFIG_BUILD_SHARED_LIBC=y] CONFIG_USE_SHARED_LIBC (n/y)
    487 ! [CONFIG_BUILD_SHARED_LIBC=n] CONFIG_USE_SHARED_LIBC (n)
    488 
    489482% Load disk drivers on startup
    490483! CONFIG_START_BD (n/y)
  • boot/arch/ia32/Makefile.inc

    rb50b5af2 ra71c158  
    5858        $(USPACEDIR)/app/tetris/tetris \
    5959        $(USPACEDIR)/app/tester/tester \
    60         $(USPACEDIR)/app/dltest2/dltest2 \
    61         $(USPACEDIR)/app/dload/dload \
    6260        $(USPACEDIR)/app/trace/trace \
    6361        $(USPACEDIR)/app/klog/klog \
    6462        $(USPACEDIR)/app/bdsh/bdsh
    6563
    66 RD_LIBS = \
    67         $(USPACEDIR)/lib/libtest/libtest.so.0
    68 
    69 ifeq ($(CONFIG_BUILD_SHARED_LIBC), y)
    70         RD_LIBS += $(USPACEDIR)/lib/libc/shared/libc.so.0
    71         RD_APPS += $(USPACEDIR)/app/dltest/dltest
    72 endif
    73 
    7464build: $(BASE)/image.iso
    7565
    76 $(BASE)/image.iso: arch/$(BARCH)/grub/stage2_eltorito arch/$(BARCH)/grub/menu.lst $(KERNELDIR)/kernel.bin $(INIT_TASKS) $(RD_SRVS) $(RD_LIBS) $(RD_APPS)
     66$(BASE)/image.iso: arch/$(BARCH)/grub/stage2_eltorito arch/$(BARCH)/grub/menu.lst $(KERNELDIR)/kernel.bin $(INIT_TASKS) $(RD_SRVS) $(RD_APPS)
    7767        mkdir -p $(TMP)/boot/grub
    7868        cp arch/$(BARCH)/grub/stage2_eltorito $(TMP)/boot/grub/
     
    8979        for file in $(RD_SRVS) ; do \
    9080                cp $$file $(USPACEDIR)/dist/srv/ ; \
    91         done
    92         for lib in $(RD_LIBS) ; do \
    93                 cp $$lib $(USPACEDIR)/dist/lib/ ; \
    9481        done
    9582        for file in $(RD_APPS) ; do \
     
    11097                rm -f $(USPACEDIR)/dist/srv/`basename $$file` ; \
    11198        done
    112         -for lib in $(RD_LIBS) ; do \
    113                 rm -f $(USPACEDIR)/dist/lib/`basename $$lib` ; \
    114         done
    11599        -for file in $(RD_APPS) ; do \
    116100                rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
  • boot/arch/mips32/loader/Makefile

    rb50b5af2 ra71c158  
    112112        $(USPACEDIR)/app/tetris/tetris \
    113113        $(USPACEDIR)/app/tester/tester \
    114         $(USPACEDIR)/app/dload/dload \
    115         $(USPACEDIR)/app/dltest/dltest \
    116         $(USPACEDIR)/app/dltest2/dltest2 \
    117114        $(USPACEDIR)/app/trace/trace \
    118115        $(USPACEDIR)/app/bdsh/bdsh \
    119116        $(USPACEDIR)/app/klog/klog
    120 
    121 RD_LIBS = \
    122         $(USPACEDIR)/lib/libc/shared/libc.so.0 \
    123         $(USPACEDIR)/lib/libtest/libtest.so.0
    124117
    125118OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
     
    150143        -rm -f _components.h _components.c _link.ld $(COMPONENT_OBJECTS) initrd.o $(OBJECTS) initrd.img image.raw image.boot Makefile.depend
    151144
    152 _components.h _components.c _link.ld $(COMPONENT_OBJECTS) initrd.o: $(COMPONENTS) $(RD_SRVS) $(RD_LIBS) $(RD_APPS) _link.ld.in
     145_components.h _components.c _link.ld $(COMPONENT_OBJECTS) initrd.o: $(COMPONENTS) $(RD_SRVS) $(RD_APPS) _link.ld.in
    153146        for file in $(RD_SRVS) ; do \
    154147                cp $$file $(USPACEDIR)/dist/srv/ ; \
    155         done
    156         for lib in $(RD_LIBS) ; do \
    157                 cp $$lib $(USPACEDIR)/dist/lib/ ; \
    158148        done
    159149        for file in $(RD_APPS) ; do \
  • boot/arch/ppc32/loader/Makefile

    rb50b5af2 ra71c158  
    100100        $(USPACEDIR)/app/tetris/tetris \
    101101        $(USPACEDIR)/app/tester/tester \
    102         $(USPACEDIR)/app/dload/dload \
    103         $(USPACEDIR)/app/dltest/dltest \
    104         $(USPACEDIR)/app/dltest2/dltest2 \
    105102        $(USPACEDIR)/app/trace/trace \
    106103        $(USPACEDIR)/app/bdsh/bdsh \
    107104        $(USPACEDIR)/app/klog/klog
    108 
    109 RD_LIBS = \
    110         $(USPACEDIR)/lib/libc/shared/libc.so.0 \
    111         $(USPACEDIR)/lib/libtest/libtest.so.0
    112105
    113106OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
     
    130123                rm -f $(USPACEDIR)/dist/srv/`basename $$file` ; \
    131124        done
    132         -for lib in $(RD_LIBS) ; do \
    133                 rm -f $(USPACEDIR)/dist/lib/`basename $$lib` ; \
    134         done
    135125        -for file in $(RD_APPS) ; do \
    136126                rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
     
    138128        -rm -f _components.h _components.c _link.ld $(COMPONENT_OBJECTS) initrd.o $(OBJECTS) initrd.img image.boot Makefile.depend
    139129
    140 _components.h _components.c _link.ld $(COMPONENT_OBJECTS) initrd.o: $(COMPONENTS) $(RD_SRVS) $(RD_LIBS) $(RD_APPS) _link.ld.in
     130_components.h _components.c _link.ld $(COMPONENT_OBJECTS) initrd.o: $(COMPONENTS) $(RD_SRVS) $(RD_APPS) _link.ld.in
    141131        for file in $(RD_SRVS) ; do \
    142132                cp $$file $(USPACEDIR)/dist/srv/ ; \
    143         done
    144         for lib in $(RD_LIBS) ; do \
    145                 cp $$lib $(USPACEDIR)/dist/lib/ ; \
    146133        done
    147134        for file in $(RD_APPS) ; do \
  • defaults/amd64/Makefile.config

    rb50b5af2 ra71c158  
    33
    44# Ramdisk format
    5 RDFMT = tmpfs
     5RDFMT = fat
    66
    77# Compiler
     
    5656CONFIG_VESA_BPP = 16
    5757
    58 # Use shared C library
    59 CONFIG_SHARED_LIBC = n
    60 
    6158# Load disk drivers on startup
    6259CONFIG_START_BD = n
  • defaults/arm32/Makefile.config

    rb50b5af2 ra71c158  
    33
    44# Ramdisk format
    5 RDFMT = tmpfs
     5RDFMT = fat
    66
    77# Compiler
     
    3232CONFIG_HID_OUT = generic
    3333
    34 # Use shared C library
    35 CONFIG_SHARED_LIBC = n
    36 
    3734# Load disk drivers on startup
    3835CONFIG_START_BD = n
  • defaults/ia32/Makefile.config

    rb50b5af2 ra71c158  
    66
    77# Ramdisk format
    8 RDFMT = tmpfs
     8RDFMT = fat
    99
    1010# Compiler
     
    6262CONFIG_VESA_BPP = 16
    6363
    64 # Use shared C library
    65 CONFIG_SHARED_LIBC = n
    66 
    6764# Load disk drivers on startup
    6865CONFIG_START_BD = n
  • defaults/ia64/Makefile.config

    rb50b5af2 ra71c158  
    33
    44# Ramdisk format
    5 RDFMT = tmpfs
     5RDFMT = fat
    66
    77# Compiler
     
    4444CONFIG_HID_OUT = generic
    4545
    46 # Use shared C library
    47 CONFIG_SHARED_LIBC = n
    48 
    4946# Load disk drivers on startup
    5047CONFIG_START_BD = n
  • defaults/mips32/Makefile.config

    rb50b5af2 ra71c158  
    33
    44# Ramdisk format
    5 RDFMT = tmpfs
     5RDFMT = fat
    66
    77# Compiler
     
    3838CONFIG_HID_OUT = generic
    3939
    40 # Use shared C library
    41 CONFIG_SHARED_LIBC = n
    42 
    4340# Load disk drivers on startup
    4441CONFIG_START_BD = n
  • defaults/ppc32/Makefile.config

    rb50b5af2 ra71c158  
    33
    44# Ramdisk format
    5 RDFMT = tmpfs
     5RDFMT = fat
    66
    77# Compiler
     
    3838CONFIG_BAT = y
    3939
    40 # Use shared C library
    41 CONFIG_SHARED_LIBC = n
    42 
    4340# Load disk drivers on startup
    4441CONFIG_START_BD = n
  • defaults/sparc64/Makefile.config

    rb50b5af2 ra71c158  
    33
    44# Ramdisk format
    5 RDFMT = tmpfs
     5RDFMT = fat
    66
    77# Compiler
     
    5656CONFIG_RD_EXTERNAL = y
    5757
    58 # Use shared C library
    59 CONFIG_SHARED_LIBC = n
    60 
    6158# Load disk drivers on startup
    6259CONFIG_START_BD = n
  • kernel/arch/ia32/include/barrier.h

    rb50b5af2 ra71c158  
    5252static inline void cpuid_serialization(void)
    5353{
    54 #ifndef __IN_SHARED_LIBC__
    5554        asm volatile (
    5655                "xorl %%eax, %%eax\n"
     
    5857                ::: "eax", "ebx", "ecx", "edx", "memory"
    5958        );
    60 #else
    61         /* Must not clobber PIC register ebx */
    62         asm volatile (
    63                 "movl %%ebx, %%esi\n"
    64                 "xorl %%eax, %%eax\n"
    65                 "cpuid\n"
    66                 "movl %%esi, %%ebx\n"
    67                 ::: "eax", "ecx", "edx", "esi", "memory"
    68         );
    69 #endif
    7059}
    7160
  • kernel/generic/include/syscall/syscall.h

    rb50b5af2 ra71c158  
    8383        SYS_SYSINFO_VALID,
    8484        SYS_SYSINFO_VALUE,
    85 
    86         SYS_DEBUG_PUTINT,
     85       
    8786        SYS_DEBUG_ENABLE_CONSOLE,
    8887        SYS_DEBUG_DISABLE_CONSOLE,
  • kernel/generic/src/lib/elf.c

    rb50b5af2 ra71c158  
    167167        case PT_INTERP:
    168168                interp = (char *)elf + entry->p_offset;
    169                 /* DO NOT COMMIT ME */
     169                /* FIXME */
    170170                /*if (memcmp((uintptr_t)interp, (uintptr_t)ELF_INTERP_ZSTR,
    171171                    ELF_INTERP_ZLEN) != 0) {
  • kernel/generic/src/proc/program.c

    rb50b5af2 ra71c158  
    5050#include <lib/elf.h>
    5151#include <errno.h>
     52#include <print.h>
    5253#include <syscall/copy.h>
    5354#include <proc/program.h>
     
    133134                ASSERT(program_loader == NULL);
    134135                program_loader = image_addr;
     136                LOG("Registered program loader at 0x%" PRIp "\n",
     137                    image_addr);
    135138                return EOK;
    136139        }
     
    158161
    159162        loader = program_loader;
    160         if (!loader) return ENOENT;
     163        if (!loader) {
     164                printf("Cannot spawn loader as none was registered\n");
     165                return ENOENT;
     166        }
    161167
    162168        rc = elf_load((elf_header_t *) program_loader, as, ELD_F_LOADER);
  • kernel/generic/src/syscall/syscall.c

    rb50b5af2 ra71c158  
    5454#include <console/console.h>
    5555#include <udebug/udebug.h>
    56 
    57 /** Print a hex integer into klog */
    58 static unative_t sys_debug_putint(unative_t i)
    59 {
    60         printf("[task:0x%x]", i);
    61         return 0;
    62 }
    6356
    6457/** Dispatch system call */
     
    167160       
    168161        /* Debug calls */
    169         (syshandler_t) sys_debug_putint,
    170162        (syshandler_t) sys_debug_enable_console,
    171163        (syshandler_t) sys_debug_disable_console,
  • uspace/Makefile

    rb50b5af2 ra71c158  
    3838        lib/softint \
    3939        lib/softfloat \
    40         lib/libtest \
    4140        srv/bd/ata_bd \
    4241        srv/bd/file_bd \
     
    5554        app/tetris \
    5655        app/tester \
    57         app/dltest2 \
    58         app/dload \
    5956        app/trace \
    6057        app/klog \
     
    7774endif
    7875
    79 ifeq ($(CONFIG_BUILD_SHARED_LIBC), y)
    80         DIRS += \
    81                 lib/libc/shared \
    82                 app/dltest
    83 endif
    84 
    85 
    8676BUILDS := $(addsuffix .build,$(DIRS))
    8777CLEANS := $(addsuffix .clean,$(DIRS))
    8878
    89 .PHONY: all $(BUILDS) $(CLEANS) clean kerninc
     79.PHONY: all $(BUILDS) $(CLEANS) clean
    9080
    9181all: ../Makefile.config ../config.h ../config.defs $(BUILDS)
  • uspace/app/bdsh/Makefile

    rb50b5af2 ra71c158  
    3737
    3838include $(LIBC_PREFIX)/Makefile.toolchain
    39 include $(LIBC_PREFIX)/Makefile.app
    4039
    4140CFLAGS += -I../../srv/kbd/include -I$(LIBBLOCK_PREFIX)
    4241
    43 LIBS += $(LIBBLOCK_PREFIX)/libblock.a $(LIBC_PREFIX)/libc.a
     42LIBS = $(LIBBLOCK_PREFIX)/libblock.a $(LIBC_PREFIX)/libc.a
    4443DEFS += -DRELEASE=$(RELEASE)
    4544
     
    115114
    116115$(PROGRAM): $(OBJECTS) $(LIBS)
    117         $(LD) -T $(LD_SCRIPT) $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(PROGRAM).map
     116        $(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(PROGRAM).map
    118117
    119118# Everything else is a phony target
  • uspace/app/klog/Makefile

    rb50b5af2 ra71c158  
    3434
    3535include $(LIBC_PREFIX)/Makefile.toolchain
    36 include $(LIBC_PREFIX)/Makefile.app
     36
     37LIBS = $(LIBC_PREFIX)/libc.a
    3738
    3839## Sources
     
    5960
    6061$(OUTPUT): $(OBJECTS) $(LIBS)
    61         $(LD) -T $(LD_SCRIPT) $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
     62        $(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
    6263
    6364disasm: $(OUTPUT).disasm
  • uspace/app/klog/klog.c

    rb50b5af2 ra71c158  
    7373                return -1;
    7474        }
    75 
    76         printf("got area at 0x%08lx, length %lx byes\n", klog, klog_size);
    7775       
    7876        int res = ipc_share_in_start_1_0(PHONE_NS, (void *) klog,
  • uspace/app/tester/Makefile

    rb50b5af2 ra71c158  
    3434
    3535include $(LIBC_PREFIX)/Makefile.toolchain
    36 include $(LIBC_PREFIX)/Makefile.app
    3736
    3837CFLAGS += -I../../srv/kbd/include
     38
     39LIBS = $(LIBC_PREFIX)/libc.a
    3940
    4041## Sources
     
    7576
    7677$(OUTPUT): $(OBJECTS) $(LIBS)
    77         $(LD) -T $(LD_SCRIPT) $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
     78        $(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
    7879
    7980disasm: $(OUTPUT).disasm
  • uspace/app/tetris/Makefile

    rb50b5af2 ra71c158  
    33
    44include $(LIBC_PREFIX)/Makefile.toolchain
    5 include $(LIBC_PREFIX)/Makefile.app
     5
     6LIBS = $(LIBC_PREFIX)/libc.a
    67
    78OUTPUT = tetris
     
    1920
    2021$(OUTPUT): $(OBJECTS) $(LIBS)
    21         $(LD) -T $(LD_SCRIPT) $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
     22        $(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
    2223
    2324clean:
  • uspace/app/trace/Makefile

    rb50b5af2 ra71c158  
    3434
    3535include $(LIBC_PREFIX)/Makefile.toolchain
    36 include $(LIBC_PREFIX)/Makefile.app
    3736
    3837CFLAGS += -I../../srv/kbd/include
     38
     39LIBS = $(LIBC_PREFIX)/libc.a
    3940
    4041## Sources
     
    6465
    6566$(OUTPUT): $(OBJECTS) $(LIBS)
    66         $(LD) -T $(LD_SCRIPT) $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
     67        $(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
    6768
    6869disasm:
  • uspace/lib/libc/Makefile

    rb50b5af2 ra71c158  
    11#
    22# Copyright (c) 2005 Martin Decky
    3 # Copyright (c) 2008 Jiri Svoboda
    43# All rights reserved.
    54#
     
    3938
    4039include $(LIBC_PREFIX)/Makefile.toolchain
    41 -include rtld/arch/$(UARCH)/Makefile.inc
    4240
    43 CFLAGS += -Irtld/include -I../../srv/loader/include -D__32_BITS__
    44 PIC_CFLAGS := $(CFLAGS) -fPIC -D__IN_SHARED_LIBC__
    4541
    4642## Sources
     
    7874        generic/ipc.c \
    7975        generic/async.c \
    80         generic/dlfcn.c \
    8176        generic/loader.c \
    8277        generic/getopt.c \
     
    8984        generic/udebug.c \
    9085        generic/vfs/vfs.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 
     86        generic/vfs/canonify.c
    9887
    9988ARCH_SOURCES += \
     
    10493ARCH_OBJECTS := $(addsuffix .o,$(basename $(ARCH_SOURCES)))
    10594OBJECTS := $(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
    11395
    11496.PHONY: all clean depend kerninc
    11597
    116 all: kerninc $(OUTPUT) arch/$(UARCH)/_link.ld
     98all: kerninc libc.a arch/$(UARCH)/_link.ld
    11799
    118100kerninc:
     
    120102        ln -sfn kernel/arch include/arch
    121103        ln -sfn ../arch/$(UARCH)/include include/libarch
    122         ln -sfn ../arch/$(UARCH)/include rtld/include/arch
    123104
    124105-include Makefile.depend
    125106
    126107clean:
    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 \{\} \;
     108        -rm -f include/kernel include/arch include/libarch libc.a arch/$(UARCH)/_link.ld Makefile.depend
     109        find generic/ arch/$(UARCH)/ -name '*.o' -follow -exec rm \{\} \;
    129110
    130111depend: kerninc
    131112        -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
    133113
    134 libc.a: depend $(OBJECTS)
    135         $(AR) rc $@ $(LIBS) $(OBJECTS)
    136 
    137 libc.pic.a: depend $(PIC_OBJECTS)
    138         $(AR) rc $@ $(LIBS) $(PIC_OBJECTS)
     114libc.a: depend $(ARCH_OBJECTS) $(GENERIC_OBJECTS)
     115        $(AR) rc libc.a $(LIBS) $(ARCH_OBJECTS) $(GENERIC_OBJECTS)
    139116
    140117arch/$(UARCH)/_link.ld: arch/$(UARCH)/_link.ld.in
     
    149126%.o: %.c
    150127        $(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

    rb50b5af2 ra71c158  
    6565 */
    6666.global __syscall_sysenter
    67         .type __syscall_sysenter, @function
    68 
    6967__syscall_sysenter:
    7068        pushl %ebx
     
    9189        popl %ebx
    9290        ret
    93 
    94         .size __syscall_sysenter, . - __syscall_sysenter
  • uspace/lib/libc/arch/ia32/src/tls.c

    rb50b5af2 ra71c158  
    3737#include <tls.h>
    3838#include <sys/types.h>
    39 #include <align.h>
    4039
    4140tcb_t * __alloc_tls(void **data, size_t size)
     
    4948}
    5049
    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 
    7850/** @}
    7951 */
  • uspace/lib/libc/arch/mips32/src/tls.c

    rb50b5af2 ra71c158  
    4747}
    4848
    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 
    6949/** @}
    7050 */
  • uspace/lib/libc/arch/ppc32/src/tls.c

    rb50b5af2 ra71c158  
    11/*
    22 * Copyright (c) 2006 Ondrej Palkovsky
    3  * Copyright (c) 2008 Jiri Svoboda
    43 * All rights reserved.
    54 *
     
    3534
    3635#include <tls.h>
    37 #include <align.h>
    3836#include <sys/types.h>
    3937
     
    4846}
    4947
    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 
    8148/** @}
    8249 */
  • uspace/lib/libc/generic/async.c

    rb50b5af2 ra71c158  
    178178
    179179/** Identifier of the incoming connection handled by the current fibril. */
    180 static fibril_local connection_t *FIBRIL_connection;
     180fibril_local connection_t *FIBRIL_connection;
    181181
    182182static void default_client_connection(ipc_callid_t callid, ipc_call_t *call);
  • uspace/lib/libc/generic/libc.c

    rb50b5af2 ra71c158  
    5353#include <loader/pcb.h>
    5454
    55 /* From librtld. */
    56 #include <rtld.h>
    57 #include <string.h>
    58 
    5955extern int main(int argc, char *argv[]);
    6056
     
    7975        char **argv;
    8076       
    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 
    8777        if (__pcb == NULL) {
    8878                argc = 0;
  • uspace/lib/libc/generic/time.c

    rb50b5af2 ra71c158  
    148148                if (res) {
    149149                        printf("Failed to initialize timeofday memarea\n");
    150                         printf("Address was 0x%x\n", (unsigned)mapping);
    151150                        _exit(1);
    152151                }
  • uspace/lib/libc/include/as.h

    rb50b5af2 ra71c158  
    4343extern void *as_area_create(void *address, size_t size, int flags);
    4444extern int as_area_resize(void *address, size_t size, int flags);
    45 int as_area_change_flags(void *address, int flags);
     45extern int as_area_change_flags(void *address, int flags);
    4646extern int as_area_destroy(void *address);
    4747extern void *set_maxheapsize(size_t mhs);
  • uspace/lib/libc/include/loader/pcb.h

    rb50b5af2 ra71c158  
    6969        /** Pointer to ELF dynamic section of the program. */
    7070        void *dynamic;
    71         /** Pointer to dynamic linker state structure (runtime_env_t). */
    72         void *rtld_runtime;
    7371} pcb_t;
    7472
  • uspace/lib/softint/Makefile

    rb50b5af2 ra71c158  
    11#
    22# Copyright (c) 2005 Martin Decky
    3 # Copyright (c) 2008 Jiri Svoboda
    43# All rights reserved.
    54#
     
    3938
    4039CFLAGS += -Iinclude
    41 PIC_CFLAGS := $(CFLAGS) -fPIC -D__PIC__
    4240
    4341## Sources
     
    5149GENERIC_OBJECTS := $(addsuffix .o,$(basename $(GENERIC_SOURCES)))
    5250
    53 OBJECTS := $(GENERIC_OBJECTS)
    54 PIC_OBJECTS := $(addsuffix .pio,$(basename $(OBJECTS)))
    55 
    5651.PHONY: all clean depend
    5752
    58 all: libsoftint.a libsoftint.pic.a
     53all: libsoftint.a
    5954
    6055-include Makefile.depend
    6156
    6257clean:
    63         -rm -f libsoftint.a libsoftint.pic.a Makefile.depend
    64         find generic/ \( -name '*.o' -o -name '*.pio' \) -follow -exec rm \{\} \;
     58        -rm -f libsoftint.a Makefile.depend
     59        find generic/ -name '*.o' -follow -exec rm \{\} \;
    6560
    6661depend:
    6762        -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
    6963
    70 libsoftint.a: depend $(OBJECTS)
    71         $(AR) rc $@ $(OBJECTS)
    72 
    73 libsoftint.pic.a: depend $(PIC_OBJECTS)
    74         $(AR) rc $@ $(PIC_OBJECTS)
     64libsoftint.a: depend $(ARCH_OBJECTS) $(GENERIC_OBJECTS)
     65        $(AR) rc libsoftint.a $(ARCH_OBJECTS) $(GENERIC_OBJECTS)
    7566
    7667%.o: %.S
     
    8273%.o: %.c
    8374        $(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 $@
  • uspace/srv/kbd/Makefile

    rb50b5af2 ra71c158  
    3333SOFTINT_PREFIX = ../../lib/softint
    3434
    35 include $(LIBC_PREFIX)/Makefile.toolchain
    36 include $(LIBC_PREFIX)/Makefile.app
     35include $(LIBC_PREFIX)/Makefile.toolchain
    3736
    3837CFLAGS += -Iinclude
     38
     39LIBS = $(LIBC_PREFIX)/libc.a
    3940
    4041## Sources
     
    168169
    169170$(OUTPUT): $(OBJECTS) $(LIBS)
    170         $(LD) -T $(LD_SCRIPT) $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
     171        $(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
    171172
    172173disasm: $(OUTPUT).disasm
  • uspace/srv/loader/elf_load.c

    rb50b5af2 ra71c158  
    102102 * @return EOK on success or negative error code.
    103103 */
    104 int elf_load_file(char *file_name, size_t so_bias, eld_flags_t flags,
    105     elf_info_t *info)
     104int elf_load_file(char *file_name, size_t so_bias, elf_info_t *info)
    106105{
    107106        elf_ld_t elf;
     
    118117        elf.fd = fd;
    119118        elf.info = info;
    120         elf.flags = flags;
    121119
    122120        rc = elf_load(&elf, so_bias);
     
    125123
    126124        return rc;
     125}
     126
     127/** Run an ELF executable.
     128 *
     129 * Transfers control to the entry point of an ELF executable loaded
     130 * earlier with elf_load_file(). This function does not return.
     131 *
     132 * @param info  Info structure filled earlier by elf_load_file()
     133 */
     134void elf_run(elf_info_t *info, pcb_t *pcb)
     135{
     136        program_run(info->entry, pcb);
     137
     138        /* not reached */
    127139}
    128140
     
    139151        pcb->entry = info->entry;
    140152        pcb->dynamic = info->dynamic;
    141         pcb->rtld_runtime = NULL;
    142153}
    143154
     
    292303                break;
    293304        case PT_INTERP:
    294                 /* Assume silently interp == "/app/dload" */
    295                 elf->info->interp = "/app/dload";
     305                /* Assume silently interp == "/rtld.so" */
     306                elf->info->interp = "/rtld.so";
    296307                break;
    297308        case PT_DYNAMIC:
    298                 /* Record pointer to dynamic section into info structure */
    299                 elf->info->dynamic =
    300                     (void *)((uint8_t *)entry->p_vaddr + elf->bias);
    301                 DPRINTF("dynamic section found at 0x%x\n",
    302                         (uintptr_t)elf->info->dynamic);
    303                 break;
    304         case 0x70000000:
    305                 /* FIXME: MIPS reginfo */
    306                 break;
    307309        case PT_SHLIB:
    308310        case PT_NOTE:
    309 //      case PT_LOPROC:
    310 //      case PT_HIPROC:
     311        case PT_LOPROC:
     312        case PT_HIPROC:
    311313        default:
    312314                DPRINTF("Segment p_type %d unknown.\n", entry->p_type);
     
    378380            AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE);
    379381        if (a == (void *)(-1)) {
    380                 DPRINTF("memory mapping failed (0x%x, %d)\n",
    381                         base+bias, mem_sz);
     382                DPRINTF("Memory mapping failed.\n");
    382383                return EE_MEMORY;
    383384        }
     
    421422        }
    422423
    423         /*
    424          * The caller wants to modify the segments first. He will then
    425          * need to set the right access mode and ensure SMC coherence.
    426          */
    427         if ((elf->flags & ELDF_RW) != 0) return EE_OK;
    428 
    429 //      printf("set area flags to %d\n", flags);
    430424        rc = as_area_change_flags(seg_ptr, flags);
    431425        if (rc != 0) {
     
    464458                break;
    465459        case SHT_DYNAMIC:
     460                /* Record pointer to dynamic section into info structure */
     461                elf->info->dynamic =
     462                    (void *)((uint8_t *)entry->sh_addr + elf->bias);
     463                DPRINTF("Dynamic section found at 0x%x.\n",
     464                        (uintptr_t)elf->info->dynamic);
    466465                break;
    467466        default:
  • uspace/srv/loader/include/elf_load.h

    rb50b5af2 ra71c158  
    4343#include "elf.h"
    4444
    45 typedef enum {
    46         /** Leave all segments in RW access mode. */
    47         ELDF_RW = 1
    48 } eld_flags_t;
    49 
    5045/**
    5146 * Some data extracted from the headers are stored here
     
    7267        uintptr_t bias;
    7368
    74         /** Flags passed to the ELF loader. */
    75         eld_flags_t flags;
    76 
    7769        /** A copy of the ELF file header */
    7870        elf_header_t *header;
     
    8274} elf_ld_t;
    8375
    84 int elf_load_file(char *file_name, size_t so_bias, eld_flags_t flags,
    85     elf_info_t *info);
     76int elf_load_file(char *file_name, size_t so_bias, elf_info_t *info);
     77void elf_run(elf_info_t *info, pcb_t *pcb);
    8678void elf_create_pcb(elf_info_t *info, pcb_t *pcb);
    8779
  • uspace/srv/loader/main.c

    rb50b5af2 ra71c158  
    6666#define DPRINTF(...)
    6767
    68 void program_run(void *entry, pcb_t *pcb);
    69 
    7068/** Pathname of the file that will be loaded */
    7169static char *pathname = NULL;
     
    306304        int rc;
    307305       
    308         rc = elf_load_file(pathname, 0, 0, &prog_info);
     306        rc = elf_load_file(pathname, 0, &prog_info);
    309307        if (rc != EE_OK) {
    310308                DPRINTF("Failed to load executable '%s'.\n", pathname);
     
    328326        }
    329327       
    330         printf("Load ELF interpreter '%s'\n", prog_info.interp);
    331         rc = elf_load_file(prog_info.interp, 0, 0, &interp_info);
     328        rc = elf_load_file(prog_info.interp, 0, &interp_info);
    332329        if (rc != EE_OK) {
    333330                DPRINTF("Failed to load interpreter '%s.'\n",
     
    337334        }
    338335       
    339         printf("Run interpreter.\n");
    340         printf("entry point: 0x%lx\n", interp_info.entry);
    341         printf("pcb address: 0x%lx\n", &pcb);
    342         printf("prog dynamic: 0x%lx\n", prog_info.dynamic);
    343 
    344336        is_dyn_linked = true;
    345337        ipc_answer_0(rid, EOK);
     
    370362               
    371363                ipc_answer_0(rid, EOK);
    372                 program_run(interp_info.entry, &pcb);
     364                elf_run(&interp_info, &pcb);
    373365        } else {
    374366                /* Statically linked program */
    375367                ipc_answer_0(rid, EOK);
    376                 program_run(prog_info.entry, &pcb);
     368                elf_run(&prog_info, &pcb);
    377369        }
    378370       
  • uspace/srv/pci/Makefile

    rb50b5af2 ra71c158  
    3434
    3535include $(LIBC_PREFIX)/Makefile.toolchain
    36 include $(LIBC_PREFIX)/Makefile.app
    3736
    38 LIBS := libpci/libpci.a $(LIBS)
     37
     38LIBS = libpci/libpci.a $(LIBC_PREFIX)/libc.a
    3939
    4040## Sources
     
    6262$(OUTPUT): $(OBJECTS) $(LIBS)
    6363        $(MAKE) -C libpci
    64         $(LD) -T $(LD_SCRIPT) $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
     64        $(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
    6565
    6666disasm:
Note: See TracChangeset for help on using the changeset viewer.