Changes in / [8aa2b3b:b2a081ae] in mainline


Ignore:
Files:
12 added
79 deleted
29 edited

Legend:

Unmodified
Added
Removed
  • HelenOS.config

    r8aa2b3b rb2a081ae  
    528528! [PLATFORM=sparc64&MACHINE=generic] CONFIG_AOUT_ISOFS_B (y)
    529529
    530 % Build shared libraries
    531 ! CONFIG_BUILD_SHARED_LIBS (y/n)
    532 
    533 % Link against shared libraries
    534 ! [CONFIG_BUILD_SHARED_LIBS=y] CONFIG_USE_SHARED_LIBS (n/y)
    535 ! [CONFIG_BUILD_SHARED_LIBS=n] CONFIG_USE_SHARED_LIBS (n)
    536 
    537530% Run devman on startup
    538531! CONFIG_START_DEVMAN (y/n)
  • boot/Makefile

    r8aa2b3b rb2a081ae  
    5555                cp "$$file" "$(DIST_PATH)/srv/" ; \
    5656        done
    57         for file in $(RD_LIBS) ; do \
    58                 cp "$$file" "$(DIST_PATH)/lib/" ; \
    59         done
    6057        for file in $(RD_APPS) ; do \
    6158                cp "$$file" "$(DIST_PATH)/app/" ; \
     
    8683        rm -f $(USPACE_PATH)/dist/srv/*
    8784        rm -rf $(USPACE_PATH)/dist/drv/*
    88         rm -f $(USPACE_PATH)/dist/lib/*
    8985        rm -f $(USPACE_PATH)/dist/app/*
    9086        rm -f $(USPACE_PATH)/dist/cfg/net/*
  • boot/Makefile.common

    r8aa2b3b rb2a081ae  
    118118RD_DRV_CFG =
    119119
    120 RD_LIBS = \
    121         $(USPACE_PATH)/lib/test/libtest.so.0
    122 
    123 ifeq ($(CONFIG_BUILD_SHARED_LIBS), y)
    124         RD_LIBS += $(USPACE_PATH)/lib/c/libc.so.0
    125         RD_LIBS += $(USPACE_PATH)/lib/softint/libsoftint.so.0
    126         RD_APPS += $(USPACE_PATH)/app/dltest/dltest
    127 endif
    128 
    129120RD_APPS_ESSENTIAL = \
    130121        $(USPACE_PATH)/app/bdsh/bdsh \
     
    133124
    134125RD_APPS_NON_ESSENTIAL = \
    135         $(USPACE_PATH)/app/dltest/dltest \
    136         $(USPACE_PATH)/app/dltest2/dltest2 \
    137         $(USPACE_PATH)/app/dload/dload \
    138126        $(USPACE_PATH)/app/edit/edit \
    139127        $(USPACE_PATH)/app/kill/kill \
  • boot/arch/mips32/src/Makefile

    r8aa2b3b rb2a081ae  
    11#
    2 # Copyright (c) 2006 Martin Decky
     2# Copyright (c) 2005 Martin Decky
     3# Copyright (c) 2007 Jakub Jermar
    34# All rights reserved.
    45#
     
    2728#
    2829
    29 include ../../../../version
    30 -include ../../../../Makefile.config
     30include Makefile.common
    3131
    32 ## Toolchain configuration
    33 #
     32.PHONY: all clean
    3433
    35 ifndef CROSS_PREFIX
    36         CROSS_PREFIX = /usr/local
    37 endif
    38 
    39 BFD_ARCH = mips
    40 TARGET = mipsel-linux-gnu
    41 TOOLCHAIN_DIR = $(CROSS_PREFIX)/mipsel/bin
    42 
    43 ifeq ($(MACHINE),lgxemul)
    44         BFD_NAME = elf32-tradlittlemips
    45         BFD = ecoff-littlemips
    46 endif
    47 ifeq ($(MACHINE),bgxemul)
    48         BFD_NAME = elf32-tradbigmips
    49         BFD = ecoff-bigmips
    50         TOOLCHAIN_DIR = $(CROSS_PREFIX)/mips/bin
    51         TARGET = mips-linux-gnu
    52 endif
    53 ifeq ($(MACHINE),msim)
    54         BFD_NAME = elf32-tradlittlemips
    55         BFD = binary
    56 endif
    57 
    58 ifeq ($(COMPILER),gcc_native)
    59         CC = gcc
    60         AS = as
    61         LD = ld
    62         OBJCOPY = objcopy
    63         OBJDUMP = objdump
    64 endif
    65 
    66 ifeq ($(COMPILER),gcc_cross)
    67         CC = $(TOOLCHAIN_DIR)/$(TARGET)-gcc
    68         AS = $(TOOLCHAIN_DIR)/$(TARGET)-as
    69         LD = $(TOOLCHAIN_DIR)/$(TARGET)-ld
    70         OBJCOPY = $(TOOLCHAIN_DIR)/$(TARGET)-objcopy
    71         OBJDUMP = $(TOOLCHAIN_DIR)/$(TARGET)-objdump
    72 endif
    73 
    74 CFLAGS = -DRELEASE=$(RELEASE) -I. -I../../../generic -imacros ../../../../config.h -nostdinc -nostdlib -fno-builtin -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -mno-abicalls -G 0 -fno-zero-initialized-in-bss -mhard-float -mips3 -pipe
    75 
    76 SOURCES = \
    77         main.c \
    78         msim.c \
    79         _components.c \
    80         ../../../generic/printf.c \
    81         ../../../generic/string.c \
    82         asm.S \
    83         boot.S
    84 
    85 COMPONENTS = \
    86         $(KERNELDIR)/kernel.bin \
    87         $(USPACEDIR)/srv/ns/ns \
    88         $(USPACEDIR)/srv/loader/loader \
    89         $(USPACEDIR)/app/init/init \
    90         $(USPACEDIR)/srv/devmap/devmap \
    91         $(USPACEDIR)/srv/bd/rd/rd \
    92         $(USPACEDIR)/srv/vfs/vfs
    93 ifeq ($(RDFMT),tmpfs)
    94         COMPONENTS += $(USPACEDIR)/srv/fs/tmpfs/tmpfs
    95 endif
    96 ifeq ($(RDFMT),fat)
    97         COMPONENTS += $(USPACEDIR)/srv/fs/fat/fat
    98 endif
    99 
    100 RD_SRVS = \
    101         $(USPACEDIR)/srv/fb/fb \
    102         $(USPACEDIR)/srv/kbd/kbd \
    103         $(USPACEDIR)/srv/console/console \
    104         $(USPACEDIR)/srv/fs/devfs/devfs \
    105         $(USPACEDIR)/srv/fs/tmpfs/tmpfs \
    106         $(USPACEDIR)/srv/fs/fat/fat \
    107         $(USPACEDIR)/srv/bd/file_bd/file_bd \
    108         $(USPACEDIR)/srv/bd/gxe_bd/gxe_bd
    109 
    110 RD_APPS = \
    111         $(USPACEDIR)/app/getvc/getvc \
    112         $(USPACEDIR)/app/tetris/tetris \
    113         $(USPACEDIR)/app/tester/tester \
    114         $(USPACEDIR)/app/dload/dload \
    115         $(USPACEDIR)/app/dltest/dltest \
    116         $(USPACEDIR)/app/dltest2/dltest2 \
    117         $(USPACEDIR)/app/trace/trace \
    118         $(USPACEDIR)/app/bdsh/bdsh \
    119         $(USPACEDIR)/app/klog/klog
    120 
    121 RD_LIBS = \
    122         $(USPACEDIR)/lib/libc/shared/libc.so.0 \
    123         $(USPACEDIR)/lib/libtest/libtest.so.0
    124 
    125 OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
    126 COMPONENT_OBJECTS := $(addsuffix .o,$(basename $(notdir $(COMPONENTS))))
    127 
    128 .PHONY: all clean depend
    129 
    130 all: image.boot
    131 
    132 -include Makefile.depend
    133 
    134 image.boot: image.raw
    135         $(OBJCOPY) -O $(BFD) $< $@
    136 
    137 image.raw: depend _components.h _link.ld $(COMPONENT_OBJECTS) initrd.o $(OBJECTS)
    138         $(LD) -no-check-sections -N -T _link.ld -o $@ $(COMPONENT_OBJECTS) initrd.o $(OBJECTS)
    139 
    140 depend:
    141         -makedepend -f - -- $(DEFS) $(CFLAGS) -- $(SOURCES) > Makefile.depend 2> /dev/null
     34all: ../../../../version ../../../../Makefile.common ../../../../Makefile.config ../../../../config.h
     35        -[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
     36        $(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
    14237
    14338clean:
    144         -for file in $(RD_SRVS) ; do \
     39        rm -f $(USPACEDIR)/dist/srv/*
     40        rm -f $(USPACEDIR)/dist/app/*
     41        rm -f $(USPACEDIR)/dist/cfg/net/*
     42
     43        for file in $(RD_SRVS) ; do \
    14544                rm -f $(USPACEDIR)/dist/srv/`basename $$file` ; \
    14645        done
    147         -for file in $(RD_APPS) ; do \
     46        for file in $(RD_APPS) ; do \
    14847                rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
    14948        done
    150         -rm -f _components.h _components.c _link.ld $(COMPONENT_OBJECTS) initrd.o $(OBJECTS) initrd.img image.raw image.boot Makefile.depend
    151 
    152 _components.h _components.c _link.ld $(COMPONENT_OBJECTS) initrd.o: $(COMPONENTS) $(RD_SRVS) $(RD_LIBS) $(RD_APPS) _link.ld.in
    153         for file in $(RD_SRVS) ; do \
    154                 cp $$file $(USPACEDIR)/dist/srv/ ; \
     49        for file in $(NET_CFG) ; do \
     50                rm -f $(USPACEDIR)/dist/cfg/net/`basename $$file` ; \
    15551        done
    156         for lib in $(RD_LIBS) ; do \
    157                 cp $$lib $(USPACEDIR)/dist/lib/ ; \
    158         done
    159         for file in $(RD_APPS) ; do \
    160                 cp $$file $(USPACEDIR)/dist/app/ ; \
    161         done
    162 ifeq ($(RDFMT),tmpfs)
    163         ../../../../tools/mktmpfs.py $(USPACEDIR)/dist/ initrd.fs
    164 endif
    165 ifeq ($(RDFMT),fat)
    166         ../../../../tools/mkfat.py $(USPACEDIR)/dist/ initrd.fs
    167 endif
    168         ../../../../tools/mkhord.py 16384 initrd.fs initrd.img
    169         rm initrd.fs
    170         ../../../tools/pack.py $(OBJCOPY) $(BFD_NAME) $(BFD_ARCH) 16384 "unsigned int" $(COMPONENTS) ./initrd.img
    171 
    172 %.o: %.S
    173         $(CC) $(DEFS) $(CFLAGS) -D__ASM__ -c $< -o $@
    174 
    175 %.o: %.c
    176         $(CC) $(DEFS) $(CFLAGS) -c $< -o $@
     52        rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(RAW) $(COMPS).h $(COMPS).c $(LINK) $(INITRD).img $(INITRD).fs
     53        find . -name '*.o' -follow -exec rm \{\} \;
     54        find . -name '*.co' -follow -exec rm \{\} \;
  • defaults/amd64/Makefile.config

    r8aa2b3b rb2a081ae  
    33
    44# Ramdisk format
    5 RDFMT = tmpfs
     5RDFMT = fat
    66
    77# Compiler
     
    5959CONFIG_VESA_BPP = 16
    6060
    61 # Build shared libraries
    62 CONFIG_BUILD_SHARED_LIBS = n
    63 
    6461# Load disk drivers on startup
    6562CONFIG_START_BD = n
  • defaults/arm32/Makefile.config

    r8aa2b3b rb2a081ae  
    33
    44# Ramdisk format
    5 RDFMT = tmpfs
     5RDFMT = fat
    66
    77# Compiler
     
    3535CONFIG_HID_OUT = generic
    3636
    37 # Build shared libraries
    38 CONFIG_BUILD_SHARED_LIBS = n
    39 
    4037# Load disk drivers on startup
    4138CONFIG_START_BD = n
  • defaults/ia32/Makefile.config

    r8aa2b3b rb2a081ae  
    66
    77# Ramdisk format
    8 RDFMT = tmpfs
     8RDFMT = fat
    99
    1010# Compiler
     
    6565CONFIG_VESA_BPP = 16
    6666
    67 # Build shared libraries
    68 CONFIG_BUILD_SHARED_LIBS = y
    69 
    70 # Link against shared libraries
    71 CONFIG_USE_SHARED_LIBS = y
    72 
    7367# Load disk drivers on startup
    7468CONFIG_START_BD = n
  • defaults/ia64/Makefile.config

    r8aa2b3b rb2a081ae  
    33
    44# Ramdisk format
    5 RDFMT = tmpfs
     5RDFMT = fat
    66
    77# Compiler
     
    4747CONFIG_HID_OUT = generic
    4848
    49 # Build shared libraries
    50 CONFIG_BUILD_SHARED_LIBS = n
    51 
    5249# Load disk drivers on startup
    5350CONFIG_START_BD = n
  • defaults/mips32/Makefile.config

    r8aa2b3b rb2a081ae  
    33
    44# Ramdisk format
    5 RDFMT = tmpfs
     5RDFMT = fat
    66
    77# Compiler
     
    4141CONFIG_HID_OUT = generic
    4242
    43 # Build shared libraries
    44 CONFIG_BUILD_SHARED_LIBS = n
    45 
    4643# Load disk drivers on startup
    4744CONFIG_START_BD = n
  • defaults/ppc32/Makefile.config

    r8aa2b3b rb2a081ae  
    33
    44# Ramdisk format
    5 RDFMT = tmpfs
     5RDFMT = fat
    66
    77# Compiler
     
    4141CONFIG_BAT = y
    4242
    43 # Build shared libraries
    44 CONFIG_BUILD_SHARED_LIBS = n
    45 
    4643# Load disk drivers on startup
    4744CONFIG_START_BD = n
  • defaults/sparc64/Makefile.config

    r8aa2b3b rb2a081ae  
    5656CONFIG_AOUT_ISOFS_B = y
    5757
    58 # Build shared libraries
    59 CONFIG_BUILD_SHARED_LIBS = n
    60 
    6158# Load disk drivers on startup
    6259CONFIG_START_BD = n
  • defaults/special/Makefile.config

    r8aa2b3b rb2a081ae  
    2929CONFIG_TEST = y
    3030
    31 # Build shared libraries
    32 CONFIG_BUILD_SHARED_LIBS = n
    33 
    3431# Load disk drivers on startup
    3532CONFIG_START_BD = n
  • kernel/arch/ia32/include/barrier.h

    r8aa2b3b rb2a081ae  
    5454NO_TRACE static inline void cpuid_serialization(void)
    5555{
    56 #ifndef __IN_SHARED_LIBC__
    5756        asm volatile (
    5857                "xorl %%eax, %%eax\n"
     
    6059                ::: "eax", "ebx", "ecx", "edx", "memory"
    6160        );
    62 #else
    63         /* Must not clobber PIC register ebx */
    64         asm volatile (
    65                 "movl %%ebx, %%esi\n"
    66                 "xorl %%eax, %%eax\n"
    67                 "cpuid\n"
    68                 "movl %%esi, %%ebx\n"
    69                 ::: "eax", "ecx", "edx", "esi", "memory"
    70         );
    71 #endif
    7261}
    7362
  • kernel/generic/include/syscall/syscall.h

    r8aa2b3b rb2a081ae  
    9090        SYS_SYSINFO_GET_DATA,
    9191       
    92         SYS_DEBUG_PUTINT,
    9392        SYS_DEBUG_ENABLE_CONSOLE,
    9493        SYS_DEBUG_DISABLE_CONSOLE,
  • kernel/generic/src/syscall/syscall.c

    r8aa2b3b rb2a081ae  
    5555#include <console/console.h>
    5656#include <udebug/udebug.h>
    57 
    58 /** Print a hex integer into klog */
    59 static sysarg_t sys_debug_putint(sysarg_t i)
    60 {
    61         printf("[task:0x%x]", i);
    62         return 0;
    63 }
    6457
    6558/** Dispatch system call */
     
    187180       
    188181        /* Debug calls */
    189         (syshandler_t) sys_debug_putint,
    190182        (syshandler_t) sys_debug_enable_console,
    191183        (syshandler_t) sys_debug_disable_console
  • uspace/Makefile

    r8aa2b3b rb2a081ae  
    3535DIRS = \
    3636        app/bdsh \
    37         app/dload \
    38         app/dltest2 \
    3937        app/edit \
    4038        app/getterm \
     
    9492        drv/test2
    9593
    96 ## Shared libraries
    97 ifeq ($(CONFIG_BUILD_SHARED_LIBS), y)
    98         DIRS += \
    99                 app/dltest
    100 endif
    101 
    10294## Networking
    10395#
     
    154146        lib/softint \
    155147        lib/softfloat \
    156         lib/test \
    157148        lib/drv \
    158149        lib/packet \
  • uspace/Makefile.common

    r8aa2b3b rb2a081ae  
    7373endif
    7474
    75 ifneq ($(SLIBRARY),)
    76         LARCHIVE = $(LIBRARY).la
    77         LOUTPUT = $(SLIBRARY)
    78         EXTRA_OUTPUT += $(LOUTPUT).disasm
    79         EXTRA_CLEAN += $(LOUTPUT).map $(LOUTPUT).ldisasm \
    80             $(LIBC_PREFIX)/shared/arch/$(UARCH)/_lib.ld
    81 endif
    82 
    8375DEPEND = Makefile.depend
    8476DEPEND_PREV = $(DEPEND).prev
     
    9890LIBNET_PREFIX = $(LIB_PREFIX)/net
    9991
    100 ifeq ($(DYNAMIC_LINKING),y)
    101 BASE_LIBS = $(LIBC_PREFIX)/libc.so.0 $(LIBSOFTINT_PREFIX)/libsoftint.a
    102 LFLAGS = -Bdynamic
    103 LINKER_SCRIPT ?= $(LIBC_PREFIX)/shared/arch/$(UARCH)/_link.ld
    104 else
    10592BASE_LIBS = $(LIBC_PREFIX)/libc.a $(LIBSOFTINT_PREFIX)/libsoftint.a
     93
    10694LINKER_SCRIPT ?= $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld
    107 endif
    10895
    10996ifeq ($(CONFIG_OPTIMIZE_FOR_SIZE),y)
     
    115102.PHONY: all clean
    116103
    117 all: $(VERSION_DEF) $(COMMON_MAKEFILE) $(CONFIG_MAKEFILE) $(CONFIG_HEADER) $(LIBS) $(OUTPUT) $(LOUTPUT) $(EXTRA_OUTPUT)
     104all: $(VERSION_DEF) $(COMMON_MAKEFILE) $(CONFIG_MAKEFILE) $(CONFIG_HEADER) $(LIBS) $(OUTPUT) $(EXTRA_OUTPUT)
    118105        -[ -f $(DEPEND) ] && cp -a $(DEPEND) $(DEPEND_PREV)
    119106
    120107clean:
    121         rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(LARCHIVE) $(LOUTPUT) $(EXTRA_OUTPUT) $(EXTRA_CLEAN)
     108        rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(EXTRA_OUTPUT) $(EXTRA_CLEAN)
    122109        find . -name '*.o' -follow -exec rm \{\} \;
    123         find . -name '*.lo' -follow -exec rm \{\} \;
    124110
    125111GCC_CFLAGS = -I$(LIBC_PREFIX)/include -O$(OPTIMIZATION) -imacros $(CONFIG_HEADER) \
     
    144130        -pipe -g -arch $(CLANG_ARCH) -D__$(ENDIANESS)__
    145131
    146 LIB_CFLAGS = $(CFLAGS) -fPIC -D__IN_SHARED_LIBC__
    147 LIB_LFLAGS = $(LFLAGS) -shared -soname $(LSONAME) --whole-archive
    148 
    149132ifeq ($(CONFIG_DEBUG),y)
    150133        GCC_CFLAGS += -Werror
     
    192175
    193176OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
    194 LOBJECTS := $(addsuffix .lo,$(basename $(SOURCES)))
    195177
    196178ifneq ($(BINARY),)
     
    209191endif
    210192
    211 ifneq ($(SLIBRARY),)
    212 %.disasm: $(LOUTPUT)
    213 ifeq ($(CONFIG_LINE_DEBUG),y)
    214         $(OBJDUMP) -d -S $< > $@
    215 else
    216         $(OBJDUMP) -d $< > $@
    217 endif
    218 
    219 $(LOUTPUT): $(LARCHIVE) $(LIBC_PREFIX)/shared/arch/$(UARCH)/_lib.ld
    220         $(LD) -T $(LIBC_PREFIX)/shared/arch/$(UARCH)/_lib.ld $(LIB_LFLAGS) $(LARCHIVE) -o $@ -Map $(LOUTPUT).map
    221 endif
    222 
    223 $(LIBC_PREFIX)/shared/arch/$(UARCH)/_lib.ld: $(LIBC_PREFIX)/shared/arch/$(UARCH)/_lib.ld.in
    224         $(CC) $(DEFS) $(CFLAGS) -DLIBC_PREFIX=$(LIBC_PREFIX) -E -x c $< | grep -v "^\#" > $@
    225 
    226 $(LIBC_PREFIX)/shared/arch/$(UARCH)/_link.ld: $(LIBC_PREFIX)/shared/arch/$(UARCH)/_link.ld.in
    227         $(CC) $(DEFS) $(CFLAGS) -DLIBC_PREFIX=$(LIBC_PREFIX) -E -x c $< | grep -v "^\#" > $@
    228 
    229193ifneq ($(LIBRARY),)
    230194%.a: $(OBJECTS)
    231195        $(AR) rc $@ $(OBJECTS)
    232 endif
    233 
    234 ifneq ($(SLIBRARY),)
    235 %.la: $(LOBJECTS)
    236         $(AR) rc $@ $(LOBJECTS)
    237196endif
    238197
     
    255214endif
    256215
    257 %.lo: %.S
    258         $(CC) $(DEFS) $(AFLAGS) $(CFLAGS) -D__ASM__ -c $< -o $@
    259 
    260 %.lo: %.s
    261         $(AS) $(AFLAGS) $< -o $@
    262 
    263 %.lo: %.c $(DEPEND)
    264         $(CC) $(DEFS) $(LIB_CFLAGS) -c $< -o $@
    265 ifeq ($(PRECHECK),y)
    266         $(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
    267 endif
    268 
    269216$(DEPEND): $(PRE_DEPEND)
    270217        makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
     
    276223$(OUTPUT): $(OBJECTS)
    277224
    278 $(LARCHIVE): $(LOBJECTS)
  • uspace/lib/c/Makefile

    r8aa2b3b rb2a081ae  
    3434INCLUDE_ARCH = include/arch
    3535INCLUDE_LIBARCH = include/libarch
    36 INCLUDE_RTLDARCH = rtld/include/arch
    3736
    3837COMMON_MAKEFILE = $(ROOT_PATH)/Makefile.common
     
    4241CONFIG_MAKEFILE = $(ROOT_PATH)/Makefile.config
    4342
    44 PRE_DEPEND = $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) $(INCLUDE_RTLDARCH) $(COMMON_HEADER_ARCH)
     43PRE_DEPEND = $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) $(COMMON_HEADER_ARCH)
    4544EXTRA_OUTPUT = $(LINKER_SCRIPT)
    46 EXTRA_CLEAN = $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) $(INCLUDE_RTLDARCH) $(COMMON_HEADER_ARCH) $(LINKER_SCRIPT)
     45EXTRA_CLEAN = $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) $(COMMON_HEADER_ARCH) $(LINKER_SCRIPT)
    4746LIBRARY = libc
    48 SLIBRARY = libc.so.0.0
    49 LSONAME = libc.so.0
    50 
    5147
    5248-include $(COMMON_MAKEFILE)
    5349-include $(CONFIG_MAKEFILE)
    5450-include arch/$(UARCH)/Makefile.inc
    55 -include rtld/arch/$(UARCH)/Makefile.inc
    56 
    57 EXTRA_CFLAGS += -Irtld/include -I../../srv/loader/include
    5851
    5952GENERIC_SOURCES = \
     
    6760        generic/device/hw_res.c \
    6861        generic/device/char_dev.c \
    69         generic/dlfcn.c \
    7062        generic/event.c \
    7163        generic/errno.c \
     
    121113        generic/arg_parse.c \
    122114        generic/sort.c \
    123         generic/stats.c \
    124         rtld/rtld.c \
    125         rtld/elf_load.c \
    126         rtld/dynamic.c \
    127         rtld/module.c \
    128         rtld/symbol.c
     115        generic/stats.c
    129116
    130117SOURCES = \
     
    140127        ln -sfn ../$< $@
    141128
    142 $(INCLUDE_RTLDARCH): rtld/arch/$(UARCH)/include
    143         ln -sfn ../../$< $@
    144 
    145129$(INCLUDE_KERNEL)/arch: ../../../kernel/generic/include/arch $(INCLUDE_KERNEL)
    146130
  • uspace/lib/c/arch/ia32/src/syscall.S

    r8aa2b3b rb2a081ae  
    3232__syscall_fast_func:
    3333        .long __syscall_slow
    34         .size __syscall_fast_func, . - __syscall_fast_func
    3534
    3635.text
     
    7271 */
    7372.global __syscall_fast
    74         .type __syscall_fast, @function
    75 
    7673__syscall_fast:
    7774        pushl %ebx
     
    9895        popl %ebx
    9996        ret
    100 
    101         .size __syscall_fast, . - __syscall_fast
  • uspace/lib/c/arch/ia32/src/tls.c

    r8aa2b3b rb2a081ae  
    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/c/arch/mips32/src/tls.c

    r8aa2b3b rb2a081ae  
    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/c/arch/ppc32/src/tls.c

    r8aa2b3b rb2a081ae  
    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/c/generic/libc.c

    r8aa2b3b rb2a081ae  
    5353#include "private/io.h"
    5454
    55 /* From librtld. */
    56 #include <rtld.h>
    57 //#include <string.h>
    58 
    5955static bool env_setup = false;
    6056
     
    8177        char **argv;
    8278       
    83 #ifdef __IN_SHARED_LIBC__
    84         if (__pcb != NULL && __pcb->rtld_runtime != NULL) {
    85                 runtime_env = (runtime_env_t *) __pcb->rtld_runtime;
    86         }
    87 #endif
    8879        /*
    8980         * Get command line arguments and initialize
  • uspace/lib/c/include/as.h

    r8aa2b3b rb2a081ae  
    5656extern void *as_area_create(void *address, size_t size, int flags);
    5757extern int as_area_resize(void *address, size_t size, int flags);
    58 int as_area_change_flags(void *address, int flags);
     58extern int as_area_change_flags(void *address, int flags);
    5959extern int as_area_destroy(void *address);
    6060extern void *set_maxheapsize(size_t mhs);
  • uspace/lib/c/include/loader/pcb.h

    r8aa2b3b rb2a081ae  
    7272        /** Pointer to ELF dynamic section of the program. */
    7373        void *dynamic;
    74         /** Pointer to dynamic linker state structure (runtime_env_t). */
    75         void *rtld_runtime;
    7674} pcb_t;
    7775
  • uspace/lib/softint/Makefile

    r8aa2b3b rb2a081ae  
    3131EXTRA_CFLAGS = -Iinclude
    3232LIBRARY = libsoftint
    33 SLIBRARY = libsoftint.so.0.0
    34 LSONAME = libsoftint.so.0
    3533
    3634SOURCES = \
  • uspace/srv/loader/elf_load.c

    r8aa2b3b rb2a081ae  
    103103 *
    104104 */
    105 int elf_load_file(const char *file_name, size_t so_bias, eld_flags_t flags,
    106     elf_info_t *info)
     105int elf_load_file(const char *file_name, size_t so_bias, elf_info_t *info)
    107106{
    108107        elf_ld_t elf;
     
    119118        elf.fd = fd;
    120119        elf.info = info;
    121         elf.flags = flags;
    122120
    123121        rc = elf_load(&elf, so_bias);
     
    126124
    127125        return rc;
     126}
     127
     128/** Run an ELF executable.
     129 *
     130 * Transfers control to the entry point of an ELF executable loaded
     131 * earlier with elf_load_file(). This function does not return.
     132 *
     133 * @param info Info structure filled earlier by elf_load_file()
     134 *
     135 */
     136void elf_run(elf_info_t *info, pcb_t *pcb)
     137{
     138        program_run(info->entry, pcb);
     139
     140        /* not reached */
    128141}
    129142
     
    140153        pcb->entry = info->entry;
    141154        pcb->dynamic = info->dynamic;
    142         pcb->rtld_runtime = NULL;
    143155}
    144156
     
    294306                break;
    295307        case PT_INTERP:
    296                 /* Assume silently interp == "/app/dload" */
    297                 elf->info->interp = "/app/dload";
     308                /* Assume silently interp == "/rtld.so" */
     309                elf->info->interp = "/rtld.so";
    298310                break;
    299311        case PT_DYNAMIC:
    300                 /* Record pointer to dynamic section into info structure */
    301                 elf->info->dynamic =
    302                     (void *)((uint8_t *)entry->p_vaddr + elf->bias);
    303                 DPRINTF("dynamic section found at 0x%x\n",
    304                         (uintptr_t)elf->info->dynamic);
    305                 break;
    306         case 0x70000000:
    307                 /* FIXME: MIPS reginfo */
    308                 break;
    309312        case PT_SHLIB:
    310 //      case PT_LOPROC:
    311 //      case PT_HIPROC:
     313        case PT_LOPROC:
     314        case PT_HIPROC:
    312315        default:
    313316                DPRINTF("Segment p_type %d unknown.\n", entry->p_type);
     
    380383            AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE);
    381384        if (a == (void *)(-1)) {
    382                 DPRINTF("memory mapping failed (0x%x, %d)\n",
    383                         base+bias, mem_sz);
     385                DPRINTF("Memory mapping failed.\n");
    384386                return EE_MEMORY;
    385387        }
     
    423425        }
    424426
    425         /*
    426          * The caller wants to modify the segments first. He will then
    427          * need to set the right access mode and ensure SMC coherence.
    428          */
    429         if ((elf->flags & ELDF_RW) != 0) return EE_OK;
    430 
    431 //      printf("set area flags to %d\n", flags);
    432427        rc = as_area_change_flags(seg_ptr, flags);
    433428        if (rc != 0) {
  • uspace/srv/loader/include/elf_load.h

    r8aa2b3b rb2a081ae  
    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(const char *file_name, size_t so_bias, eld_flags_t flags,
    85     elf_info_t *info);
     76int elf_load_file(const 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

    r8aa2b3b rb2a081ae  
    6565#define DPRINTF(...)
    6666
    67 void program_run(void *entry, pcb_t *pcb);
    68 
    6967/** Pathname of the file that will be loaded */
    7068static char *pathname = NULL;
     
    285283        int rc;
    286284       
    287         rc = elf_load_file(pathname, 0, 0, &prog_info);
     285        rc = elf_load_file(pathname, 0, &prog_info);
    288286        if (rc != EE_OK) {
    289287                DPRINTF("Failed to load executable '%s'.\n", pathname);
     
    309307        }
    310308       
    311         printf("Load ELF interpreter '%s'\n", prog_info.interp);
    312         rc = elf_load_file(prog_info.interp, 0, 0, &interp_info);
     309        rc = elf_load_file(prog_info.interp, 0, &interp_info);
    313310        if (rc != EE_OK) {
    314311                DPRINTF("Failed to load interpreter '%s.'\n",
     
    318315        }
    319316       
    320         printf("Run interpreter.\n");
    321         printf("entry point: 0x%lx\n", (unsigned long) interp_info.entry);
    322         printf("pcb address: 0x%lx\n", (unsigned long) &pcb);
    323         printf("prog dynamic: 0x%lx\n", (unsigned long) prog_info.dynamic);
    324 
    325317        is_dyn_linked = true;
    326318        async_answer_0(rid, EOK);
     
    351343               
    352344                async_answer_0(rid, EOK);
    353                 program_run(interp_info.entry, &pcb);
     345                elf_run(&interp_info, &pcb);
    354346        } else {
    355347                /* Statically linked program */
    356348                async_answer_0(rid, EOK);
    357                 program_run(prog_info.entry, &pcb);
     349                elf_run(&prog_info, &pcb);
    358350        }
    359351       
Note: See TracChangeset for help on using the changeset viewer.